diff --git a/src/InputOutput/IHMImpl/IHMInputOutputClass.php b/src/InputOutput/IHMImpl/IHMInputOutputClass.php index c885768..d57e764 100644 --- a/src/InputOutput/IHMImpl/IHMInputOutputClass.php +++ b/src/InputOutput/IHMImpl/IHMInputOutputClass.php @@ -52,6 +52,10 @@ class IHMInputOutputClass implements InputOutputInterface throw new Exception('Params request type '.$input_request->nodeType.' not implemented for this client.'); } break; + case FunctionTypeEnumClass::PARAMSGEN : + $this->inputOutput = new IHMInputOutputParamsGeneratorClass(); + $requestId = "ParamGen"; + break; case FunctionTypeEnumClass::ACTION : $this->inputOutput = new IHMInputOutputParamsPlotClass(); $requestId = str_replace("_","",$input->folderId); @@ -93,4 +97,4 @@ class IHMInputOutputClass implements InputOutputInterface } } -?> \ No newline at end of file +?> diff --git a/src/InputOutput/IHMImpl/Params/GeneratorImpl/IHMInputOutputParamsGeneratorClass.php b/src/InputOutput/IHMImpl/Params/GeneratorImpl/IHMInputOutputParamsGeneratorClass.php new file mode 100644 index 0000000..489634f --- /dev/null +++ b/src/InputOutput/IHMImpl/Params/GeneratorImpl/IHMInputOutputParamsGeneratorClass.php @@ -0,0 +1,44 @@ +<?php + +/** + * @class IHMInputOutputParamsGeneratorClass + * @brief Implementation of IHMInputOutputParamsAbstractClass to treat params generation request + * @details +*/ +class IHMInputOutputParamsGeneratorClass extends IHMInputOutputParamsAbstractClass +{ + /* + * @brief method to unmarshall a params generation request + */ + protected function unmarshallRequest($input) + { + $this->paramsData->setRequestType(ParamsRequestTypeEnumClass::PARAMGEN); + + $this->paramsData->setParamId($input->paramId); + + $paramInfo = $this->paramManager->addExistingParam($input->paramId,$this->paramsData); + + return $this->paramsData; + } + + /* + * @brief method to marshall the result of a download request + */ + protected function marshallResult($data) + { + if (!$data->getSuccess()) + return array( + 'success' => false, + 'message' => $data->getParamId() . " : " . $data->getLastErrorMessage()); + + if ($data->getErrorCode() != 0) + return array( + 'success' => false, + 'message' => $data->getParamId() . " : " . 'Error detected during parameter compilation'); + + return array( + 'success' => true + ); + } +} +?> \ No newline at end of file diff --git a/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php b/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php index 09b207b..ff84705 100644 --- a/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php +++ b/src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php @@ -195,4 +195,4 @@ abstract class IHMInputOutputParamsAbstractClass implements InputOutputInterface abstract protected function marshallResult($data); } -?> \ No newline at end of file +?> diff --git a/src/Request/ParamsRequestImpl/ParamsRequestClass.php b/src/Request/ParamsRequestImpl/ParamsRequestClass.php index f396a31..ff98bca 100644 --- a/src/Request/ParamsRequestImpl/ParamsRequestClass.php +++ b/src/Request/ParamsRequestImpl/ParamsRequestClass.php @@ -15,7 +15,16 @@ class ParamsRequestClass extends ProcessRequestClass return false; $this->requestData->setType(ProcessTypeEnumClass::RUN); - $this->requestData->setCmd(KernelConfigClass::getKernelBinPath()."amdaXMLRequestorTool ".$this->getRequestFilePath()); + + 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()) @@ -39,29 +48,32 @@ class ParamsRequestClass extends ProcessRequestClass } } - //create request file - $doc = new DOMDocument("1.0", "UTF-8"); - $doc->preserveWhiteSpace = false; - $doc->formatOutput = true; - - if (!$xmlNode = $this->requestData->getRequestNode()->toXMLNode($doc)) + if ($this->requestData->getRequestType() == ParamsRequestTypeEnumClass::XMLREQUEST) { - $this->requestData->setLastErrorMessage('Cannot create params request XML file'); - return false; - } + //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); + $doc->appendChild($xmlNode); - if (!$doc->schemaValidate(KernelConfigClass::getXSDRequestFilePath())) - { - $this->requestData->setLastErrorMessage('Params request XML file not valid'); - return false; - } + 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; + if (!$doc->save($this->getRequestFilePath())) + { + $this->requestData->setLastErrorMessage('Cannot save params request XML file'); + return false; + } } //create config files diff --git a/src/Request/ParamsRequestImpl/ParamsRequestDataClass.php b/src/Request/ParamsRequestImpl/ParamsRequestDataClass.php index 437956e..56384e8 100644 --- a/src/Request/ParamsRequestImpl/ParamsRequestDataClass.php +++ b/src/Request/ParamsRequestImpl/ParamsRequestDataClass.php @@ -1,17 +1,31 @@ <?php /** + * @class ParamsRequestTypeEnumClass + * @brief Enumerate for request type + * @details + */ +abstract class ParamsRequestTypeEnumClass +{ + const UNKNOWN = ""; + const XMLREQUEST = "XMLREQUEST"; + const PARAMGEN = "PARAMGEN"; +} + +/** * @class ParamsRequestDataClass * @brief Data for a params request. Inherits from ProcessRequestDataClass * @details */ class ParamsRequestDataClass extends ProcessRequestDataClass { + private $requestType = ParamsRequestTypeEnumClass::XMLREQUEST; private $requestNode = null; private $compilationPath = ""; private $waitingResults = array(); private $processParamsToCreate = array(); private $paramsToCopy = array(); + private $paramId = ""; function __construct() { @@ -29,6 +43,16 @@ class ParamsRequestDataClass extends ProcessRequestDataClass $this->compilationPath = $compilationPath; } + public function getRequestType() + { + return $this->requestType; + } + + public function setRequestType($requestType) + { + $this->requestType = $requestType; + } + public function getRequestNode() { return $this->requestNode; @@ -44,6 +68,16 @@ class ParamsRequestDataClass extends ProcessRequestDataClass $this->waitingResults[$key] = $result; } + public function getParamId() + { + return $this->paramId; + } + + public function setParamId($paramId) + { + $this->paramId = $paramId; + } + public function getParamsToCopy() { return $this->paramsToCopy; diff --git a/src/RequestManager.php b/src/RequestManager.php index 3f9b8ca..34778ea 100644 --- a/src/RequestManager.php +++ b/src/RequestManager.php @@ -11,6 +11,7 @@ function amdaintegration_autoload($class_name) 'InputOutput/IHMImpl/Params/DataMiningImpl', 'InputOutput/IHMImpl/Params/DownloadImpl', 'InputOutput/IHMImpl/Params/PlotImpl', + 'InputOutput/IHMImpl/Params/GeneratorImpl', 'InputOutput/IHMImpl/Process', 'InputOutput/IHMImpl/Tools', 'InputOutput/TestImpl', @@ -45,6 +46,7 @@ spl_autoload_register('amdaintegration_autoload'); abstract class FunctionTypeEnumClass { const PARAMS = "params"; + const PARAMSGEN = "params_gen"; const ACTION = "action"; const PROCESSDELETE = "process_delete"; const PROCESSRUNNINGINFO = "process_running_info"; @@ -106,6 +108,7 @@ Class RequestManagerClass switch ($function) { case FunctionTypeEnumClass::PARAMS : + case FunctionTypeEnumClass::PARAMSGEN : case FunctionTypeEnumClass::ACTION : return new ParamsRequestClass($userHost); case FunctionTypeEnumClass::PROCESSDELETE : -- libgit2 0.21.2