00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 #ifndef _input_handler_h
00029 #define _input_handler_h
00030 
00031 #include "XMLHandler.h"
00032 #include <xercesc/dom/DOMElement.hpp>
00033 
00034 #include <iostream>
00035 #include <cassert>
00036 #include <string>
00037 #include <stdexcept>
00038 #include <map>
00039 
00040 class ParamWrapper;
00041 class LoadFunctionElement;
00042 
00043 XERCES_CPP_NAMESPACE_USE
00044 using namespace std;
00045 
00046 class InputHandler : public XMLHandler 
00047 {
00048                 
00049         private:
00050                 int     argc;
00051                 char**  argv;
00052                 bool    gotFile;
00053 
00054                 DOMElement      *rootElem, *greenElem, *loadElem, *kernelElem;
00055 
00056                 void readCommandline();
00057                 void initDOM();
00058                 string getAttributeValue(const XMLCh* parentNode, const XMLCh* elementNode, const XMLCh* elementName);
00059                 string getAttributeValueByName(const XMLCh* elementNode, const XMLCh* elementName, const XMLCh* name);
00060                 void initParamsFromDOM(DOMNode *node, multimap<string, ParamWrapper*>);
00061                 void initParamsFromDOMNodeList(DOMNodeList* , map< unsigned int, multimap<string, ParamWrapper*> >);
00062                 bool jobExists(string);
00063                 bool fileExists(string);
00064 
00066                 InputHandler(const InputHandler& x); 
00067                         
00068         public:
00069                 InputHandler(int, char**);      
00070                 ~InputHandler();                
00071 
00072                 void init();
00073                 void initParamsFromDOM();
00074                 
00075                 
00076                 
00077 
00078                 map<string, string> getGreenJobMap();
00079                 string getGreenPlugin(string);
00080                 string getLoadPlugin();
00081                 string getLoadPlugin(string);
00082 
00083                 string getLoadHistoryPlugin(string);
00084 
00085                 string getCrustalDecayPlugin(string);
00086                 string getKernelPlugin();
00087                 string getKernelPlugin(string);
00088                 string getOutputPlugin();
00089                 string getOutputPlugin(string);
00090                 string getFileName(string type);
00091                 string getResultFileName();
00092                 int    getRegion(string direction);
00093                 int    getGridSize();
00094                 unsigned long int getTimeSteps();
00095         unsigned long int getTimeIncrement();
00096                 DOMNode* getExperiment();
00097                 list<string> getPostProcessorNameList();
00098         list<LoadFunctionElement*> getLoadFunctionList();
00099 
00100                 
00101                 
00102                 void setXML(bool b){}
00103                 void setList(bool b){}
00104 };
00105 
00106 #endif // _input_handler_h