Commit 3493f1966f2fb0bc0b5038529fab9bb89fd68636

Authored by Benjamin Renard
1 parent 286f7924

Add request to generate compilation of derived parameters

src/InputOutput/IHMImpl/IHMInputOutputClass.php
... ... @@ -52,6 +52,10 @@ class IHMInputOutputClass implements InputOutputInterface
52 52 throw new Exception('Params request type '.$input_request->nodeType.' not implemented for this client.');
53 53 }
54 54 break;
  55 + case FunctionTypeEnumClass::PARAMSGEN :
  56 + $this->inputOutput = new IHMInputOutputParamsGeneratorClass();
  57 + $requestId = "ParamGen";
  58 + break;
55 59 case FunctionTypeEnumClass::ACTION :
56 60 $this->inputOutput = new IHMInputOutputParamsPlotClass();
57 61 $requestId = str_replace("_","",$input->folderId);
... ... @@ -93,4 +97,4 @@ class IHMInputOutputClass implements InputOutputInterface
93 97 }
94 98 }
95 99  
96   -?>
97 100 \ No newline at end of file
  101 +?>
... ...
src/InputOutput/IHMImpl/Params/GeneratorImpl/IHMInputOutputParamsGeneratorClass.php 0 → 100644
... ... @@ -0,0 +1,44 @@
  1 +<?php
  2 +
  3 +/**
  4 + * @class IHMInputOutputParamsGeneratorClass
  5 + * @brief Implementation of IHMInputOutputParamsAbstractClass to treat params generation request
  6 + * @details
  7 +*/
  8 +class IHMInputOutputParamsGeneratorClass extends IHMInputOutputParamsAbstractClass
  9 +{
  10 + /*
  11 + * @brief method to unmarshall a params generation request
  12 + */
  13 + protected function unmarshallRequest($input)
  14 + {
  15 + $this->paramsData->setRequestType(ParamsRequestTypeEnumClass::PARAMGEN);
  16 +
  17 + $this->paramsData->setParamId($input->paramId);
  18 +
  19 + $paramInfo = $this->paramManager->addExistingParam($input->paramId,$this->paramsData);
  20 +
  21 + return $this->paramsData;
  22 + }
  23 +
  24 + /*
  25 + * @brief method to marshall the result of a download request
  26 + */
  27 + protected function marshallResult($data)
  28 + {
  29 + if (!$data->getSuccess())
  30 + return array(
  31 + 'success' => false,
  32 + 'message' => $data->getParamId() . " : " . $data->getLastErrorMessage());
  33 +
  34 + if ($data->getErrorCode() != 0)
  35 + return array(
  36 + 'success' => false,
  37 + 'message' => $data->getParamId() . " : " . 'Error detected during parameter compilation');
  38 +
  39 + return array(
  40 + 'success' => true
  41 + );
  42 + }
  43 +}
  44 +?>
0 45 \ No newline at end of file
... ...
src/InputOutput/IHMImpl/Params/IHMInputOutputParamsAbstractClass.php
... ... @@ -195,4 +195,4 @@ abstract class IHMInputOutputParamsAbstractClass implements InputOutputInterface
195 195 abstract protected function marshallResult($data);
196 196 }
197 197  
198   -?>
199 198 \ No newline at end of file
  199 +?>
... ...
src/Request/ParamsRequestImpl/ParamsRequestClass.php
... ... @@ -15,7 +15,16 @@ class ParamsRequestClass extends ProcessRequestClass
15 15 return false;
16 16  
17 17 $this->requestData->setType(ProcessTypeEnumClass::RUN);
18   - $this->requestData->setCmd(KernelConfigClass::getKernelBinPath()."amdaXMLRequestorTool ".$this->getRequestFilePath());
  18 +
  19 + switch ($this->requestData->getRequestType())
  20 + {
  21 + case ParamsRequestTypeEnumClass::XMLREQUEST :
  22 + $this->requestData->setCmd(KernelConfigClass::getKernelBinPath()."amdaXMLRequestorTool ".$this->getRequestFilePath());
  23 + break;
  24 + case ParamsRequestTypeEnumClass::PARAMGEN :
  25 + $this->requestData->setCmd(KernelConfigClass::getKernelBinPath()."amdaParameterGenerator -p ".$this->requestData->getParamId());
  26 + break;
  27 + }
19 28 $this->requestData->setEnvVars(KernelConfigClass::getExecEnvVarArray());
20 29  
21 30 if (!parent::init())
... ... @@ -39,29 +48,32 @@ class ParamsRequestClass extends ProcessRequestClass
39 48 }
40 49 }
41 50  
42   - //create request file
43   - $doc = new DOMDocument("1.0", "UTF-8");
44   - $doc->preserveWhiteSpace = false;
45   - $doc->formatOutput = true;
46   -
47   - if (!$xmlNode = $this->requestData->getRequestNode()->toXMLNode($doc))
  51 + if ($this->requestData->getRequestType() == ParamsRequestTypeEnumClass::XMLREQUEST)
