requestData)) return false; $this->requestData->setType(ProcessTypeEnumClass::RUN); switch ($this->requestData->getRequestType()) { case ParamsRequestTypeEnumClass::XMLREQUEST : $this->requestData->setCmd(KernelConfigClass::getKernelBinPath()."amdaXMLRequestorTool ".$this->getRequestFilePath()); 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) { //create XML request file $doc = new DOMDocument("1.0", "UTF-8"); $doc->preserveWhiteSpace = false; $doc->formatOutput = true; if (!$xmlNode = $this->requestData->getRequestNode()->toXMLNode($doc)) { $this->requestData->setLastErrorMessage('Cannot create params request XML file'); return false; } $doc->appendChild($xmlNode); if (!$doc->schemaValidate(KernelConfigClass::getXSDRequestFilePath())) { $this->requestData->setLastErrorMessage('Params request XML file not valid'); return false; } if (!$doc->save($this->getRequestFilePath())) { $this->requestData->setLastErrorMessage('Cannot save params request XML file'); 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() { return $this->requestData->getWorkingPath()."request.xml"; } } ?>