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