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 isXML;
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
00065 InputHandler(const InputHandler& x);
00066
00067 public:
00068 InputHandler(int, char**);
00069 ~InputHandler();
00070
00071 void init();
00072 void initParamsFromDOM();
00073
00074
00075
00076
00077 map<string, string> getGreenJobMap();
00078 string getGreenPlugin(string);
00079 string getLoadPlugin();
00080 string getLoadPlugin(string);
00081
00082 string getLoadHistoryPlugin(string);
00083
00084 string getCrustalDecayPlugin(string);
00085 string getKernelPlugin();
00086 string getKernelPlugin(string);
00087 string getOutputPlugin();
00088 string getOutputPlugin(string);
00089 string getFileName(string type);
00090 string getResultFileName();
00091 int getRegion(string direction);
00092 int getGridSize();
00093 unsigned long int getTimeSteps();
00094 unsigned long int getTimeIncrement();
00095 DOMNode* getExperiment();
00096 list<string> getPostProcessorNameList();
00097 list<LoadFunctionElement*> getLoadFunctionList();
00098
00099
00100
00101 void setXML(bool b){}
00102 void setList(bool b){}
00103 };
00104
00105 #endif // _input_handler_h