diff --git a/project/metsparser.cpp b/project/metsparser.cpp index 6b6d50a..99ab592 100644 --- a/project/metsparser.cpp +++ b/project/metsparser.cpp @@ -35,6 +35,8 @@ class StateParserRootamdSecState : public StateParserMetsRootState{ virtual StateParserState* getNext(const char* const name); }; +/** This parser handles the root amdSec element. +*/ class StateParseramdSecState : public StateParserRootamdSecState{ virtual void startElement (const char* const name, const xercesc::Attributes &atts ); virtual void endElement (const char* const name); @@ -79,13 +81,16 @@ class StateEmptyCheck : public StateParserScanResolution{ }; }; - +/** This parser handles the root amdSec element. +*/ void StateParseramdSecState::startElement (const char* const name, const xercesc::Attributes &atts ){ const char *val = getAttributeValue("ID", atts); if (val!=0) { CTX.amdsec.amdSecId = val; } + + if ( CTX.flagMix ) { CTX.mandatoryField.insert("scannerManufacturer"); CTX.mandatoryField.insert("scannerModelName"); @@ -245,32 +250,31 @@ class StateParsermodStateTitleInfoInventory:public StateParsermodState{ public: StateParsermodStateTitleInfoInventory(){}; - StateParserState* getNext(const char* const name){ - static std::map map; - static StateParserState* root = this; - - StateParserState* ret=root; - - static struct _onlyOnes { - _onlyOnes(std::map& map){ - //static int i = 0; - //std::cerr << "Only Ones :"<< ++i << std::endl; - map["title"] = new StateParsermodStateInventory("title"); - map["nonSort"] = new StateTitleState(" "); - map["subTitle"] = new StateParsermodStateInventory("subTitle"); - map["partNumber"] = new StateParsermodStateInventory("partNumber"); - } - } onlyOnes (map); + StateParserState* getNext(const char* const name) { + static std::map map; + static StateParserState* root = this; - if (CTX.inventory.isActif()){ - std::map::iterator it = map.find(name); - if ( it != map.end()) ret = (*it).second; - }; + StateParserState* ret=root; + + static struct _onlyOnes { + _onlyOnes(std::map& map){ + //static int i = 0; + //std::cerr << "Only Ones :"<< ++i << std::endl; + map["title"] = new StateParsermodStateInventory("title"); + map["nonSort"] = new StateTitleState(" "); + map["subTitle"] = new StateParsermodStateInventory("subTitle"); + map["partNumber"] = new StateParsermodStateInventory("partNumber"); + } + } onlyOnes (map); - return ret; + if (CTX.inventory.isActif()){ + std::map::iterator it = map.find(name); + if ( it != map.end()) ret = (*it).second; + }; + return ret; -}; + }; };