48 52 {
49   - $this->requestData->setLastErrorMessage('Cannot create params request XML file');
50   - return false;
51   - }
  53 + //create XML request file
  54 + $doc = new DOMDocument("1.0", "UTF-8");
  55 + $doc->preserveWhiteSpace = false;
  56 + $doc->formatOutput = true;
  57 +
  58 + if (!$xmlNode = $this->requestData->getRequestNode()->toXMLNode($doc))
  59 + {
  60 + $this->requestData->setLastErrorMessage('Cannot create params request XML file');
  61 + return false;
  62 + }
52 63  
53   - $doc->appendChild($xmlNode);
  64 + $doc->appendChild($xmlNode);
54 65  
55   - if (!$doc->schemaValidate(KernelConfigClass::getXSDRequestFilePath()))
56   - {
57   - $this->requestData->setLastErrorMessage('Params request XML file not valid');
58   - return false;
59   - }
  66 + if (!$doc->schemaValidate(KernelConfigClass::getXSDRequestFilePath()))
  67 + {
  68 + $this->requestData->setLastErrorMessage('Params request XML file not valid');
  69 + return false;
  70 + }
60 71  
61   - if (!$doc->save($this->getRequestFilePath()))
62   - {
63   - $this->requestData->setLastErrorMessage('Cannot save params request XML file');
64   - return false;
  72 + if (!$doc->save($this->getRequestFilePath()))
  73 + {
  74 + $this->requestData->setLastErrorMessage('Cannot save params request XML file');
  75 + return false;
  76 + }
65 77 }
66 78  
67 79 //create config files
... ...
src/Request/ParamsRequestImpl/ParamsRequestDataClass.php
1 1 <?php
2 2  
3 3 /**
  4 + * @class ParamsRequestTypeEnumClass
  5 + * @brief Enumerate for request type
  6 + * @details
  7 + */
  8 +abstract class ParamsRequestTypeEnumClass
  9 +{
  10 + const UNKNOWN = "";
  11 + const XMLREQUEST = "XMLREQUEST";
  12 + const PARAMGEN = "PARAMGEN";
  13 +}
  14 +
  15 +/**
4 16 * @class ParamsRequestDataClass
5 17 * @brief Data for a params request. Inherits from ProcessRequestDataClass
6 18 * @details
7 19 */
8 20 class ParamsRequestDataClass extends ProcessRequestDataClass
9 21 {
  22 + private $requestType = ParamsRequestTypeEnumClass::XMLREQUEST;
10 23 private $requestNode = null;
11 24 private $compilationPath = "";
12 25 private $waitingResults = array();
13 26 private $processParamsToCreate = array();
14 27 private $paramsToCopy = array();
  28 + private $paramId = "";
15 29  
16 30 function __construct()
17 31 {
... ... @@ -29,6 +43,16 @@ class ParamsRequestDataClass extends ProcessRequestDataClass
29 43 $this->compilationPath = $compilationPath;
30 44 }
31 45  
  46 + public function getRequestType()
  47 + {
  48 + return $this->requestType;
  49 + }
  50 +
  51 + public function setRequestType($requestType)
  52 + {
  53 + $this->requestType = $requestType;
  54 + }
  55 +
32 56 public function getRequestNode()
33 57 {
34 58 return $this->requestNode;
... ... @@ -44,6 +68,16 @@ class ParamsRequestDataClass extends ProcessRequestDataClass
44 68 $this->waitingResults[$key] = $result;
45 69 }
46 70  
  71 + public function getParamId()
  72 + {
  73 + return $this->paramId;
  74 + }
  75 +
  76 + public function setParamId($paramId)
  77 + {
  78 + $this->paramId = $paramId;
  79 + }
  80 +
47 81 public function getParamsToCopy()
48 82 {
49 83 return $this->paramsToCopy;
... ...
src/RequestManager.php
... ... @@ -11,6 +11,7 @@ function amdaintegration_autoload($class_name)
11 11 'InputOutput/IHMImpl/Params/DataMiningImpl',
12 12 'InputOutput/IHMImpl/Params/DownloadImpl',
13 13 'InputOutput/IHMImpl/Params/PlotImpl',
  14 + 'InputOutput/IHMImpl/Params/GeneratorImpl',
14 15 'InputOutput/IHMImpl/Process',
15 16 'InputOutput/IHMImpl/Tools',
16 17 'InputOutput/TestImpl',
... ... @@ -45,6 +46,7 @@ spl_autoload_register(&#39;amdaintegration_autoload&#39;);
45 46 abstract class FunctionTypeEnumClass
46 47 {
47 48 const PARAMS = "params";
  49 + const PARAMSGEN = "params_gen";
48 50 const ACTION = "action";
49 51 const PROCESSDELETE = "process_delete";
50 52 const PROCESSRUNNINGINFO = "process_running_info";
... ... @@ -106,6 +108,7 @@ Class RequestManagerClass
106 108 switch ($function)
107 109 {
108 110 case FunctionTypeEnumClass::PARAMS :
  111 + case FunctionTypeEnumClass::PARAMSGEN :
109 112 case FunctionTypeEnumClass::ACTION :
110 113 return new ParamsRequestClass($userHost);
111 114 case FunctionTypeEnumClass::PROCESSDELETE :
... ...