def ParseXMLNode(self, rootNode): """ Generate Problem Manager data from xml tree node. """ # remove "Problem" branch if present if(HasChild(rootNode,"Problem")): root = GetChild(rootNode,"Problem") # load parameters not set from command line # done here to prevent recursion theParameterManager = ParameterManager() if(HasChild(rootNode,"Parameters")): parameterNode = GetChild(rootNode,"Parameters") for child in GetChildren(parameterNode): name = GetAttributeString(child,"name") if(not theParameterManager.HasParameter(name) ): paramString = GetAttributeString(child,"value") theParameterManager.SetParameter(name,paramString) print "param: ", name, " value:",paramString # create functions before other classes (after UnitManager & Parameter Manager) theFunctionManager = FunctionManager() if(HasChild(rootNode,"Functions")): functionNode = GetChild(rootNode,"Functions") theFunctionManager.ParseXMLNode(functionNode,self) # Mine data if(HasChild(rootNode,"MineData")): mineDataNode = GetChild(rootNode,"MineData") self.theMineDataManager.ParseXMLNode(mineDataNode) # Output - eventually will make into a manager if(HasChild(rootNode,"Output")): outputNode = GetChild(rootNode,"Output") self.outputPrefix = GetAttributeFileString(outputNode,"prefix") self.outputType = GetAttributeStringOrDefault(outputNode,"type","") self.recordRange = GetAttributeValueOrDefault(outputNode,"recordRange",False) # Regional calculation - optional if(HasChild(rootNode,"RegionalCalculation")): regionalCalculationNode = GetChild(rootNode,"RegionalCalculation") self.theRegionalCalculationManager.ParseXMLNode(regionalCalculationNode)
def ParseXMLNode(self, rootNode): """ Generate Problem Manager data from xml tree node. """ # remove "Problem" branch if present if(HasChild(rootNode,"Problem")): root = GetChild(rootNode,"Problem") # load parameters not set from command line # done here to prevent recursion theParameterManager = ParameterManager() if(HasChild(rootNode,"Parameters")): parameterNode = GetChild(rootNode,"Parameters") for child in GetChildren(parameterNode): name = GetAttributeString(child,"name") if(not theParameterManager.HasParameter(name) ): paramString = GetAttributeString(child,"value") theParameterManager.SetParameter(name,paramString) print("param: ", name, " value:",paramString) # create functions before other classes (after UnitManager & Parameter Manager) theFunctionManager = FunctionManager() if(HasChild(rootNode,"Functions")): functionNode = GetChild(rootNode,"Functions") theFunctionManager.ParseXMLNode(functionNode,self) # Mine data if(HasChild(rootNode,"MineData")): mineDataNode = GetChild(rootNode,"MineData") self.theMineDataManager.ParseXMLNode(mineDataNode) # Processing data if(HasChild(rootNode,"Processing")): processingNode = GetChild(rootNode,"Processing") self.theMineDataManager.theProcessingSystem.ParseXMLNode(processingNode) # Hydrogen data if(HasChild(rootNode,"HydrogenData")): hydrogenDataNode = GetChild(rootNode,"HydrogenData") self.theHydrogenDataManager.ParseXMLNode(hydrogenDataNode) # Output - eventually will make into a manager if(HasChild(rootNode,"Output")): outputNode = GetChild(rootNode,"Output") self.outputPrefix = GetAttributeFileString(outputNode,"prefix") self.outputType = GetAttributeStringOrDefault(outputNode,"type","") self.recordRange = GetAttributeValueOrDefault(outputNode,"recordRange",False) # Regional calculation - optional - eventually will make into a solver if(HasChild(rootNode,"RegionalCalculation")): regionalCalculationNode = GetChild(rootNode,"RegionalCalculation") self.theRegionalCalculationManager.ParseXMLNode(regionalCalculationNode) # Solver manager (after UnitManager & Parameter Manager & Function Manager) if(HasChild(rootNode,"Solvers")): solversNode = GetChild(rootNode,"Solvers") theSolverManager = SolverManager() theSolverManager.ParseXMLNode(self,solversNode) # Create actions after other classes (after UnitManager & Parameter & Solver Manager) self.theActionManager = ActionManager() if(HasChild(rootNode,"Actions")): actionNode = GetChild(rootNode,"Actions") self.theActionManager.ParseXMLNode(actionNode,self) else: # Add actions for backwards compatibility # A) If regional manager present - run regional calculation # B) Otherwise add single site calculation # This will be depreciated (need to issue warning) if(self.theRegionalCalculationManager.type): self.theActionManager.actions.append( RegionalCalculationAction() ) else: self.theActionManager.actions.append( SingleSiteEvaluationAction() )