Skip to content

Commit

Permalink
Read publisher and printer from mets and prepare yearNumber and issue…
Browse files Browse the repository at this point in the history
…Number
  • Loading branch information
Bruno De Bel authored and Bruno De Bel committed Feb 8, 2018
1 parent fd4285d commit 32a674b
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 1 deletion.
5 changes: 5 additions & 0 deletions project/inventory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ void inventoryMapping::setCurrentInventoryValue(std::string field, std::string v
if ( field.compare("subtitle")==0 ) currentInventory->subtitle=value;
if ( field.compare("barcode")==0 ) currentInventory->barcode=value;
if ( field.compare("dateIssued")==0 ) currentInventory->formaldate=value;

if ( field.compare("publisher")==0 ) currentInventory->publisher=value;
if ( field.compare("printer")==0 ) currentInventory->printer=value;
if ( field.compare("yearnumber")==0 ) currentInventory->yearnumber=value;
if ( field.compare("issuenumber")==0 ) currentInventory->issuenumber=value;

if ( field.compare("author")==0 ) currentInventory->author=value;

Expand Down
4 changes: 4 additions & 0 deletions project/inventory.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ class inventory{
std::string paperid;
std::string barcode;
std::string issuenumber;
std::string yearnumber;
std::string callnumber;
std::string printer;
std::string publisher;
std::string formaldate;
std::string type;
std::string pages;
Expand Down
49 changes: 48 additions & 1 deletion project/metsparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ class StateDoNothingState : public StateParserMetsRootState{
};

class StateParsermodStateInventory:public StateParsermodState{
private:
protected:
std::string value;
public:
StateParsermodStateInventory(std::string _value):value(_value){};
Expand Down Expand Up @@ -275,6 +275,52 @@ class StateParsermodStateTitleInfoInventory:public StateParsermodState{

};

class StateParsermodStateInventory2:public StateParsermodStateInventory{
private:
std::string value2;

public:
StateParsermodStateInventory2(std::string value,std::string value2):StateParsermodStateInventory(value){
this->value2=value2;
};

virtual void startElement (const char* const name, const xercesc::Attributes &atts ){
CTX.addStringData.clear();
const char *val = getAttributeValue("displayLabel", atts);

if (val != 0 && strcmp(val, "manufacturer")==0)
{
this->value = value2;
}
};

StateParserState* getNext(const char* const name){
static std::map<string,StateParserMetsRootState*> map;
static StateParserState* root=new StateDoNothingState();;

StateParserState* ret=root;

static struct _onlyOnes {
_onlyOnes(std::map<string,StateParserMetsRootState*>& map){
//static int i = 0;
//std::cerr << "Only Ones :"<< ++i << std::endl;

map["publisher"]= new StateTitleState("");
}
} onlyOnes (map);

if (CTX.inventory.isActif()){
std::map<string,StateParserMetsRootState*>::iterator it = map.find(name);
if ( it != map.end()) ret = (*it).second;
};

return ret;


};

};

class StateParsermodStateInventoryMarc:public StateParsermodState{
private:
std::string value;
Expand All @@ -301,6 +347,7 @@ StateParserState* StateParsermodState::getNext(const char* const name){
map["recordIdentifier"]= new StateParsermodStateInventory("recordIdentifier");
map["titleInfo"]= new StateParsermodStateTitleInfoInventory();
map["identifier"]= new StateParsermodStateInventory("identifier");
map["originalInfo"]= new StateParsermodStateInventory2("publisher","printer");
map["languageTerm"]=new StateParsermodStateInventory("languageTerm");
map["dateIssued"]= new StateParsermodStateInventory("dateIssued");
map["author"]= new StateParsermodStateInventory("author");
Expand Down

0 comments on commit 32a674b

Please sign in to comment.