requestData)) return false; if ($this->requestData->getType(ProcessTypeEnumClass::KILL)) return true; $this->requestData->setType(ProcessTypeEnumClass::RUN); switch ($this->requestData->getRequestType()) { case ParamsRequestTypeEnumClass::XMLREQUEST : $cmd = ""; foreach ($this->requestData->getRequestNodes() as $requestNode) { if ($cmd != "") $cmd .= " && "; $cmd .= KernelConfigClass::getKernelBinPath()."amdaXMLRequestorTool ".$this->getRequestFilePath($requestNode->getRealIndex()); } $this->requestData->setCmd($cmd); break; case ParamsRequestTypeEnumClass::PARAMGEN : $this->requestData->setCmd(KernelConfigClass::getKernelBinPath()."amdaParameterGenerator -p ".$this->requestData->getParamId()); break; } $this->requestData->setEnvVars(KernelConfigClass::getExecEnvVarArray()); if (!parent::init()) return false; $this->requestData->setSuccess(false); $this->requestData->setLastErrorMessage('Cannot init params request'); if ($this->requestData->getCompilationPath() == '') { $this->requestData->setLastErrorMessage('Compilation path for params request not defined'); return false; } if (!is_dir($this->requestData->getCompilationPath())) { if (!mkdir($this->requestData->getCompilationPath(),0777)) { $this->requestData->setLastErrorMessage('Cannot create compilation path for params request'); return false; } } if ($this->requestData->getRequestType() == ParamsRequestTypeEnumClass::XMLREQUEST) { foreach ($this->requestData->getRequestNodes() as $requestNode) { //create XML request file $doc = new DOMDocument("1.0", "UTF-8"); $doc->preserveWhiteSpace = false; $doc->formatOutput = true; if (!$xmlNode = $requestNode->toXMLNode($doc)) { $this->requestData->setLastErrorMessage('Cannot create params request XML file for request '.$requestNode->getRealIndex()); return false; } $doc->appendChild($xmlNode); if (!$doc->save($this->getRequestFilePath($requestNode->getRealIndex()))) { $this->requestData->setLastErrorMessage('Cannot save params request XML file for request '.$requestNode->getRealIndex()); return false; } if (!$doc->schemaValidate(KernelConfigClass::getXSDRequestFilePath())) { $this->requestData->setLastErrorMessage('Params request XML file not valid for request '.$requestNode->getRealIndex()); return false; } } } //create config files KernelConfigClass::write($this->requestData->getWorkingPath(), $this->requestData->getCompilationPath(), $this->requestData->getLocalBasePath()); //copy parameters files foreach ($this->requestData->getParamsToCopy() as $key => $value) { if (!file_exists($value)) { $this->requestData->setLastErrorMessage('Cannot find param definition file for '.$key); return false; } $destinationFile = KernelConfigClass::getRequestParamsPath($this->requestData->getWorkingPath()).$key.".xml"; if (!copy($value,$destinationFile)) { $this->requestData->setLastErrorMessage('Cannot copy param definition file for '.$key); return false; } touch($destinationFile, filemtime($value)); } //create processed params files foreach ($this->requestData->getProcessParamsToCreate() as $key => $value) { $doc = new DOMDocument("1.0", "UTF-8"); $doc->preserveWhiteSpace = false; $doc->formatOutput = true; if (!$xmlNode = $value["param"]->toXMLNode($doc)) { $this->requestData->setLastErrorMessage('Cannot create params XML file for '.$key); return false; } $doc->appendChild($xmlNode); /*if (!$doc->schemaValidate(KernelConfigClass::getXSDParameterFilePath())) { $this->requestData->setLastErrorMessage('Params XML file not valid for '.$key); return false; }*/ $destinationFile = KernelConfigClass::getRequestParamsPath($this->requestData->getWorkingPath()).$key.".xml"; if (!$doc->save($destinationFile)) { $this->requestData->setLastErrorMessage('Cannot save params XML file for '.$key); return false; } touch($destinationFile, $value["dateModif"]); } //create local params files foreach ($this->requestData->getLocalParamsToCreate() as $key => $value) { $doc = new DOMDocument("1.0", "UTF-8"); $doc->preserveWhiteSpace = false; $doc->formatOutput = true; if (!$xmlNode = $value["param"]->toXMLNode($doc)) { $this->requestData->setLastErrorMessage('Cannot create params XML file for '.$key); return false; } $doc->appendChild($xmlNode); $destinationFile = KernelConfigClass::getRequestParamsPath($this->requestData->getWorkingPath()).$key.".xml"; if (!$doc->save($destinationFile)) { $this->requestData->setLastErrorMessage('Cannot save params XML file for '.$key); return false; } touch($destinationFile, $value["dateModif"]); } return true; } /* * @brief Run a params request */ public function run() { return parent::run(); } /* * @brief Get the request file path for AMDA_Kernel */ private function getRequestFilePath($requestIndex) { return $this->requestData->getWorkingPath()."request_".$requestIndex.".xml"; } } ?>