Commit eb14afd2d09bbdf31af0e80231805b88e6c38181
Exists in
master
and in
56 other branches
Merge branch 'master' of https://gitlab.irap.omp.eu/CDPP/AMDA_Integration
Showing
20 changed files
with
837 additions
and
142 deletions
Show diff stats
config/plotConfig.xml deleted
@@ -1,60 +0,0 @@ | @@ -1,60 +0,0 @@ | ||
1 | -<?xml version="1.0" encoding="UTF-8"?> | ||
2 | -<root> | ||
3 | - <default> | ||
4 | - <page dimension="ISO A4" orientation="landscape" mode="color" dpi="90"> | ||
5 | - <font name="sans-serif" size="8" /> | ||
6 | - <margin x="5" y="5" /> <!-- in mm --> | ||
7 | - </page> | ||
8 | - <panel resolution="3000" backgroundColor="[255,255,255]"> <!-- charSizeUnits defines space to set all around plot area --> | ||
9 | - <title position="top" align="center" /> | ||
10 | - <timeAxis id="timeAxis" format="dd/mm/yy" reverse="false" color="[0,0,0]" position="bottom" thickness="1"> | ||
11 | - <legend text="Time, UT" /> | ||
12 | - </timeAxis> | ||
13 | - <epochAxis id="epochAxis" format="dd/mm/yy" reverse="false" color="[0,0,0]" position="bottom" thickness="1"> | ||
14 | - <legend text="Relative Time" /> | ||
15 | - </epochAxis> | ||
16 | - <colorAxis id="colorAxis" scale="linear" color="[0,0,0]" reverse="false" position="right" /> | ||
17 | - <xAxis scale="linear" reverse="false" color="[0,0,0]" position="bottom" thickness="1" /> | ||
18 | - <yAxis scale="linear" reverse="false" color="[0,0,0]" position="left" thickness="1" /> | ||
19 | - <timePlot xAxis="timeAxis" zAxis="colorAxis"> | ||
20 | - <line type="line" style="plain" width="1" /> | ||
21 | - <symbol type="no" size="4" /> | ||
22 | - </timePlot> | ||
23 | - <epochPlot xAxis="epochAxis" zAxis="colorAxis"> | ||
24 | - <line type="line" style="plain" width="1" /> | ||
25 | - <symbol type="no" size="4" color="[0,0,255]" /> | ||
26 | - </epochPlot> | ||
27 | - <xyPlot zAxis="colorAxis"> | ||
28 | - <line type="no" style="plain" width="1" /> | ||
29 | - <symbol type="dot" size="4" /> | ||
30 | - <resampling type="auto"/> | ||
31 | - <timeTick step="0" number="0" minor="0" color="[0,0,0]"> | ||
32 | - <font name="sans-serif" size="5" style="upright" weight="medium" /> | ||
33 | - <firstSymbol type="triangle" size="5" color="[120,0,0]" /> | ||
34 | - <symbol type="circle" size="5" color="[120,120,0]" /> | ||
35 | - </timeTick> | ||
36 | - </xyPlot> | ||
37 | - <instantPlot zAxis="colorAxis"> | ||
38 | - <line type="no" style="plain" color="[255,0,0]" width="1" /> | ||
39 | - <symbol type="dot" size="4" color="[0,0,255]" /> | ||
40 | - </instantPlot> | ||
41 | - </panel> | ||
42 | - </default> | ||
43 | - <colormap path="plplot/"> | ||
44 | - <grayscale default="0"> <!-- default is map index used for auto line color generation --> | ||
45 | - <file index="0">cmap0_black_on_white.pal</file> | ||
46 | - <file index="1">cmap1_gray.pal</file> | ||
47 | - </grayscale> | ||
48 | - <color default="0"> | ||
49 | - <file index="0">cmap0_default.pal</file> | ||
50 | - <file index="1">cmap1_default.pal</file> | ||
51 | - <file index="2">cmap0_test.pal</file> | ||
52 | - </color> | ||
53 | - <coloraxis default="0"> | ||
54 | - <file index="0">cmap1_default.pal</file> | ||
55 | - <file index="1">cmap1_blue_red.pal</file> | ||
56 | - <file index="2">cmap1_blue_yellow.pal</file> | ||
57 | - <file index="3">cmap1_gray.pal</file> | ||
58 | - </coloraxis> | ||
59 | - </colormap> | ||
60 | -</root> |
src/InputOutput/IHMImpl/Params/PlotImpl/IHMInputOutputParamsPlotClass.php
@@ -387,7 +387,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -387,7 +387,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
387 | //Panel background color | 387 | //Panel background color |
388 | if (($panelData->{'panel-background-color'} != 'none') && ($panelData->{'panel-background-color'} != '')) | 388 | if (($panelData->{'panel-background-color'} != 'none') && ($panelData->{'panel-background-color'} != '')) |
389 | $panelNode->setBackgroundColor($this->hexColor2KernelColor($panelData->{'panel-background-color'})); | 389 | $panelNode->setBackgroundColor($this->hexColor2KernelColor($panelData->{'panel-background-color'})); |
390 | - | 390 | + |
391 | //Panel font | 391 | //Panel font |
392 | $this->unmarshallFont($panelData, 'panel-font', $panelNode->getFont()); | 392 | $this->unmarshallFont($panelData, 'panel-font', $panelNode->getFont()); |
393 | 393 | ||
@@ -679,8 +679,15 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -679,8 +679,15 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
679 | $drawingEltIndex = 0; | 679 | $drawingEltIndex = 0; |
680 | foreach ($paramsData as $paramData) | 680 | foreach ($paramsData as $paramData) |
681 | { | 681 | { |
682 | + $isTTCat = ($paramData->{'param-type'} == 'ttcat'); | ||
683 | + | ||
682 | //Param | 684 | //Param |
683 | - $paramInfo = $this->paramManager->addExistingParam($paramData->{'paramid'}, $this->paramsData, isset($paramData->{'template_args'}) ? $paramData->{'template_args'} : NULL); | 685 | + if (!$isTTCat) { |
686 | + $paramInfo = $this->paramManager->addExistingParam($paramData->{'paramid'}, $this->paramsData, isset($paramData->{'template_args'}) ? $paramData->{'template_args'} : NULL); | ||
687 | + } | ||
688 | + else { | ||
689 | + $paramInfo = $this->paramManager->addTTCatParam($paramData->{'paramid'}, $this->paramsData); | ||
690 | + } | ||
684 | 691 | ||
685 | $paramInfo['indexes'] = array(); | 692 | $paramInfo['indexes'] = array(); |
686 | 693 | ||
@@ -730,7 +737,11 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -730,7 +737,11 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
730 | case 'ispectro' : | 737 | case 'ispectro' : |
731 | $paramNode = $plotNode->getParams()->getParamById($paramInfo['id']); | 738 | $paramNode = $plotNode->getParams()->getParamById($paramInfo['id']); |
732 | $this->unmarshallInstantSpectro($paramData->{'param-drawing-object'}, $plotNode, $paramNode, $paramInfo['indexes']); | 739 | $this->unmarshallInstantSpectro($paramData->{'param-drawing-object'}, $plotNode, $paramNode, $paramInfo['indexes']); |
733 | - break; | 740 | + break; |
741 | + case 'intervals' : | ||
742 | + $paramNode = $plotNode->getParams()->getParamById($paramInfo['id']); | ||
743 | + $this->unmarshallIntervals($paramData->{'param-drawing-object'}, $paramNode); | ||
744 | + break; | ||
734 | default : | 745 | default : |
735 | throw new Exception('Drawing type not implemented.'); | 746 | throw new Exception('Drawing type not implemented.'); |
736 | } | 747 | } |
@@ -784,6 +795,8 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -784,6 +795,8 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
784 | { | 795 | { |
785 | $serieNode = $paramNode->addYSerie($paramData->{'param-drawing-object'}->{'serie-yaxis'}, -1, $xId, $colorSerieId, $paramData->{'param-drawing-object'}->{'serie-value-min'}, $paramData->{'param-drawing-object'}->{'serie-value-max'}); | 796 | $serieNode = $paramNode->addYSerie($paramData->{'param-drawing-object'}->{'serie-yaxis'}, -1, $xId, $colorSerieId, $paramData->{'param-drawing-object'}->{'serie-value-min'}, $paramData->{'param-drawing-object'}->{'serie-value-max'}); |
786 | $serieNode->setId($paramData->{'id'}); | 797 | $serieNode->setId($paramData->{'id'}); |
798 | + if (!empty($paramData->{'param-drawing-object'}->{'serie-resolution'})) | ||
799 | + $serieNode->setResolution($paramData->{'param-drawing-object'}->{'serie-resolution'}); | ||
787 | $serieNodes[] = $serieNode; | 800 | $serieNodes[] = $serieNode; |
788 | } | 801 | } |
789 | foreach ($indexes as $index) | 802 | foreach ($indexes as $index) |
@@ -791,6 +804,8 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -791,6 +804,8 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
791 | $serieNode = $paramNode->addYSerie($paramData->{'param-drawing-object'}->{'serie-yaxis'}, $index, $xId, $colorSerieId, $paramData->{'param-drawing-object'}->{'serie-value-min'}, $paramData->{'param-drawing-object'}->{'serie-value-max'}); | 804 | $serieNode = $paramNode->addYSerie($paramData->{'param-drawing-object'}->{'serie-yaxis'}, $index, $xId, $colorSerieId, $paramData->{'param-drawing-object'}->{'serie-value-min'}, $paramData->{'param-drawing-object'}->{'serie-value-max'}); |
792 | if (count($indexes) == 1) | 805 | if (count($indexes) == 1) |
793 | $serieNode->setId($paramData->{'id'}); | 806 | $serieNode->setId($paramData->{'id'}); |
807 | + if (!empty($paramData->{'param-drawing-object'}->{'serie-resolution'})) | ||
808 | + $serieNode->setResolution($paramData->{'param-drawing-object'}->{'serie-resolution'}); | ||
794 | $serieNodes[] = $serieNode; | 809 | $serieNodes[] = $serieNode; |
795 | } | 810 | } |
796 | } | 811 | } |
@@ -1002,7 +1017,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -1002,7 +1017,7 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
1002 | 1017 | ||
1003 | protected function unmarshallSpectro($paramDrawingData, $plotNode, $paramNode, $indexes) | 1018 | protected function unmarshallSpectro($paramDrawingData, $plotNode, $paramNode, $indexes) |
1004 | { | 1019 | { |
1005 | - $spectroNode = $paramNode->addSpectro($paramDrawingData->{'spectro-yaxis'}, count($indexes) > 0 ? $indexes[0] : NULL, $paramDrawingData->{'spectro-value-min'}, $paramDrawingData->{'spectro-value-max'}, isset($paramDrawingData->{'spectro-log0-as-min'}) ? $paramDrawingData->{'spectro-log0-as-min'} : false); | 1020 | + $spectroNode = $paramNode->addSpectro($paramDrawingData->{'spectro-yaxis'}, empty($paramDrawingData->{'spectro-resolution'}) ? NULL : $paramDrawingData->{'spectro-resolution'}, count($indexes) > 0 ? $indexes[0] : NULL, $paramDrawingData->{'spectro-value-min'}, $paramDrawingData->{'spectro-value-max'}, isset($paramDrawingData->{'spectro-log0-as-min'}) ? $paramDrawingData->{'spectro-log0-as-min'} : false); |
1006 | } | 1021 | } |
1007 | 1022 | ||
1008 | protected function unmarshallInstantSpectro($paramDrawingData, $plotNode, $paramNode, $indexes) | 1023 | protected function unmarshallInstantSpectro($paramDrawingData, $plotNode, $paramNode, $indexes) |
@@ -1018,6 +1033,11 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -1018,6 +1033,11 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
1018 | foreach ($indexes as $index) | 1033 | foreach ($indexes as $index) |
1019 | $paramNode->addStatusBar($index); | 1034 | $paramNode->addStatusBar($index); |
1020 | } | 1035 | } |
1036 | + | ||
1037 | + protected function unmarshallIntervals($paramDrawingData, $paramNode) | ||
1038 | + { | ||
1039 | + $paramNode->addIntervals(); | ||
1040 | + } | ||
1021 | 1041 | ||
1022 | protected function unmarshallTickBar($paramDrawingData, $paramNode, $indexes) | 1042 | protected function unmarshallTickBar($paramDrawingData, $paramNode, $indexes) |
1023 | { | 1043 | { |
@@ -1483,9 +1503,10 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | @@ -1483,9 +1503,10 @@ class IHMInputOutputParamsPlotClass extends IHMInputOutputParamsAbstractClass | ||
1483 | 'success' => true, | 1503 | 'success' => true, |
1484 | 'killed' => true); | 1504 | 'killed' => true); |
1485 | default : | 1505 | default : |
1506 | + $errorMsg = $data->getErrorMsg(); | ||
1486 | return array( | 1507 | return array( |
1487 | 'success' => false, | 1508 | 'success' => false, |
1488 | - 'message' => 'Request processing error'); | 1509 | + 'message' => 'Request processing error'.(!empty($errorMsg) ? "<br>(".$errorMsg.")" : "")); |
1489 | } | 1510 | } |
1490 | } | 1511 | } |
1491 | 1512 |
src/InputOutput/IHMImpl/TimeTables/IHMInputOutputTTClass.php
@@ -23,6 +23,10 @@ class IHMInputOutputTTClass implements InputOutputInterface | @@ -23,6 +23,10 @@ class IHMInputOutputTTClass implements InputOutputInterface | ||
23 | { | 23 | { |
24 | if (isset($this->processDatas)) | 24 | if (isset($this->processDatas)) |
25 | unset($this->processDatas); | 25 | unset($this->processDatas); |
26 | + | ||
27 | + $sendToSamp = isset($input->sendToSamp) && $input->sendToSamp; | ||
28 | + $compression = !$sendToSamp && ($input->compression !== 'none'); | ||
29 | + $format = $sendToSamp ? 'vot' : $input->fileformat; | ||
26 | 30 | ||
27 | $final = ""; | 31 | $final = ""; |
28 | 32 | ||
@@ -35,15 +39,17 @@ class IHMInputOutputTTClass implements InputOutputInterface | @@ -35,15 +39,17 @@ class IHMInputOutputTTClass implements InputOutputInterface | ||
35 | { | 39 | { |
36 | //create a list of data to treat | 40 | //create a list of data to treat |
37 | $processData = new TTRequestDataClass(); | 41 | $processData = new TTRequestDataClass(); |
38 | - if (strpos($tt->id,"sharedtimeTable_") === 0) { | ||
39 | - //Shared TimeTable | ||
40 | - $result = IHMSharedObjectsClass::getPath("timeTable", $tt->id); | 42 | + |
43 | + if (strpos($tt->id,"sharedtimeTable_") === 0 || strpos($tt->id,"sharedcatalog_") === 0) { | ||
44 | + //Shared TimeTable /Catalog | ||
45 | + $objectType = strpos($tt->id,"timeTable") != 0 ? "timeTable" : "catalog"; | ||
46 | + $result = IHMSharedObjectsClass::getPath($objectType, $tt->id); | ||
41 | if (!$result['success']) | 47 | if (!$result['success']) |
42 | - throw new Exception('Shared TimeTable '.$tt->name.' not found'); | 48 | + throw new Exception('Shared '.$objectType.' '.$tt->name.' not found'); |
43 | $ttName = $result['path']; | 49 | $ttName = $result['path']; |
44 | } | 50 | } |
45 | else { | 51 | else { |
46 | - //User TimeTable | 52 | + //User TimeTable / Catalog |
47 | $ttName = IHMConfigClass::getUserTTPath().$tt->id.'.xml'; | 53 | $ttName = IHMConfigClass::getUserTTPath().$tt->id.'.xml'; |
48 | } | 54 | } |
49 | if (!file_exists($ttName)) | 55 | if (!file_exists($ttName)) |
@@ -52,7 +58,7 @@ class IHMInputOutputTTClass implements InputOutputInterface | @@ -52,7 +58,7 @@ class IHMInputOutputTTClass implements InputOutputInterface | ||
52 | $processData->setInputFileFormat(TTRequestFileFormatEnum::INTERNAL); | 58 | $processData->setInputFileFormat(TTRequestFileFormatEnum::INTERNAL); |
53 | $processData->setOutputDir(IHMConfigClass::getDownloadTmpPath()); | 59 | $processData->setOutputDir(IHMConfigClass::getDownloadTmpPath()); |
54 | 60 | ||
55 | - switch ($input->fileformat) { | 61 | + switch ($format) { |
56 | case 'vot' : | 62 | case 'vot' : |
57 | $processData->setOutputFileFormat(TTRequestFileFormatEnum::VOTABLE); | 63 | $processData->setOutputFileFormat(TTRequestFileFormatEnum::VOTABLE); |
58 | $outputName = $tt->name.'.xml'; | 64 | $outputName = $tt->name.'.xml'; |
@@ -67,6 +73,7 @@ class IHMInputOutputTTClass implements InputOutputInterface | @@ -67,6 +73,7 @@ class IHMInputOutputTTClass implements InputOutputInterface | ||
67 | $final .= " ".$outputName; | 73 | $final .= " ".$outputName; |
68 | $processData->setType($function); | 74 | $processData->setType($function); |
69 | $processData->setCmd("ttConversion"); | 75 | $processData->setCmd("ttConversion"); |
76 | + $processData->setSendToSamp($sendToSamp); | ||
70 | 77 | ||
71 | $this->processDatas[] = $processData; | 78 | $this->processDatas[] = $processData; |
72 | } | 79 | } |
@@ -74,7 +81,7 @@ class IHMInputOutputTTClass implements InputOutputInterface | @@ -74,7 +81,7 @@ class IHMInputOutputTTClass implements InputOutputInterface | ||
74 | $this->postProcessTT = new PostProcessTTClass(); | 81 | $this->postProcessTT = new PostProcessTTClass(); |
75 | $this->postProcessTT->setOutputDirAlias($this->processDatas[0]->getOutputDir()); | 82 | $this->postProcessTT->setOutputDirAlias($this->processDatas[0]->getOutputDir()); |
76 | 83 | ||
77 | - if ($input->compression !== 'none') { | 84 | + if ($compression) { |
78 | $this->postProcessTT->compression = true; | 85 | $this->postProcessTT->compression = true; |
79 | $archive = "Timetable_archive_".date('Ymd_Hi'); | 86 | $archive = "Timetable_archive_".date('Ymd_Hi'); |
80 | switch ($input->compression) { | 87 | switch ($input->compression) { |
@@ -125,6 +132,14 @@ class IHMInputOutputTTClass implements InputOutputInterface | @@ -125,6 +132,14 @@ class IHMInputOutputTTClass implements InputOutputInterface | ||
125 | 132 | ||
126 | 133 | ||
127 | } | 134 | } |
135 | + else if ($data[0]->getSendToSamp()) { | ||
136 | + $donwload = array(); | ||
137 | + foreach ($data as $d) { | ||
138 | + $donwload[] = $this->postProcessTT->getOutputDirAlias().$d->getOutputFileName(); | ||
139 | + } | ||
140 | + $result = array('success'=>$data[0]->getSuccess(), 'sendToSamp' => TRUE, | ||
141 | + 'download' => $donwload); | ||
142 | + } | ||
128 | else { | 143 | else { |
129 | $result = array('success'=>$data[0]->getSuccess(), | 144 | $result = array('success'=>$data[0]->getSuccess(), |
130 | 'download' => $this->postProcessTT->getOutputDirAlias().$data[0]->getOutputFileName()); | 145 | 'download' => $this->postProcessTT->getOutputDirAlias().$data[0]->getOutputFileName()); |
src/InputOutput/IHMImpl/Tools/IHMExpressionParserClass.php
@@ -85,6 +85,8 @@ class IHMExpressionParserClass | @@ -85,6 +85,8 @@ class IHMExpressionParserClass | ||
85 | "2/abs(1+dst)" => array("expression" => "2/(abs(1+\$dst))", "params" => array(array("paramid" => "dst"))), | 85 | "2/abs(1+dst)" => array("expression" => "2/(abs(1+\$dst))", "params" => array(array("paramid" => "dst"))), |
86 | "cross(vect_1,vect_2)" => array("expression" => "(cross(\$vect_1,\$vect_2))", "params" => array(array("paramid" => "vect_1"), array("paramid" => "vect_2"))), | 86 | "cross(vect_1,vect_2)" => array("expression" => "(cross(\$vect_1,\$vect_2))", "params" => array(array("paramid" => "vect_1"), array("paramid" => "vect_2"))), |
87 | "cross(cross(vect_1,vect_2),vect_3)" => array("expression" => "(cross((cross(\$vect_1,\$vect_2)),\$vect_3))","params" => array(array("paramid" => "vect_1"), array("paramid" => "vect_2"), array("paramid" => "vect_3"))), | 87 | "cross(cross(vect_1,vect_2),vect_3)" => array("expression" => "(cross((cross(\$vect_1,\$vect_2)),\$vect_3))","params" => array(array("paramid" => "vect_1"), array("paramid" => "vect_2"), array("paramid" => "vect_3"))), |
88 | + "c1_hia_pad(0,0)/c1_hia_pad(0,1)" => array ("expression" => "\$c1_hia_pad[0][0]/\$c1_hia_pad[0][1]", "params" => array(array("paramid" => "c1_hia_pad"))), | ||
89 | + "cass_caps_elssec4(indexes[0,10])" => array("expression" => "\$sum_into_table_indexes_cass_caps_elssec4_0_0_10", "params" => array(array("paramid" => "sum_into_table_indexes", "fullparamid" => "sum_into_table_indexes_cass_caps_elssec4_0_0_10", "template_args" => array("paramid"=>"cass_caps_elssec4","relateddim"=>0,"min"=>"0","max"=>"10")))), | ||
88 | ); | 90 | ); |
89 | 91 | ||
90 | //init constants, aliases and functions for test | 92 | //init constants, aliases and functions for test |
@@ -143,8 +145,8 @@ class IHMExpressionParserClass | @@ -143,8 +145,8 @@ class IHMExpressionParserClass | ||
143 | //echo "Source expression : ".$expression.PHP_EOL; | 145 | //echo "Source expression : ".$expression.PHP_EOL; |
144 | //clean expression and replace constants and aliases by associated value | 146 | //clean expression and replace constants and aliases by associated value |
145 | $this->clean($expression); | 147 | $this->clean($expression); |
146 | - $this->replaceConstants($expression); | ||
147 | - $this->replaceAliases($expression); | 148 | + $this->replaceConstants($expression); |
149 | + $this->replaceAliases($expression); | ||
148 | $this->clean($expression); | 150 | $this->clean($expression); |
149 | 151 | ||
150 | //explode expression | 152 | //explode expression |
@@ -274,13 +276,12 @@ class IHMExpressionParserClass | @@ -274,13 +276,12 @@ class IHMExpressionParserClass | ||
274 | $this->aliasesArray = array(); | 276 | $this->aliasesArray = array(); |
275 | 277 | ||
276 | $aliases_ = $dom->getElementsByTagName(self::$aliasNode); | 278 | $aliases_ = $dom->getElementsByTagName(self::$aliasNode); |
277 | - for ($i = 1; $i < $aliases_->length; $i++) | ||
278 | - $this->aliasesArray[self::$alias_tag.$aliases_->item($i)->getAttribute(self::$aliasNameAtt)] = $aliases_->item($i)->nodeValue; | 279 | + for ($i = 0; $i < $aliases_->length; $i++) |
280 | + $this->aliasesArray[self::$aliasTag.$aliases_->item($i)->getAttribute(self::$aliasNameAtt)] = $aliases_->item($i)->getAttribute('xml:id'); | ||
279 | } | 281 | } |
280 | 282 | ||
281 | //replace | 283 | //replace |
282 | $expression = strtr($expression, $this->aliasesArray); | 284 | $expression = strtr($expression, $this->aliasesArray); |
283 | - | ||
284 | //be sure that all aliases are replaced | 285 | //be sure that all aliases are replaced |
285 | if ($this->isAliasDetected($expression)) | 286 | if ($this->isAliasDetected($expression)) |
286 | throw new Exception('Cannot replace some aliases : '.$expression); | 287 | throw new Exception('Cannot replace some aliases : '.$expression); |
@@ -344,11 +345,11 @@ class IHMExpressionParserClass | @@ -344,11 +345,11 @@ class IHMExpressionParserClass | ||
344 | } | 345 | } |
345 | 346 | ||
346 | /* | 347 | /* |
347 | - * @brief detect if the element is "range" | 348 | + * @brief detect if the element is "range" or "indexes" |
348 | */ | 349 | */ |
349 | - private function isRange($element) | 350 | + private function isRangeOrIndexes($element) |
350 | { | 351 | { |
351 | - return ($element == "range"); | 352 | + return (($element == "range") || ($element == "indexes")); |
352 | } | 353 | } |
353 | 354 | ||
354 | /* | 355 | /* |
@@ -583,7 +584,7 @@ class IHMExpressionParserClass | @@ -583,7 +584,7 @@ class IHMExpressionParserClass | ||
583 | !$this->isDecimal($element) && | 584 | !$this->isDecimal($element) && |
584 | !$this->isOperator($element) && | 585 | !$this->isOperator($element) && |
585 | !$this->isFunction($element) && | 586 | !$this->isFunction($element) && |
586 | - !$this->isRange($element) && | 587 | + !$this->isRangeOrIndexes($element) && |
587 | ($element != ",") && ($element != ";") && ($element != "(")); | 588 | ($element != ",") && ($element != ";") && ($element != "(")); |
588 | } | 589 | } |
589 | 590 | ||
@@ -605,16 +606,20 @@ class IHMExpressionParserClass | @@ -605,16 +606,20 @@ class IHMExpressionParserClass | ||
605 | /* | 606 | /* |
606 | * @brief detect if the element is a range for a parameter | 607 | * @brief detect if the element is a range for a parameter |
607 | */ | 608 | */ |
608 | - private function isParameterRange($tree, $i) | 609 | + private function isParameterRangeOrIndexes($tree, $i, &$isIndexes) |
609 | { | 610 | { |
610 | $paramId = ""; | 611 | $paramId = ""; |
612 | + $isIndexes = FALSE; | ||
611 | if ($i <= 0) | 613 | if ($i <= 0) |
612 | return false; | 614 | return false; |
613 | if (!$this->isParameter($tree[$i-1])) | 615 | if (!$this->isParameter($tree[$i-1])) |
614 | return false; | 616 | return false; |
615 | - return (is_array($tree[$i]) && | 617 | + $result = (is_array($tree[$i]) && |
616 | (count($tree[$i] == 1)) && | 618 | (count($tree[$i] == 1)) && |
617 | - $this->isRange($tree[$i][0])); | 619 | + $this->isRangeOrIndexes($tree[$i][0])); |
620 | + if ($result) | ||
621 | + $isIndexes = ($tree[$i][0] == "indexes"); | ||
622 | + return $result; | ||
618 | } | 623 | } |
619 | 624 | ||
620 | /* | 625 | /* |
@@ -633,23 +638,25 @@ class IHMExpressionParserClass | @@ -633,23 +638,25 @@ class IHMExpressionParserClass | ||
633 | */ | 638 | */ |
634 | private function addParameterComponentInParameterArray($paramId, $component, &$params) | 639 | private function addParameterComponentInParameterArray($paramId, $component, &$params) |
635 | { | 640 | { |
636 | - foreach ($params as &$param) | ||
637 | - if ($param["id"] == $paramId) | ||
638 | - { | ||
639 | - array_push($param["indexes"],$component); | ||
640 | - return; | 641 | + foreach ($params as &$param) { |
642 | + if ($param["id"] == $paramId) | ||
643 | + { | ||
644 | + array_push($param["indexes"],$component); | ||
645 | + return; | ||
646 | + } | ||
641 | } | 647 | } |
642 | } | 648 | } |
643 | 649 | ||
644 | /* | 650 | /* |
645 | * @brief add a parameter range | 651 | * @brief add a parameter range |
646 | */ | 652 | */ |
647 | - private function addParameterRangeInParameterArray($paramId, $range, &$params) | 653 | + private function addParameterRangeOrIndexesInParameterArray($paramId, $range, $isIndexes, &$params) |
648 | { | 654 | { |
649 | $sum_parameter_id = ""; | 655 | $sum_parameter_id = ""; |
650 | if ((count($range) == 2) && (count($range[1]) == 3) && ($this->isInteger($range[1][0])) && ($this->isInteger($range[1][2])) & ($range[1][1] == ",")) { | 656 | if ((count($range) == 2) && (count($range[1]) == 3) && ($this->isInteger($range[1][0])) && ($this->isInteger($range[1][2])) & ($range[1][1] == ",")) { |
651 | - $sum_parameter_id = "sum_into_table_range_".$paramId."_0_".$range[1][0]."_".$range[1][2]; | ||
652 | - $params[] = array("id" => "sum_into_table_range", | 657 | + $sum_param = $isIndexes ? "sum_into_table_indexes" : "sum_into_table_range"; |
658 | + $sum_parameter_id = $sum_param."_".$paramId."_0_".$range[1][0]."_".$range[1][2]; | ||
659 | + $params[] = array("id" => $sum_param, | ||
653 | "fullparamid" => $sum_parameter_id, | 660 | "fullparamid" => $sum_parameter_id, |
654 | "indexes" => array(), | 661 | "indexes" => array(), |
655 | "calib_infos" => array(), | 662 | "calib_infos" => array(), |
@@ -683,9 +690,10 @@ class IHMExpressionParserClass | @@ -683,9 +690,10 @@ class IHMExpressionParserClass | ||
683 | 690 | ||
684 | if ($i < count($tree) - 1) | 691 | if ($i < count($tree) - 1) |
685 | { | 692 | { |
686 | - if ($this->isParameterRange($tree,$i+1)) | 693 | + $isIndexes = FALSE; |
694 | + if ($this->isParameterRangeOrIndexes($tree,$i+1,$isIndexes)) | ||
687 | { | 695 | { |
688 | - $sum_parameter_id = $this->addParameterRangeInParameterArray($param, $tree[$i+1], $params); | 696 | + $sum_parameter_id = $this->addParameterRangeOrIndexesInParameterArray($param, $tree[$i+1], $isIndexes, $params); |
689 | $param = $sum_parameter_id; | 697 | $param = $sum_parameter_id; |
690 | ++$i; | 698 | ++$i; |
691 | } | 699 | } |
@@ -694,8 +702,16 @@ class IHMExpressionParserClass | @@ -694,8 +702,16 @@ class IHMExpressionParserClass | ||
694 | $this->addParameterIdInParameterArray($param,$params); | 702 | $this->addParameterIdInParameterArray($param,$params); |
695 | if ($this->isParameterComponent($tree,$i+1)) | 703 | if ($this->isParameterComponent($tree,$i+1)) |
696 | { | 704 | { |
697 | - $this->addParameterComponentInParameterArray($param, $tree[$i+1][0], $params); | ||
698 | - $param .= ("[".$tree[$i+1][0]."]"); | 705 | + if ((count($tree[$i+1]) == 3) && ($tree[$i+1][1] == ',') && $this->isInteger($tree[$i+1][2])) { |
706 | + //2D | ||
707 | + $this->addParameterComponentInParameterArray($param, array($tree[$i+1][0], $tree[$i+1][2]), $params); | ||
708 | + $param .= ("[".$tree[$i+1][0]."][".$tree[$i+1][2]."]"); | ||
709 | + } | ||
710 | + else { | ||
711 | + //1D | ||
712 | + $this->addParameterComponentInParameterArray($param, $tree[$i+1][0], $params); | ||
713 | + $param .= ("[".$tree[$i+1][0]."]"); | ||
714 | + } | ||
699 | ++$i; | 715 | ++$i; |
700 | } | 716 | } |
701 | } | 717 | } |
@@ -835,7 +851,7 @@ class IHMExpressionParserClass | @@ -835,7 +851,7 @@ class IHMExpressionParserClass | ||
835 | 851 | ||
836 | for ($i = 0; $i < count($tree); ++$i) | 852 | for ($i = 0; $i < count($tree); ++$i) |
837 | { | 853 | { |
838 | - //echo "=> ".$tree[$i].PHP_EOL; | 854 | + #echo "=> ".$tree[$i].PHP_EOL; |
839 | if (is_array($tree[$i])) | 855 | if (is_array($tree[$i])) |
840 | { | 856 | { |
841 | //echo "ARRAY".PHP_EOL; | 857 | //echo "ARRAY".PHP_EOL; |
@@ -879,7 +895,7 @@ class IHMExpressionParserClass | @@ -879,7 +895,7 @@ class IHMExpressionParserClass | ||
879 | $founded = false; | 895 | $founded = false; |
880 | foreach ($params as $param) | 896 | foreach ($params as $param) |
881 | { | 897 | { |
882 | - //echo "TEST ".$param["id"].PHP_EOL; | 898 | + #echo "TEST ".$param["id"].PHP_EOL; |
883 | 899 | ||
884 | if (array_key_exists("template_args", $param)) | 900 | if (array_key_exists("template_args", $param)) |
885 | { | 901 | { |
@@ -897,8 +913,15 @@ class IHMExpressionParserClass | @@ -897,8 +913,15 @@ class IHMExpressionParserClass | ||
897 | foreach ($param["indexes"] as $index) | 913 | foreach ($param["indexes"] as $index) |
898 | { | 914 | { |
899 | $temp = ""; | 915 | $temp = ""; |
900 | - $temp .= ($param["id"]."[".$index."]"); | ||
901 | - //echo "TEST 2 ".$temp.PHP_EOL; | 916 | + if (is_array($index) && (count($index) == 2)) { |
917 | + //2D | ||
918 | + $temp .= ($param["id"]."[".$index[0]."][".$index[1]."]"); | ||
919 | + } | ||
920 | + else { | ||
921 | + //1D | ||
922 | + $temp .= ($param["id"]."[".$index."]"); | ||
923 | + } | ||
924 | + #echo "TEST 2 ".$temp.PHP_EOL; | ||
902 | if ($temp == $tree[$i]) | 925 | if ($temp == $tree[$i]) |
903 | { | 926 | { |
904 | $founded = true; | 927 | $founded = true; |
@@ -906,6 +929,7 @@ class IHMExpressionParserClass | @@ -906,6 +929,7 @@ class IHMExpressionParserClass | ||
906 | break; | 929 | break; |
907 | } | 930 | } |
908 | } | 931 | } |
932 | + | ||
909 | if ($founded) | 933 | if ($founded) |
910 | break; | 934 | break; |
911 | } | 935 | } |
src/InputOutput/IHMImpl/Tools/IHMParamManagerClass.php
@@ -11,6 +11,7 @@ class IHMParamManagerClass | @@ -11,6 +11,7 @@ class IHMParamManagerClass | ||
11 | protected $expressionParser = null; | 11 | protected $expressionParser = null; |
12 | protected $templateParamsManager = null; | 12 | protected $templateParamsManager = null; |
13 | protected $paramImpexMgr = null; | 13 | protected $paramImpexMgr = null; |
14 | + protected $ttCatMgr = null; | ||
14 | 15 | ||
15 | /* | 16 | /* |
16 | * @brief Constructor | 17 | * @brief Constructor |
@@ -68,6 +69,79 @@ class IHMParamManagerClass | @@ -68,6 +69,79 @@ class IHMParamManagerClass | ||
68 | } | 69 | } |
69 | 70 | ||
70 | /* | 71 | /* |
72 | + * @brief Add a TT or catalog parameter | ||
73 | + */ | ||
74 | + public function addTTCatParam($paramId, $paramsData) | ||
75 | + { | ||
76 | + if (!isset($this->ttCatMgr)) { | ||
77 | + $this->ttCatMgr = new IHMTTCatLoaderClass(); | ||
78 | + } | ||
79 | + $info = $this->ttCatMgr->getTTCatInfoFromId($paramId); | ||
80 | + | ||
81 | + if (!$info["success"]) { | ||
82 | + throw new Exception($info["message"]); | ||
83 | + } | ||
84 | + | ||
85 | + $status = array(); | ||
86 | + $units = ""; | ||
87 | + $ytitle = ""; | ||
88 | + $flag = ""; | ||
89 | + | ||
90 | + if ($info["info"]["isCatalog"]) { | ||
91 | + $parameters = $this->ttCatMgr->getCatalogParameters($paramId); | ||
92 | + if (!$parameters["success"] || empty($parameters["parameters"])) { | ||
93 | + throw new Exception("Error to extract first parameter of ".$paramId); | ||
94 | + } | ||
95 | + //For the moment, use the first parameter | ||
96 | + $parameter = $parameters["parameters"][0]; | ||
97 | + $units = $parameter["units"]; | ||
98 | + $ytitle = !empty($parameter["name"]) ? $parameter["name"] : $parameter["id"]; | ||
99 | + $flag = $parameter["id"]; | ||
100 | + $description = $parameter["description"]; | ||
101 | + $desc_parts = array(); | ||
102 | + foreach (explode("-",$description) as $def) { | ||
103 | + $def = trim($def); | ||
104 | + $p = strpos($def, ":"); | ||
105 | + if ($p === FALSE) { | ||
106 | + continue; | ||
107 | + } | ||
108 | + $val = substr($def, 0, $p); | ||
109 | + $val = trim($val); | ||
110 | + $name = substr($def, $p+1); | ||
111 | + $name = trim($name); | ||
112 | + $color = ""; | ||
113 | + $p = strpos($name, "["); | ||
114 | + if ($p !== FALSE) { | ||
115 | + $color = substr($name, $p); | ||
116 | + $color = trim($color); | ||
117 | + $name = substr($name, 0, $p); | ||
118 | + $name = trim($name); | ||
119 | + } | ||
120 | + $status[] = array( | ||
121 | + "min" => floatval($val), | ||
122 | + "max" => floatval($val), | ||
123 | + "name" => $name, | ||
124 | + "color" => $color, | ||
125 | + ); | ||
126 | + } | ||
127 | + } | ||
128 | + else { | ||
129 | + $status = array( | ||
130 | + array( | ||
131 | + "min" => 1, | ||
132 | + "max" => 1, | ||
133 | + "name" => "Inside", | ||
134 | + "color" => "[255,0,0]", | ||
135 | + ) | ||
136 | + ); | ||
137 | + $ytitle = $info["info"]["name"]; | ||
138 | + } | ||
139 | + | ||
140 | + $paramsData->addTTCatParamToCreate($paramId, $info["info"]["path"], $info["info"]["isShared"], filemtime($info["info"]["path"]), $units, $ytitle, $status, $flag); | ||
141 | + return array("id" => $paramId, "indexes" => array(), "calib_infos" => array()); | ||
142 | + } | ||
143 | + | ||
144 | + /* | ||
71 | * @brief Detect if it's a derived parameter | 145 | * @brief Detect if it's a derived parameter |
72 | */ | 146 | */ |
73 | private function isDerivedParam($param) | 147 | private function isDerivedParam($param) |
@@ -326,8 +400,10 @@ class IHMParamManagerClass | @@ -326,8 +400,10 @@ class IHMParamManagerClass | ||
326 | 400 | ||
327 | if (!$res["success"]) | 401 | if (!$res["success"]) |
328 | throw new Exception('Error to load uploaded parameter file : '.$res["message"]); | 402 | throw new Exception('Error to load uploaded parameter file : '.$res["message"]); |
403 | + | ||
404 | + $paramId = $param; | ||
329 | 405 | ||
330 | - $newParamNode = $paramsData->addLocalParamToCreate($res["param"]["id"], | 406 | + $newParamNode = $paramsData->addLocalParamToCreate($paramId, |
331 | $res["param"]["info"]["viId"], $res["param"]["info"]["realVar"], | 407 | $res["param"]["info"]["viId"], $res["param"]["info"]["realVar"], |
332 | $res["param"]["info"]["minSampling"], $res["param"]["info"]["maxSampling"], | 408 | $res["param"]["info"]["minSampling"], $res["param"]["info"]["maxSampling"], |
333 | $res["param"]["info"]["type"],$res["param"]["info"]["size"], | 409 | $res["param"]["info"]["type"],$res["param"]["info"]["size"], |
@@ -439,19 +515,48 @@ class IHMParamManagerClass | @@ -439,19 +515,48 @@ class IHMParamManagerClass | ||
439 | } | 515 | } |
440 | } | 516 | } |
441 | 517 | ||
442 | - return array("id" => $res["param"]["id"], "plotType" => $res["param"]["info"]["plotType"]); | 518 | + return array("id" => $paramId, "plotType" => $res["param"]["info"]["plotType"]); |
443 | } | 519 | } |
444 | 520 | ||
445 | public function applyRangesAndIndexes($paramsData, $paramData, $force_total_2d, &$paramInfo) { | 521 | public function applyRangesAndIndexes($paramsData, $paramData, $force_total_2d, &$paramInfo) { |
446 | - $dim1_is_range = (isset($paramData->{'dim1-is-range'}) && $paramData->{'dim1-is-range'}); | 522 | + $dim1_min = 0; |
523 | + $dim1_max = 0; | ||
524 | + $dim2_min = 0; | ||
525 | + $dim2_max = 0; | ||
526 | + | ||
527 | + $dim1_is_range = (isset($paramData->{'dim1-sum-type'}) && ($paramData->{'dim1-sum-type'} > 0)); | ||
447 | $dim1_index = ($dim1_is_range || !isset($paramData->{'dim1-index'}) || ($paramData->{'dim1-index'} == '')) ? '*' : $paramData->{'dim1-index'}; | 528 | $dim1_index = ($dim1_is_range || !isset($paramData->{'dim1-index'}) || ($paramData->{'dim1-index'} == '')) ? '*' : $paramData->{'dim1-index'}; |
448 | - $dim1_min = (!$dim1_is_range || !isset($paramData->{'dim1-min-range'}) || ($paramData->{'dim1-min-range'} == '')) ? 0 : $paramData->{'dim1-min-range'}; | ||
449 | - $dim1_max = (!$dim1_is_range || !isset($paramData->{'dim1-max-range'}) || ($paramData->{'dim1-max-range'} == '')) ? 0 : $paramData->{'dim1-max-range'}; | 529 | + if ($dim1_is_range) { |
530 | + switch ($paramData->{'dim1-sum-type'}) { | ||
531 | + case 1: | ||
532 | + //Sum between a range of value | ||
533 | + $dim1_min = !empty($paramData->{'dim1-min-value'}) ? $paramData->{'dim1-min-value'} : 0; | ||
534 | + $dim1_max = !empty($paramData->{'dim1-max-value'}) ? $paramData->{'dim1-max-value'} : 0; | ||
535 | + break; | ||
536 | + case 2: | ||
537 | + //Sum between indexes | ||
538 | + $dim1_min = !empty($paramData->{'dim1-min-index'}) ? $paramData->{'dim1-min-index'} : 0; | ||
539 | + $dim1_max = !empty($paramData->{'dim1-max-index'}) ? $paramData->{'dim1-max-index'} : 0; | ||
540 | + break; | ||
541 | + } | ||
542 | + } | ||
450 | 543 | ||
451 | - $dim2_is_range = (isset($paramData->{'dim2-is-range'}) && $paramData->{'dim2-is-range'}); | 544 | + $dim2_is_range = (isset($paramData->{'dim2-sum-type'}) && ($paramData->{'dim2-sum-type'} > 0)); |
452 | $dim2_index = ($dim2_is_range || !isset($paramData->{'dim2-index'}) || ($paramData->{'dim2-index'} == '')) ? '*' : $paramData->{'dim2-index'}; | 545 | $dim2_index = ($dim2_is_range || !isset($paramData->{'dim2-index'}) || ($paramData->{'dim2-index'} == '')) ? '*' : $paramData->{'dim2-index'}; |
453 | - $dim2_min = (!$dim2_is_range || !isset($paramData->{'dim2-min-range'}) || ($paramData->{'dim2-min-range'} == '')) ? 0 : $paramData->{'dim2-min-range'}; | ||
454 | - $dim2_max = (!$dim2_is_range || !isset($paramData->{'dim2-max-range'}) || ($paramData->{'dim2-max-range'} == '')) ? 0 : $paramData->{'dim2-max-range'}; | 546 | + if ($dim2_is_range) { |
547 | + switch ($paramData->{'dim2-sum-type'}) { | ||
548 | + case 1: | ||
549 | + //Sum between a range of value | ||
550 | + $dim2_min = !empty($paramData->{'dim2-min-value'}) ? $paramData->{'dim2-min-value'} : 0; | ||
551 | + $dim2_max = !empty($paramData->{'dim2-max-value'}) ? $paramData->{'dim2-max-value'} : 0; | ||
552 | + break; | ||
553 | + case 2: | ||
554 | + //Sum between indexes | ||
555 | + $dim2_min = !empty($paramData->{'dim2-min-index'}) ? $paramData->{'dim2-min-index'} : 0; | ||
556 | + $dim2_max = !empty($paramData->{'dim2-max-index'}) ? $paramData->{'dim2-max-index'} : 0; | ||
557 | + break; | ||
558 | + } | ||
559 | + } | ||
455 | 560 | ||
456 | switch ($paramData->{'type'}) { | 561 | switch ($paramData->{'type'}) { |
457 | case 0: | 562 | case 0: |
@@ -466,7 +571,10 @@ class IHMParamManagerClass | @@ -466,7 +571,10 @@ class IHMParamManagerClass | ||
466 | 'max' => $dim1_max, | 571 | 'max' => $dim1_max, |
467 | 'relateddim' => 0, | 572 | 'relateddim' => 0, |
468 | ); | 573 | ); |
469 | - $paramInfo = $this->addExistingParam('sum_into_table_range', $paramsData, $template_args); | 574 | + if ($paramData->{'dim1-sum-type'} == 2) |
575 | + $paramInfo = $this->addExistingParam('sum_into_table_indexes', $paramsData, $template_args); | ||
576 | + else | ||
577 | + $paramInfo = $this->addExistingParam('sum_into_table_range', $paramsData, $template_args); | ||
470 | } | 578 | } |
471 | else if ($dim2_is_range) { | 579 | else if ($dim2_is_range) { |
472 | $template_args = array( | 580 | $template_args = array( |
@@ -475,7 +583,10 @@ class IHMParamManagerClass | @@ -475,7 +583,10 @@ class IHMParamManagerClass | ||
475 | 'max' => $dim2_max, | 583 | 'max' => $dim2_max, |
476 | 'relateddim' => 1, | 584 | 'relateddim' => 1, |
477 | ); | 585 | ); |
478 | - $paramInfo = $this->addExistingParam('sum_into_table_range', $paramsData, $template_args); | 586 | + if ($paramData->{'dim2-sum-type'} == 2) |
587 | + $paramInfo = $this->addExistingParam('sum_into_table_indexes', $paramsData, $template_args); | ||
588 | + else | ||
589 | + $paramInfo = $this->addExistingParam('sum_into_table_range', $paramsData, $template_args); | ||
479 | } | 590 | } |
480 | else if ($dim1_index != '*') { | 591 | else if ($dim1_index != '*') { |
481 | $paramInfo['indexes'][] = $dim1_index; | 592 | $paramInfo['indexes'][] = $dim1_index; |
@@ -487,6 +598,9 @@ class IHMParamManagerClass | @@ -487,6 +598,9 @@ class IHMParamManagerClass | ||
487 | case 2: | 598 | case 2: |
488 | //Tab2D | 599 | //Tab2D |
489 | if ($dim1_is_range && $dim2_is_range) { | 600 | if ($dim1_is_range && $dim2_is_range) { |
601 | + if ($paramData->{'dim1-sum-type'} != $paramData->{'dim2-sum-type'}) { | ||
602 | + throw new Exception("Not supported - Dimensions ranges for ".$paramInfo['id']." must have the same type for each dimensions"); | ||
603 | + } | ||
490 | $template_args = array( | 604 | $template_args = array( |
491 | 'paramid' => $paramInfo['id'], | 605 | 'paramid' => $paramInfo['id'], |
492 | 'min1' => $dim1_min, | 606 | 'min1' => $dim1_min, |
@@ -495,7 +609,10 @@ class IHMParamManagerClass | @@ -495,7 +609,10 @@ class IHMParamManagerClass | ||
495 | 'min2' => $dim2_min, | 609 | 'min2' => $dim2_min, |
496 | 'max2' => $dim2_max, | 610 | 'max2' => $dim2_max, |
497 | ); | 611 | ); |
498 | - $paramInfo = $this->addExistingParam('sum_into_table_range_2d', $paramsData, $template_args); | 612 | + if ($paramData->{'dim1-sum-type'} == 2) |
613 | + $paramInfo = $this->addExistingParam('sum_into_table_indexes_2d', $paramsData, $template_args); | ||
614 | + else | ||
615 | + $paramInfo = $this->addExistingParam('sum_into_table_range_2d', $paramsData, $template_args); | ||
499 | } | 616 | } |
500 | else if ($dim1_is_range) { | 617 | else if ($dim1_is_range) { |
501 | $template_args = array( | 618 | $template_args = array( |
@@ -508,7 +625,10 @@ class IHMParamManagerClass | @@ -508,7 +625,10 @@ class IHMParamManagerClass | ||
508 | 'paramid' => $paramInfo['id'], | 625 | 'paramid' => $paramInfo['id'], |
509 | 'relateddim' => 1, | 626 | 'relateddim' => 1, |
510 | ); | 627 | ); |
511 | - $paramInfo = $this->addExistingParam('sum_into_table_range', $paramsData, $template_args, $tableLink); | 628 | + if ($paramData->{'dim1-sum-type'} == 2) |
629 | + $paramInfo = $this->addExistingParam('sum_into_table_indexes', $paramsData, $template_args, $tableLink); | ||
630 | + else | ||
631 | + $paramInfo = $this->addExistingParam('sum_into_table_range', $paramsData, $template_args, $tableLink); | ||
512 | if ($dim2_index != '*') { | 632 | if ($dim2_index != '*') { |
513 | $paramInfo['indexes'][] = $dim2_index; | 633 | $paramInfo['indexes'][] = $dim2_index; |
514 | } | 634 | } |
@@ -524,7 +644,10 @@ class IHMParamManagerClass | @@ -524,7 +644,10 @@ class IHMParamManagerClass | ||
524 | 'paramid' => $paramInfo['id'], | 644 | 'paramid' => $paramInfo['id'], |
525 | 'relateddim' => 0, | 645 | 'relateddim' => 0, |
526 | ); | 646 | ); |
527 | - $paramInfo = $this->addExistingParam('sum_into_table_range', $paramsData, $template_args, $tableLink); | 647 | + if ($paramData->{'dim2-sum-type'} == 2) |
648 | + $paramInfo = $this->addExistingParam('sum_into_table_indexes', $paramsData, $template_args, $tableLink); | ||
649 | + else | ||
650 | + $paramInfo = $this->addExistingParam('sum_into_table_range', $paramsData, $template_args, $tableLink); | ||
528 | if ($dim1_index != '*') { | 651 | if ($dim1_index != '*') { |
529 | $paramInfo['indexes'][] = $dim1_index; | 652 | $paramInfo['indexes'][] = $dim1_index; |
530 | } | 653 | } |
@@ -0,0 +1,235 @@ | @@ -0,0 +1,235 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +/** | ||
4 | + * @class IHMTTCatLoaderClass | ||
5 | + * @brief Loader for IHM TimeTables and Catalogs properties | ||
6 | + * @details | ||
7 | + */ | ||
8 | +class IHMTTCatLoaderClass | ||
9 | +{ | ||
10 | + protected $ttCatList = null; | ||
11 | + | ||
12 | + private static $userTTCatFile = 'Tt.xml'; | ||
13 | + | ||
14 | + private static $mgrUserTTListNode = 'timetabList'; | ||
15 | + private static $mgrUserTTEltNode = 'timetab'; | ||
16 | + | ||
17 | + private static $mgrUserCatListNode = 'catalogList'; | ||
18 | + private static $mgrUserCatEltNode = 'catalog'; | ||
19 | + | ||
20 | + private static $mgrUserTTCatEltIdAtt = 'xml:id'; | ||
21 | + private static $mgrUserTTCatEltNameAtt = 'name'; | ||
22 | + private static $mgrUserTTCatEltNbIntAtt = 'intervals'; | ||
23 | + | ||
24 | + private static $mgrUserTTCatFolderNode = 'folder'; | ||
25 | + private static $mgrUserTTCatFolderIdAtt = 'xml:id'; | ||
26 | + private static $mgrUserTTCatFolderNameAtt = 'name'; | ||
27 | + | ||
28 | + private static $mgrSharedTTListNode = 'timeTableList'; | ||
29 | + private static $mgrSharedTTEltNode = 'timeTable'; | ||
30 | + | ||
31 | + private static $mgrSharedCatListNode = 'catalogList'; | ||
32 | + private static $mgrSharedCatEltNode = 'catalog'; | ||
33 | + | ||
34 | + private static $mgrSharedTTCatEltIdAtt = 'xml:id'; | ||
35 | + private static $mgrSharedTTCatEltNameAtt = 'name'; | ||
36 | + private static $mgrSharedTTCatEltNbIntAtt = 'nbIntervals'; | ||
37 | + | ||
38 | + private static $mgrSharedTTCatFolderNode = 'folder'; | ||
39 | + private static $mgrSharedTTCatFolderIdAtt = 'xml:id'; | ||
40 | + private static $mgrSharedTTCatFolderNameAtt = 'name'; | ||
41 | + | ||
42 | + /* | ||
43 | + * @brief Constructor | ||
44 | + */ | ||
45 | + function __construct() | ||
46 | + { | ||
47 | + } | ||
48 | + | ||
49 | + /* | ||
50 | + * @brief Get info about a TT or a catalog from id | ||
51 | + */ | ||
52 | + public function getTTCatInfoFromId($id) | ||
53 | + { | ||
54 | + if (!isset($this->ttCatList)) { | ||
55 | + $this->ttCatList = $this->loadTTCatManagerFiles(); | ||
56 | + } | ||
57 | + if (!array_key_exists($id, $this->ttCatList)) { | ||
58 | + return array("success" => false, "message" => "Cannot retrieve TT or catalog"); | ||
59 | + } | ||
60 | + return array("success" => true, "info" => $this->ttCatList[$id]); | ||
61 | + } | ||
62 | + | ||
63 | + /* | ||
64 | + * @brief Get parameters from id (empty for a TT) | ||
65 | + */ | ||
66 | + public function getCatalogParameters($id) | ||
67 | + { | ||
68 | + $info = $this->getTTCatInfoFromId($id); | ||
69 | + if (!$info["success"]) { | ||
70 | + return $info; | ||
71 | + } | ||
72 | + | ||
73 | + if (!$info["info"]["isCatalog"]) { | ||
74 | + return array("success" => TRUE, "parameters" => array()); | ||
75 | + } | ||
76 | + | ||
77 | + $dom = new DomDocument("1.0"); | ||
78 | + if (!$dom->load($info["info"]["path"])) { | ||
79 | + return array("success" => FALSE, "message" => "Cannot open catalog ".$id); | ||
80 | + } | ||
81 | + | ||
82 | + $parametersNodes = $dom->getElementsByTagName("parameters"); | ||
83 | + if ($parametersNodes->length == 0) { | ||
84 | + return array("success" => FALSE, "message" => "Cannot retrieve parameters node in catalog ".$id); | ||
85 | + } | ||
86 | + | ||
87 | + $parametersNode = $parametersNodes->item(0); | ||
88 | + | ||
89 | + $parameterNodes = $parametersNode->getElementsByTagName("parameter"); | ||
90 | + | ||
91 | + $parameters = array(); | ||
92 | + foreach ($parameterNodes as $parameterNode) { | ||
93 | + $parameters[] = array( | ||
94 | + "id" => $parameterNode->getAttribute("id"), | ||
95 | + "name" => $parameterNode->getAttribute("name"), | ||
96 | + "size" => $parameterNode->getAttribute("size"), | ||
97 | + "type" => $parameterNode->getAttribute("type"), | ||
98 | + "unit" => $parameterNode->getAttribute("unit"), | ||
99 | + "description" => $parameterNode->getAttribute("description"), | ||
100 | + "ucd" => $parameterNode->getAttribute("ucd"), | ||
101 | + "utype" => $parameterNode->getAttribute("utype"), | ||
102 | + ); | ||
103 | + } | ||
104 | + | ||
105 | + return array("success" => TRUE, "parameters" => $parameters); | ||
106 | + } | ||
107 | + | ||
108 | + | ||
109 | + /* | ||
110 | + * @brief Load all TT and catalogs from manager files | ||
111 | + */ | ||
112 | + private function loadTTCatManagerFiles() | ||
113 | + { | ||
114 | + if (isset($this->ttCatList)) { | ||
115 | + return $this->ttCatList; | ||
116 | + } | ||
117 | + | ||
118 | + return $this->loadUserTTCatManagerFile() + $this->loadSharedTTCatManagerFile(); | ||
119 | + } | ||
120 | + | ||
121 | + /* | ||
122 | + * @brief Load user TT and cat manager file | ||
123 | + */ | ||
124 | + private function loadUserTTCatManagerFile() | ||
125 | + { | ||
126 | + //load xml file | ||
127 | + $dom = new DomDocument("1.0"); | ||
128 | + if (!$dom->load(IHMConfigClass::getUserWSPath() . '/' . self::$userTTCatFile)) | ||
129 | + return array(); | ||
130 | + | ||
131 | + $ttCat = array(); | ||
132 | + | ||
133 | + //get TT | ||
134 | + $listNodes = $dom->getElementsByTagName(self::$mgrUserTTListNode); | ||
135 | + if ($listNodes->length > 0) { | ||
136 | + $this->getEltRecursively($listNodes->item(0), FALSE, FALSE, array(), $ttCat); | ||
137 | + } | ||
138 | + | ||
139 | + //get catalogs | ||
140 | + $listNodes = $dom->getElementsByTagName(self::$mgrUserCatListNode); | ||
141 | + if ($listNodes->length > 0) { | ||
142 | + $this->getEltRecursively($listNodes->item(0), FALSE, TRUE, array(), $ttCat); | ||
143 | + } | ||
144 | + | ||
145 | + return $ttCat; | ||
146 | + } | ||
147 | + | ||
148 | + /* | ||
149 | + * @brief Load shared objects manager file | ||
150 | + */ | ||
151 | + private function loadSharedTTCatManagerFile() | ||
152 | + { | ||
153 | + //load xml file | ||
154 | + $dom = new DomDocument("1.0"); | ||
155 | + if (!$dom->load(IHMConfigClass::getSharedTreeFilePath())) | ||
156 | + return array(); | ||
157 | + | ||
158 | + $ttCat = array(); | ||
159 | + | ||
160 | + //get TT | ||
161 | + $listNodes = $dom->getElementsByTagName(self::$mgrSharedTTListNode); | ||
162 | + if ($listNodes->length > 0) { | ||
163 | + $this->getEltRecursively($listNodes->item(0), TRUE, FALSE, array(), $ttCat); | ||
164 | + } | ||
165 | + | ||
166 | + //get catalogs | ||
167 | + $listNodes = $dom->getElementsByTagName(self::$mgrSharedCatListNode); | ||
168 | + if ($listNodes->length > 0) { | ||
169 | + $this->getEltRecursively($listNodes->item(0), TRUE, TRUE, array(), $ttCat); | ||
170 | + } | ||
171 | + | ||
172 | + return $ttCat; | ||
173 | + } | ||
174 | + | ||
175 | + private function getEltRecursively($baseNode, $isShared, $isCatalog, $folders, &$elts) { | ||
176 | + if ($isShared) { | ||
177 | + $basePath = IHMConfigClass::getSharedPath(); | ||
178 | + if ($isCatalog) { | ||
179 | + $eltNode = self::$mgrSharedCatEltNode; | ||
180 | + $basePath .= "/CAT"; | ||
181 | + } | ||
182 | + else { | ||
183 | + $eltNode = self::$mgrSharedTTEltNode; | ||
184 | + $basePath .= "/TT"; | ||
185 | + } | ||
186 | + $eltIdAtt = self::$mgrSharedTTCatEltIdAtt; | ||
187 | + $eltNameAtt = self::$mgrSharedTTCatEltNameAtt; | ||
188 | + $eltNbIntAtt = self::$mgrSharedTTCatEltNbIntAtt; | ||
189 | + $folderNode = self::$mgrSharedTTCatFolderNode; | ||
190 | + $folderIdAtt = self::$mgrSharedTTCatFolderIdAtt; | ||
191 | + $folderNameAtt = self::$mgrSharedTTCatFolderNameAtt; | ||
192 | + if (!empty($folders)) { | ||
193 | + $basePath .= "/".$folders[0]["name"]."/data"; | ||
194 | + } | ||
195 | + } | ||
196 | + else { | ||
197 | + $basePath = IHMConfigClass::getUserTTPath(); | ||
198 | + if ($isCatalog) { | ||
199 | + $eltNode = self::$mgrUserCatEltNode; | ||
200 | + } | ||
201 | + else { | ||
202 | + $eltNode = self::$mgrUserTTEltNode; | ||
203 | + } | ||
204 | + $eltIdAtt = self::$mgrUserTTCatEltIdAtt; | ||
205 | + $eltNameAtt = self::$mgrUserTTCatEltNameAtt; | ||
206 | + $eltNbIntAtt = self::$mgrUserTTCatEltNbIntAtt; | ||
207 | + $folderNode = self::$mgrUserTTCatFolderNode; | ||
208 | + $folderIdAtt = self::$mgrUserTTCatFolderIdAtt; | ||
209 | + $folderNameAtt = self::$mgrUserTTCatFolderNameAtt; | ||
210 | + } | ||
211 | + | ||
212 | + $eltNodes = $baseNode->getElementsByTagName($eltNode); | ||
213 | + foreach ($eltNodes as $node) { | ||
214 | + $elts[$node->getAttribute($eltIdAtt)] = array( | ||
215 | + "id" => $node->getAttribute($eltIdAtt), | ||
216 | + "name" => $node->getAttribute($eltNameAtt), | ||
217 | + "nbIntervals" => $node->getAttribute($eltNbIntAtt), | ||
218 | + "folders" => $folders, | ||
219 | + "path" => $basePath . "/" . $node->getAttribute($eltIdAtt). ".xml", | ||
220 | + "isShared" => $isShared, | ||
221 | + "isCatalog" => $isCatalog, | ||
222 | + ); | ||
223 | + } | ||
224 | + | ||
225 | + $folderNodes = $baseNode->getElementsByTagName($folderNode); | ||
226 | + foreach ($folderNodes as $node) { | ||
227 | + $crt_folders = $folders; | ||
228 | + $crt_folders[] = array( | ||
229 | + "id" => $node->getAttribute($folderIdAtt), | ||
230 | + "name" => $node->getAttribute($folderNameAtt), | ||
231 | + ); | ||
232 | + $this->getEltRecursively($node, $isShared, $isCatalog, $crt_folders, $elts); | ||
233 | + } | ||
234 | + } | ||
235 | +} |
src/InputOutput/WSImpl/Params/DownloadImpl/WSInputOutputParamsDownloadClass.php
@@ -31,13 +31,13 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | @@ -31,13 +31,13 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | ||
31 | $outputsNode = $requestNode->getOutputsNode(); | 31 | $outputsNode = $requestNode->getOutputsNode(); |
32 | $downloadNode = $outputsNode->addNewOutput(RequestOutputTypeEnum::DOWNLOAD); | 32 | $downloadNode = $outputsNode->addNewOutput(RequestOutputTypeEnum::DOWNLOAD); |
33 | 33 | ||
34 | - switch ($input->timeformat) | 34 | + switch (strtoupper($input->timeformat)) |
35 | { | 35 | { |
36 | case 'ISO08601' : | 36 | case 'ISO08601' : |
37 | $downloadNode->setTimeFormat(RequestOutputDownloadTimeFormatEnum::ISO); | 37 | $downloadNode->setTimeFormat(RequestOutputDownloadTimeFormatEnum::ISO); |
38 | break; | 38 | break; |
39 | - case 'unixtime' : | ||
40 | - $downloadNode->setTimeFormat(RequestOutputDownloadTimeFormatEnum::TIMESTAMP); | 39 | + case 'UNIXTIME' : |
40 | + $downloadNode->setTimeFormat(RequestOutputDownloadTimeFormatEnum::MS); | ||
41 | break; | 41 | break; |
42 | default : | 42 | default : |
43 | $downloadNode->setTimeFormat(RequestOutputDownloadTimeFormatEnum::ISO); | 43 | $downloadNode->setTimeFormat(RequestOutputDownloadTimeFormatEnum::ISO); |
src/InputOutput/WSImpl/Tools/WSJobsManagerClass.php
@@ -16,7 +16,7 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | @@ -16,7 +16,7 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | ||
16 | protected $resRootNode = array(WSConfigClass::PLOT => 'resPlotRootNode', | 16 | protected $resRootNode = array(WSConfigClass::PLOT => 'resPlotRootNode', |
17 | WSConfigClass::PARAMETER => 'resParamRootNode', | 17 | WSConfigClass::PARAMETER => 'resParamRootNode', |
18 | WSConfigClass::ORBIT => 'resOrbRootNode', | 18 | WSConfigClass::ORBIT => 'resOrbRootNode', |
19 | - WSConfigClass::DATASET => 'bkgDatasetRootNode'); | 19 | + WSConfigClass::DATASET => 'resDatasetRootNode'); |
20 | 20 | ||
21 | /* | 21 | /* |
22 | * @brief Constructor | 22 | * @brief Constructor |
@@ -36,15 +36,18 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | @@ -36,15 +36,18 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | ||
36 | if (!file_exists($this->jobXmlName)) | 36 | if (!file_exists($this->jobXmlName)) |
37 | { | 37 | { |
38 | $res = $this->createJobsFile(); | 38 | $res = $this->createJobsFile(); |
39 | - if (!$res['success']) | 39 | + if (!$res['success']) { |
40 | + error_log("WebServices Error : Cannot create WSjobs.xml", 1, email); | ||
40 | return $res; | 41 | return $res; |
42 | + } | ||
41 | } | 43 | } |
42 | - | ||
43 | $res = $this->jobXml->load($this->jobXmlName); | 44 | $res = $this->jobXml->load($this->jobXmlName); |
44 | - if (!$res) | 45 | + if (!$res) { |
46 | + error_log("WebServices Error : Cannot load WSjobs.xml", 1, email); | ||
45 | return array( | 47 | return array( |
46 | "success" => false, | 48 | "success" => false, |
47 | "message" => "Cannot load jobs file"); | 49 | "message" => "Cannot load jobs file"); |
50 | + } | ||
48 | 51 | ||
49 | return array("success" => true); | 52 | return array("success" => true); |
50 | } | 53 | } |
@@ -265,14 +268,6 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | @@ -265,14 +268,6 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | ||
265 | } | 268 | } |
266 | 269 | ||
267 | $this->deleteRequestObjectFile($id); | 270 | $this->deleteRequestObjectFile($id); |
268 | - | ||
269 | -// $job->parentNode->removeChild($job); | ||
270 | -// $res = $this->jobXml->save($this->jobXmlName); | ||
271 | - | ||
272 | - if (!$res) | ||
273 | - return array( | ||
274 | - 'success' => false, | ||
275 | - 'message' => "Cannot save jobs file"); | ||
276 | 271 | ||
277 | return array('success' => true, 'id' => $id); | 272 | return array('success' => true, 'id' => $id); |
278 | } | 273 | } |
src/Request/ParamsRequestImpl/Nodes/Infos/InfoParamNodeClass.php
@@ -16,7 +16,12 @@ define ("INFOPARAM_SICONV", "si_conversion"); | @@ -16,7 +16,12 @@ define ("INFOPARAM_SICONV", "si_conversion"); | ||
16 | define ("INFOPARAM_TABLE", "table"); | 16 | define ("INFOPARAM_TABLE", "table"); |
17 | define ("INFOPARAM_FILLVAL", "fill_value"); | 17 | define ("INFOPARAM_FILLVAL", "fill_value"); |
18 | define ("INFOPARAM_UCD", "ucd"); | 18 | define ("INFOPARAM_UCD", "ucd"); |
19 | -//define ("INFOPARAM_STATUSDEF", "status_def"); | 19 | +define ("INFOPARAM_STATUSDEF", "status_def"); |
20 | +define ("INFOPARAM_STATUS", "status"); | ||
21 | +define ("INFOPARAM_STATUS_MINVAL", "minVal"); | ||
22 | +define ("INFOPARAM_STATUS_MAXVAL", "maxVal"); | ||
23 | +define ("INFOPARAM_STATUS_NAME", "name"); | ||
24 | +define ("INFOPARAM_STATUS_COLOR", "color"); | ||
20 | define ("INFOPARAM_DATASETID", "dataset_id"); | 25 | define ("INFOPARAM_DATASETID", "dataset_id"); |
21 | 26 | ||
22 | /** | 27 | /** |
@@ -51,7 +56,7 @@ class InfoParamNodeClass extends NodeClass | @@ -51,7 +56,7 @@ class InfoParamNodeClass extends NodeClass | ||
51 | $this->getChildInstanceByName(INFOPARAM_TABLE,true); | 56 | $this->getChildInstanceByName(INFOPARAM_TABLE,true); |
52 | $this->getChildInstanceByName(INFOPARAM_FILLVAL,true); | 57 | $this->getChildInstanceByName(INFOPARAM_FILLVAL,true); |
53 | $this->getChildInstanceByName(INFOPARAM_UCD,true); | 58 | $this->getChildInstanceByName(INFOPARAM_UCD,true); |
54 | - //$this->getChildInstanceByName(INFOPARAM_STATUSDEF,true); | 59 | + $this->getChildInstanceByName(INFOPARAM_STATUSDEF,true); |
55 | $this->getChildInstanceByName(INFOPARAM_DATASETID,true); | 60 | $this->getChildInstanceByName(INFOPARAM_DATASETID,true); |
56 | } | 61 | } |
57 | 62 | ||
@@ -148,6 +153,28 @@ class InfoParamNodeClass extends NodeClass | @@ -148,6 +153,28 @@ class InfoParamNodeClass extends NodeClass | ||
148 | { | 153 | { |
149 | return $this->getChildInstanceByName(INFOPARAM_TABLE, true); | 154 | return $this->getChildInstanceByName(INFOPARAM_TABLE, true); |
150 | } | 155 | } |
156 | + | ||
157 | + public function getStatusDef() | ||
158 | + { | ||
159 | + return $this->getChildInstanceByName(INFOPARAM_STATUSDEF, true); | ||
160 | + } | ||
161 | + | ||
162 | + public function addStatus($min, $max, $name, $color = "") | ||
163 | + { | ||
164 | + $node = $this->getStatusDef(); | ||
165 | + | ||
166 | + $statusNode = new NodeClass(INFOPARAM_STATUS); | ||
167 | + $statusNode->setAttribute(INFOPARAM_STATUS_MINVAL, $min); | ||
168 | + $statusNode->setAttribute(INFOPARAM_STATUS_MAXVAL, $max); | ||
169 | + $statusNode->setAttribute(INFOPARAM_STATUS_NAME, $name); | ||
170 | + if (!empty($color)) { | ||
171 | + $statusNode->setAttribute(INFOPARAM_STATUS_COLOR, $color); | ||
172 | + } | ||
173 | + | ||
174 | + $node->addChild($statusNode); | ||
175 | + | ||
176 | + return $statusNode; | ||
177 | + } | ||
151 | 178 | ||
152 | public function loadFromNode($xmlNode) | 179 | public function loadFromNode($xmlNode) |
153 | { | 180 | { |
@@ -208,6 +235,17 @@ class InfoParamNodeClass extends NodeClass | @@ -208,6 +235,17 @@ class InfoParamNodeClass extends NodeClass | ||
208 | $ucdXmlNode = $this->getXmlNodeChildByTagName($xmlNode, INFOPARAM_UCD); | 235 | $ucdXmlNode = $this->getXmlNodeChildByTagName($xmlNode, INFOPARAM_UCD); |
209 | if (isset($ucdXmlNode)) | 236 | if (isset($ucdXmlNode)) |
210 | $this->setUCD($this->getXmlNodeValue($ucdXmlNode)); | 237 | $this->setUCD($this->getXmlNodeValue($ucdXmlNode)); |
238 | + | ||
239 | + $statusDefXmlNode = $this->getXmlNodeChildByTagName($xmlNode, INFOPARAM_STATUSDEF); | ||
240 | + if (isset($statusDefXmlNode)) { | ||
241 | + foreach ($this->getXmlNodeChildren($statusDefXmlNode) as $statusNode) { | ||
242 | + $minVal = $this->getXmlNodeAttribute($statusNode, INFOPARAM_STATUS_MINVAL); | ||
243 | + $maxVal = $this->getXmlNodeAttribute($statusNode, INFOPARAM_STATUS_MAXVAL); | ||
244 | + $name = $this->getXmlNodeAttribute($statusNode, INFOPARAM_STATUS_NAME); | ||
245 | + $color = $this->getXmlNodeAttribute($statusNode, INFOPARAM_STATUS_COLOR); | ||
246 | + $this->addStatus($minVal, $maxVal, $name, $color); | ||
247 | + } | ||
248 | + } | ||
211 | 249 | ||
212 | $datasetidXmlNode = $this->getXmlNodeChildByTagName($xmlNode, INFOPARAM_DATASETID); | 250 | $datasetidXmlNode = $this->getXmlNodeChildByTagName($xmlNode, INFOPARAM_DATASETID); |
213 | if (isset($datasetidXmlNode)) | 251 | if (isset($datasetidXmlNode)) |
src/Request/ParamsRequestImpl/Nodes/Params/ParamGetConstantNodeClass.php
0 โ 100644
@@ -0,0 +1,53 @@ | @@ -0,0 +1,53 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +require_once "ParamGetConstantParamNodeClass.php"; | ||
4 | + | ||
5 | +define ("PARAMGETCONSTANT_VI", "constant"); | ||
6 | + | ||
7 | +/** | ||
8 | + * @class ParamGetConstantNodeClass | ||
9 | + * @brief Definition of a constant getter for AMDA_Kernel | ||
10 | + * @details | ||
11 | +*/ | ||
12 | +class ParamGetConstantNodeClass extends NodeClass | ||
13 | +{ | ||
14 | + public function __construct() | ||
15 | + { | ||
16 | + parent::__construct(PARAMGETCONSTANT_VI); | ||
17 | + } | ||
18 | + | ||
19 | + public function getConstant($sampling = "60", $type = "int", $dim1 = "1", $dim2 = "1", $value = "1") | ||
20 | + { | ||
21 | + $nodes = $this->getChildrenByName(PARAMGETCONSTANTPARAM_NAME); | ||
22 | + | ||
23 | + foreach ($nodes as $node) | ||
24 | + if (($node->getSampling() == $sampling) && ($node->getType() == $type) && ($node->getConstValue() == $value) && | ||
25 | + ($node->getDim1() == $dim1) && ($node->getDim2() == $dim2)) | ||
26 | + return $node; | ||
27 | + return NULL; | ||
28 | + } | ||
29 | + | ||
30 | + public function addConstant($sampling = "60", $type = "int", $dim1 = "1", $dim2 = "1", $value = "1") | ||
31 | + { | ||
32 | + $constantNode = new ParamGetConstantParamNodeClass(); | ||
33 | + | ||
34 | + $constantNode->setSampling($sampling); | ||
35 | + $constantNode->setType($type); | ||
36 | + $constantNode->setDim1($dim1); | ||
37 | + $constantNode->setDim2($dim2); | ||
38 | + $constantNode->setConstValue($value); | ||
39 | + | ||
40 | + $this->addChild($constantNode); | ||
41 | + | ||
42 | + return $constantNode; | ||
43 | + } | ||
44 | + | ||
45 | + public function loadFromNode($xmlNode) | ||
46 | + { | ||
47 | + foreach ($this->getXmlNodeChildrenByTagName($xmlNode, PARAMGETCONSTANTPARAM_NAME) as $constantXmlNode) { | ||
48 | + $this->addConstant()->loadFromNode($constantXmlNode); | ||
49 | + } | ||
50 | + } | ||
51 | +} | ||
52 | + | ||
53 | +?> |
src/Request/ParamsRequestImpl/Nodes/Params/ParamGetConstantParamNodeClass.php
0 โ 100644
@@ -0,0 +1,86 @@ | @@ -0,0 +1,86 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +define ("PARAMGETCONSTANTPARAM_NAME", "param"); | ||
4 | +define ("PARAMGETCONSTANTPARAM_SAMPLING", "sampling"); | ||
5 | +define ("PARAMGETCONSTANTPARAM_TYPE", "type"); | ||
6 | +define ("PARAMGETCONSTANTPARAM_VALUE", "value"); | ||
7 | +define ("PARAMGETCONSTANTPARAM_DIM1", "dim1"); | ||
8 | +define ("PARAMGETCONSTANTPARAM_DIM2", "dim2"); | ||
9 | + | ||
10 | +/** | ||
11 | + * @class ParamGetConstantParamNodeClass | ||
12 | + * @brief Definition of a constant parameter | ||
13 | + * @details | ||
14 | +*/ | ||
15 | +class ParamGetConstantParamNodeClass extends NodeClass | ||
16 | +{ | ||
17 | + public function __construct() | ||
18 | + { | ||
19 | + parent::__construct(PARAMGETCONSTANTPARAM_NAME); | ||
20 | + } | ||
21 | + | ||
22 | + public function getSampling() | ||
23 | + { | ||
24 | + return $this->getAttribute(PARAMGETCONSTANTPARAM_SAMPLING); | ||
25 | + } | ||
26 | + | ||
27 | + public function setSampling($sampling) | ||
28 | + { | ||
29 | + $this->setAttribute(PARAMGETCONSTANTPARAM_SAMPLING, $sampling); | ||
30 | + } | ||
31 | + | ||
32 | + public function getType() | ||
33 | + { | ||
34 | + return $this->getAttribute(PARAMGETCONSTANTPARAM_TYPE); | ||
35 | + } | ||
36 | + | ||
37 | + public function setType($type) | ||
38 | + { | ||
39 | + $this->setAttribute(PARAMGETCONSTANTPARAM_TYPE, strtolower($type)); | ||
40 | + } | ||
41 | + | ||
42 | + public function getConstValue() | ||
43 | + { | ||
44 | + return $this->getAttribute(PARAMGETCONSTANTPARAM_VALUE); | ||
45 | + } | ||
46 | + | ||
47 | + public function setConstValue($value) | ||
48 | + { | ||
49 | + $this->setAttribute(PARAMGETCONSTANTPARAM_VALUE, $value); | ||
50 | + } | ||
51 | + | ||
52 | + public function getDim1() | ||
53 | + { | ||
54 | + return $this->getAttribute(PARAMGETCONSTANTPARAM_DIM1); | ||
55 | + } | ||
56 | + | ||
57 | + public function setDim1($dim1) | ||
58 | + { | ||
59 | + $this->setAttribute(PARAMGETCONSTANTPARAM_DIM1, $dim1); | ||
60 | + } | ||
61 | + | ||
62 | + public function getDim2() | ||
63 | + { | ||
64 | + return $this->getAttribute(PARAMGETCONSTANTPARAM_DIM2); | ||
65 | + } | ||
66 | + | ||
67 | + public function setDim2($dim2) | ||
68 | + { | ||
69 | + $this->setAttribute(PARAMGETCONSTANTPARAM_DIM2, $dim2); | ||
70 | + } | ||
71 | + | ||
72 | + public function loadFromNode($xmlNode) | ||
73 | + { | ||
74 | + $this->setSampling($this->getXmlNodeAttribute($xmlNode, PARAMGETCONSTANTPARAM_SAMPLING)); | ||
75 | + | ||
76 | + $this->setType($this->getXmlNodeAttribute($xmlNode, PARAMGETCONSTANTPARAM_TYPE)); | ||
77 | + | ||
78 | + $this->setConstValue($this->getXmlNodeAttribute($xmlNode, PARAMGETCONSTANTPARAM_VALUE)); | ||
79 | + | ||
80 | + $this->setDim1($this->getXmlNodeAttribute($xmlNode, PARAMGETCONSTANTPARAM_DIM1)); | ||
81 | + | ||
82 | + $this->setDim2($this->getXmlNodeAttribute($xmlNode, PARAMGETCONSTANTPARAM_DIM2)); | ||
83 | + } | ||
84 | +} | ||
85 | + | ||
86 | +?> |
src/Request/ParamsRequestImpl/Nodes/Params/ParamNodeClass.php
@@ -4,6 +4,7 @@ require_once "ParamClbManualNodeClass.php"; | @@ -4,6 +4,7 @@ require_once "ParamClbManualNodeClass.php"; | ||
4 | require_once "ParamGetAmdaParamNodeClass.php"; | 4 | require_once "ParamGetAmdaParamNodeClass.php"; |
5 | require_once "ParamGetDDBaseNodeClass.php"; | 5 | require_once "ParamGetDDBaseNodeClass.php"; |
6 | require_once "ParamGetLocalBaseNodeClass.php"; | 6 | require_once "ParamGetLocalBaseNodeClass.php"; |
7 | +require_once "ParamGetConstantNodeClass.php"; | ||
7 | require_once dirname(__FILE__)."/../Infos/InfoParamNodeClass.php"; | 8 | require_once dirname(__FILE__)."/../Infos/InfoParamNodeClass.php"; |
8 | require_once dirname(__FILE__)."/../Requests/RequestOutputPlotPanelNodeClass.php"; | 9 | require_once dirname(__FILE__)."/../Requests/RequestOutputPlotPanelNodeClass.php"; |
9 | 10 | ||
@@ -22,6 +23,7 @@ abstract class ParamGetTypeEnum | @@ -22,6 +23,7 @@ abstract class ParamGetTypeEnum | ||
22 | const AMDAPARAM = "AmdaParam"; | 23 | const AMDAPARAM = "AmdaParam"; |
23 | const DDBASE = "DDBase"; | 24 | const DDBASE = "DDBase"; |
24 | const LOCALBASE = "LocalBase"; | 25 | const LOCALBASE = "LocalBase"; |
26 | + const CONSTANT = "Constant"; | ||
25 | } | 27 | } |
26 | 28 | ||
27 | /** | 29 | /** |
@@ -89,6 +91,9 @@ class ParamNodeClass extends NodeClass | @@ -89,6 +91,9 @@ class ParamNodeClass extends NodeClass | ||
89 | case ParamGetTypeEnum::LOCALBASE : | 91 | case ParamGetTypeEnum::LOCALBASE : |
90 | $paramGet = new ParamGetLocalBaseNodeClass(); | 92 | $paramGet = new ParamGetLocalBaseNodeClass(); |
91 | break; | 93 | break; |
94 | + case ParamGetTypeEnum::CONSTANT : | ||
95 | + $paramGet = new ParamGetConstantNodeClass(); | ||
96 | + break; | ||
92 | default : | 97 | default : |
93 | throw new Exception('Param get node not implemented'); | 98 | throw new Exception('Param get node not implemented'); |
94 | } | 99 | } |
@@ -164,6 +169,9 @@ class ParamNodeClass extends NodeClass | @@ -164,6 +169,9 @@ class ParamNodeClass extends NodeClass | ||
164 | case PARAMGETLOCALBASE_VI : | 169 | case PARAMGETLOCALBASE_VI : |
165 | $this->addParamGet(ParamGetTypeEnum::LOCALBASE)->loadFromNode($paramGetDefXmlNode); | 170 | $this->addParamGet(ParamGetTypeEnum::LOCALBASE)->loadFromNode($paramGetDefXmlNode); |
166 | break; | 171 | break; |
172 | + case PARAMGETCONSTANT_VI : | ||
173 | + $this->addParamGet(ParamGetTypeEnum::CONSTANT)->loadFromNode($paramGetDefXmlNode); | ||
174 | + break; | ||
167 | } | 175 | } |
168 | } | 176 | } |
169 | } | 177 | } |
src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotParamsNodeClass.php
@@ -26,6 +26,7 @@ define ("REQUESTOUTPUTPLOTSPECTRO_INDEX", "index"); | @@ -26,6 +26,7 @@ define ("REQUESTOUTPUTPLOTSPECTRO_INDEX", "index"); | ||
26 | define ("REQUESTOUTPUTPLOTSPECTRO_MIN", "min"); | 26 | define ("REQUESTOUTPUTPLOTSPECTRO_MIN", "min"); |
27 | define ("REQUESTOUTPUTPLOTSPECTRO_MAX", "max"); | 27 | define ("REQUESTOUTPUTPLOTSPECTRO_MAX", "max"); |
28 | define ("REQUESTOUTPUTPLOTSPECTRO_USELOG0ASMIN", "uselog0asmin"); | 28 | define ("REQUESTOUTPUTPLOTSPECTRO_USELOG0ASMIN", "uselog0asmin"); |
29 | +define ("REQUESTOUTPUTPLOTSPECTRO_RESOLUTION", "resolution"); | ||
29 | 30 | ||
30 | define ("REQUESTOUTPUTPLOTINSTANTSPECTRO_NAME", "ispectro"); | 31 | define ("REQUESTOUTPUTPLOTINSTANTSPECTRO_NAME", "ispectro"); |
31 | define ("REQUESTOUTPUTPLOTINSTANTSPECTRO_XAXIS", "xAxis"); | 32 | define ("REQUESTOUTPUTPLOTINSTANTSPECTRO_XAXIS", "xAxis"); |
@@ -37,6 +38,8 @@ define ("REQUESTOUTPUTPLOTSTATUSBAR_INDEX", "index"); | @@ -37,6 +38,8 @@ define ("REQUESTOUTPUTPLOTSTATUSBAR_INDEX", "index"); | ||
37 | define ("REQUESTOUTPUTPLOTTICKBAR_NAME", "serie"); | 38 | define ("REQUESTOUTPUTPLOTTICKBAR_NAME", "serie"); |
38 | define ("REQUESTOUTPUTPLOTTICKBAR_INDEX", "index"); | 39 | define ("REQUESTOUTPUTPLOTTICKBAR_INDEX", "index"); |
39 | 40 | ||
41 | +define ("REQUESTOUTPUTPLOTINTERVALS_NAME", "intervals"); | ||
42 | + | ||
40 | /** | 43 | /** |
41 | * @class RequestOutputPlotParamNodeClass | 44 | * @class RequestOutputPlotParamNodeClass |
42 | * @brief Definition of a param for a plot of a plot request | 45 | * @brief Definition of a param for a plot of a plot request |
@@ -103,11 +106,13 @@ class RequestOutputPlotParamNodeClass extends NodeClass | @@ -103,11 +106,13 @@ class RequestOutputPlotParamNodeClass extends NodeClass | ||
103 | return $iserieNode; | 106 | return $iserieNode; |
104 | } | 107 | } |
105 | 108 | ||
106 | - public function addSpectro($yAxis = "", $index = NULL, $min = NULL, $max = NULL, $uselog0asmin = FALSE) | 109 | + public function addSpectro($yAxis = "", $resolution="", $index = NULL, $min = NULL, $max = NULL, $uselog0asmin = FALSE) |
107 | { | 110 | { |
108 | $spectroNode = new NodeClass(REQUESTOUTPUTPLOTSPECTRO_NAME); | 111 | $spectroNode = new NodeClass(REQUESTOUTPUTPLOTSPECTRO_NAME); |
109 | $spectroNode->setAttribute(REQUESTOUTPUTPLOTSPECTRO_YAXIS, $yAxis); | 112 | $spectroNode->setAttribute(REQUESTOUTPUTPLOTSPECTRO_YAXIS, $yAxis); |
110 | $spectroNode->setAttribute(REQUESTOUTPUTPLOTSPECTRO_USELOG0ASMIN, $uselog0asmin ? "true" : "false"); | 113 | $spectroNode->setAttribute(REQUESTOUTPUTPLOTSPECTRO_USELOG0ASMIN, $uselog0asmin ? "true" : "false"); |
114 | + if (isset($resolution)) | ||
115 | + $spectroNode->setAttribute(REQUESTOUTPUTPLOTSPECTRO_RESOLUTION, $resolution); | ||
111 | if (isset($index)) | 116 | if (isset($index)) |
112 | $spectroNode->setAttribute(REQUESTOUTPUTPLOTSPECTRO_INDEX, $index); | 117 | $spectroNode->setAttribute(REQUESTOUTPUTPLOTSPECTRO_INDEX, $index); |
113 | if (isset($min)) | 118 | if (isset($min)) |
@@ -174,6 +179,13 @@ class RequestOutputPlotParamNodeClass extends NodeClass | @@ -174,6 +179,13 @@ class RequestOutputPlotParamNodeClass extends NodeClass | ||
174 | $this->addChild($tickBarNode); | 179 | $this->addChild($tickBarNode); |
175 | return $tickBarNode; | 180 | return $tickBarNode; |
176 | } | 181 | } |
182 | + | ||
183 | + public function addIntervals() | ||
184 | + { | ||
185 | + $intervalsNode = new NodeClass(REQUESTOUTPUTPLOTINTERVALS_NAME); | ||
186 | + $this->addChild($intervalsNode); | ||
187 | + return $intervalsNode; | ||
188 | + } | ||
177 | 189 | ||
178 | public function loadFromNode($xmlNode) | 190 | public function loadFromNode($xmlNode) |
179 | { | 191 | { |
@@ -199,8 +211,9 @@ class RequestOutputPlotParamNodeClass extends NodeClass | @@ -199,8 +211,9 @@ class RequestOutputPlotParamNodeClass extends NodeClass | ||
199 | $index = $this->getXmlNodeAttribute($plottypeXmlNode, REQUESTOUTPUTPLOTSPECTRO_INDEX); | 211 | $index = $this->getXmlNodeAttribute($plottypeXmlNode, REQUESTOUTPUTPLOTSPECTRO_INDEX); |
200 | $min = $this->getXmlNodeAttribute($plottypeXmlNode, REQUESTOUTPUTPLOTSPECTRO_MIN); | 212 | $min = $this->getXmlNodeAttribute($plottypeXmlNode, REQUESTOUTPUTPLOTSPECTRO_MIN); |
201 | $max = $this->getXmlNodeAttribute($plottypeXmlNode, REQUESTOUTPUTPLOTSPECTRO_MAX); | 213 | $max = $this->getXmlNodeAttribute($plottypeXmlNode, REQUESTOUTPUTPLOTSPECTRO_MAX); |
214 | + $resolution = $this->getXmlNodeAttribute($plottypeXmlNode, REQUESTOUTPUTPLOTSPECTRO_RESOLUTION); | ||
202 | $uselog0asmin = $this->getXmlNodeAttribute($plottypeXmlNode, REQUESTOUTPUTPLOTSPECTRO_USELOG0ASMIN) == "true"; | 215 | $uselog0asmin = $this->getXmlNodeAttribute($plottypeXmlNode, REQUESTOUTPUTPLOTSPECTRO_USELOG0ASMIN) == "true"; |
203 | - $node = $this->addSpectro($yAxis, $index, $min, $max, $uselog0asmin); | 216 | + $node = $this->addSpectro($yAxis, $resolution, $index, $min, $max, $uselog0asmin); |
204 | break; | 217 | break; |
205 | case REQUESTOUTPUTPLOTXSERIE_NAME : | 218 | case REQUESTOUTPUTPLOTXSERIE_NAME : |
206 | $xAxis = $this->getXmlNodeAttribute($plottypeXmlNode, REQUESTOUTPUTPLOTXSERIE_XAXIS); | 219 | $xAxis = $this->getXmlNodeAttribute($plottypeXmlNode, REQUESTOUTPUTPLOTXSERIE_XAXIS); |
src/Request/ParamsRequestImpl/Nodes/Requests/RequestOutputPlotYSerieNodeClass.php
@@ -8,6 +8,7 @@ define ("REQUESTOUTPUTPLOTYSERIE_TIMEPLOT_NAME", "serie"); | @@ -8,6 +8,7 @@ define ("REQUESTOUTPUTPLOTYSERIE_TIMEPLOT_NAME", "serie"); | ||
8 | 8 | ||
9 | define ("REQUESTOUTPUTPLOTYSERIE_XID", "xId"); | 9 | define ("REQUESTOUTPUTPLOTYSERIE_XID", "xId"); |
10 | define ("REQUESTOUTPUTPLOTYSERIE_INDEX", "index"); | 10 | define ("REQUESTOUTPUTPLOTYSERIE_INDEX", "index"); |
11 | +define ("REQUESTOUTPUTPLOTYSERIE_RESOLUTION", "resolution"); | ||
11 | define ("REQUESTOUTPUTPLOTYSERIE_RESAMPLING", "resampling"); | 12 | define ("REQUESTOUTPUTPLOTYSERIE_RESAMPLING", "resampling"); |
12 | define ("REQUESTOUTPUTPLOTYSERIE_ERRORBAR", "errorBar"); | 13 | define ("REQUESTOUTPUTPLOTYSERIE_ERRORBAR", "errorBar"); |
13 | 14 | ||
@@ -33,6 +34,16 @@ class RequestOutputPlotYSerieNodeClass extends RequestOutputPlotBaseSerieNodeCla | @@ -33,6 +34,16 @@ class RequestOutputPlotYSerieNodeClass extends RequestOutputPlotBaseSerieNodeCla | ||
33 | return $this->getAttribute(REQUESTOUTPUTPLOTYSERIE_INDEX); | 34 | return $this->getAttribute(REQUESTOUTPUTPLOTYSERIE_INDEX); |
34 | } | 35 | } |
35 | 36 | ||
37 | + public function setResolution($resolution) | ||
38 | + { | ||
39 | + $this->setAttribute(REQUESTOUTPUTPLOTYSERIE_RESOLUTION, $resolution); | ||
40 | + } | ||
41 | + | ||
42 | + public function getResolution() | ||
43 | + { | ||
44 | + return $this->getAttribute(REQUESTOUTPUTPLOTYSERIE_RESOLUTION); | ||
45 | + } | ||
46 | + | ||
36 | public function setXId($xId) | 47 | public function setXId($xId) |
37 | { | 48 | { |
38 | $this->setAttribute(REQUESTOUTPUTPLOTYSERIE_XID, $xId); | 49 | $this->setAttribute(REQUESTOUTPUTPLOTYSERIE_XID, $xId); |
src/Request/ParamsRequestImpl/ParamsRequestDataClass.php
@@ -169,6 +169,39 @@ class ParamsRequestDataClass extends ProcessRequestDataClass | @@ -169,6 +169,39 @@ class ParamsRequestDataClass extends ProcessRequestDataClass | ||
169 | 169 | ||
170 | $this->processParamsToCreate[$paramId] = array('param' => $newParam, 'dateModif' => $dateModif); | 170 | $this->processParamsToCreate[$paramId] = array('param' => $newParam, 'dateModif' => $dateModif); |
171 | } | 171 | } |
172 | + | ||
173 | + public function addTTCatParamToCreate($paramId, $ttCatFilePath, $isShared, $dateModif, $units, $ytitle, $status, $flag = "") | ||
174 | + { | ||
175 | + $newParam = new ParamNodeClass(); | ||
176 | + $newParam->setId($paramId); | ||
177 | + if (!empty($units)) { | ||
178 | + $newParam->getInfo()->setUnits($units); | ||
179 | + } | ||
180 | + if (!empty($ytitle)) { | ||
181 | + $newParam->getInfo()->setShortName($ytitle); | ||
182 | + } | ||
183 | + else { | ||
184 | + $newParam->getInfo()->setShortName($paramId); | ||
185 | + } | ||
186 | + if (!empty($status)) { | ||
187 | + foreach ($status as $def) { | ||
188 | + $newParam->getInfo()->addStatus($def["min"], $def["max"], $def["name"], $def["color"]); | ||
189 | + } | ||
190 | + } | ||
191 | + $constantGetNode = $newParam->addParamGet(ParamGetTypeEnum::CONSTANT); | ||
192 | + $constantParamNode = $constantGetNode->addConstant(); | ||
193 | + $constantParamNode->setSampling(1); | ||
194 | + $process = "#ttcat_to_param(\$constant_1_".$constantParamNode->getType()."_"; | ||
195 | + $process .= $constantParamNode->getConstValue()."_".$constantParamNode->getDim1()."_".$constantParamNode->getDim2().";".$ttCatFilePath; | ||
196 | + if (!empty($flag)) { | ||
197 | + $process .= ";".$flag; | ||
198 | + } | ||
199 | + $process .= ")"; | ||
200 | + $newParam->setProcess($process, "Transform Time Table or Catalog to a parameter", !$isShared); | ||
201 | + $newParam->setOutput(); | ||
202 | + | ||
203 | + $this->processParamsToCreate[$paramId] = array('param' => $newParam, 'dateModif' => $dateModif); | ||
204 | + } | ||
172 | 205 | ||
173 | public function getLocalParamsToCreate() | 206 | public function getLocalParamsToCreate() |
174 | { | 207 | { |
src/Request/ProcessRequestImpl/Process/ProcessClass.php
@@ -8,11 +8,13 @@ class ProcessClass | @@ -8,11 +8,13 @@ class ProcessClass | ||
8 | { | 8 | { |
9 | private $command; | 9 | private $command; |
10 | private $postProcessCmd; | 10 | private $postProcessCmd; |
11 | + private $getErrorMsgCmd; | ||
11 | 12 | ||
12 | private $outputFile; | 13 | private $outputFile; |
13 | private $exitCodeFile; | 14 | private $exitCodeFile; |
14 | private $processFile; | 15 | private $processFile; |
15 | private $execTimeFile; | 16 | private $execTimeFile; |
17 | + private $errorMsgFile; | ||
16 | 18 | ||
17 | private $pID; | 19 | private $pID; |
18 | private $runningPath; | 20 | private $runningPath; |
@@ -21,22 +23,24 @@ class ProcessClass | @@ -21,22 +23,24 @@ class ProcessClass | ||
21 | /* | 23 | /* |
22 | * @brief Constructor | 24 | * @brief Constructor |
23 | */ | 25 | */ |
24 | - function __construct($command, $postProcessCmd = "") | 26 | + function __construct($command, $postProcessCmd = "", $getErrorMsgCmd = "") |
25 | { | 27 | { |
26 | $this->command = $command; | 28 | $this->command = $command; |
27 | $this->postProcessCmd = $postProcessCmd; | 29 | $this->postProcessCmd = $postProcessCmd; |
30 | + $this->getErrorMsgCmd = $getErrorMsgCmd; | ||
28 | $this->pID = 0; | 31 | $this->pID = 0; |
29 | } | 32 | } |
30 | 33 | ||
31 | /* | 34 | /* |
32 | * @brief Init an existing process | 35 | * @brief Init an existing process |
33 | */ | 36 | */ |
34 | - public function init($outputFile, $exitCodeFile, $processFile, $execTimeFile, $pid, $runningPath, $runningStart) | 37 | + public function init($outputFile, $exitCodeFile, $processFile, $execTimeFile, $errorMsgFile, $pid, $runningPath, $runningStart) |
35 | { | 38 | { |
36 | $this->outputFile = $outputFile; | 39 | $this->outputFile = $outputFile; |
37 | $this->exitCodeFile = $exitCodeFile; | 40 | $this->exitCodeFile = $exitCodeFile; |
38 | $this->processFile = $processFile; | 41 | $this->processFile = $processFile; |
39 | $this->execTimeFile = $execTimeFile; | 42 | $this->execTimeFile = $execTimeFile; |
43 | + $this->errorMsgFile = $errorMsgFile; | ||
40 | $this->pID = $pid; | 44 | $this->pID = $pid; |
41 | $this->runningPath = $runningPath; | 45 | $this->runningPath = $runningPath; |
42 | $this->runningStart = $runningStart; | 46 | $this->runningStart = $runningStart; |
@@ -83,6 +87,14 @@ class ProcessClass | @@ -83,6 +87,14 @@ class ProcessClass | ||
83 | } | 87 | } |
84 | 88 | ||
85 | /* | 89 | /* |
90 | + * @brief Get the error msg file | ||
91 | + */ | ||
92 | + public function getErrorMsgFile() | ||
93 | + { | ||
94 | + return $this->errorMsgFile; | ||
95 | + } | ||
96 | + | ||
97 | + /* | ||
86 | * @brief Get the running path of the request | 98 | * @brief Get the running path of the request |
87 | */ | 99 | */ |
88 | public function getRunningPath() | 100 | public function getRunningPath() |
@@ -119,6 +131,38 @@ class ProcessClass | @@ -119,6 +131,38 @@ class ProcessClass | ||
119 | return intval($result); | 131 | return intval($result); |
120 | } | 132 | } |
121 | 133 | ||
134 | + public function getErrorMsg() | ||
135 | + { | ||
136 | + switch ($this->getExitCode()) | ||
137 | + { | ||
138 | + case 0: | ||
139 | + return ""; //No error | ||
140 | + case -1000: | ||
141 | + return "No process Id"; | ||
142 | + case -1001: | ||
143 | + return "Request is running."; | ||
144 | + case -1002: | ||
145 | + return "Cannot access to the request directory"; | ||
146 | + case -1003: | ||
147 | + return "Cannot retrieve exit code file"; | ||
148 | + case -1004: | ||
149 | + return "Cannot read exit code file"; | ||
150 | + } | ||
151 | + if (!file_exists($this->errorMsgFile)) { | ||
152 | + return "Cannot retrieve error message file"; | ||
153 | + } | ||
154 | + $result = file_get_contents($this->errorMsgFile); | ||
155 | + | ||
156 | + if ($result === false) | ||
157 | + return "Cannot read error message file"; | ||
158 | + | ||
159 | + $result = trim($result); | ||
160 | + if (empty($result)) | ||
161 | + return "Unknown error"; | ||
162 | + | ||
163 | + return $result; | ||
164 | + } | ||
165 | + | ||
122 | /* | 166 | /* |
123 | * @brief Get execution time of the process | 167 | * @brief Get execution time of the process |
124 | */ | 168 | */ |
@@ -159,6 +203,7 @@ class ProcessClass | @@ -159,6 +203,7 @@ class ProcessClass | ||
159 | return false; | 203 | return false; |
160 | 204 | ||
161 | $cmd = 'nohup ./'.$this->processFile.' > /dev/null 2>&1 & echo $!'; | 205 | $cmd = 'nohup ./'.$this->processFile.' > /dev/null 2>&1 & echo $!'; |
206 | + | ||
162 | exec($cmd,$op); | 207 | exec($cmd,$op); |
163 | $this->pID = (int)$op[0]; | 208 | $this->pID = (int)$op[0]; |
164 | $this->runningStart = time(); | 209 | $this->runningStart = time(); |
@@ -215,8 +260,8 @@ class ProcessClass | @@ -215,8 +260,8 @@ class ProcessClass | ||
215 | if (!chdir($this->runningPath)) | 260 | if (!chdir($this->runningPath)) |
216 | return false; | 261 | return false; |
217 | 262 | ||
218 | - //if (!$keep_log && file_exists($this->outputFile)) | ||
219 | - // unlink($this->outputFile); | 263 | + if (!$keep_log && file_exists($this->outputFile)) |
264 | + unlink($this->outputFile); | ||
220 | 265 | ||
221 | if (file_exists($this->exitCodeFile)) | 266 | if (file_exists($this->exitCodeFile)) |
222 | unlink($this->exitCodeFile); | 267 | unlink($this->exitCodeFile); |
@@ -226,7 +271,10 @@ class ProcessClass | @@ -226,7 +271,10 @@ class ProcessClass | ||
226 | 271 | ||
227 | if (file_exists($this->execTimeFile)) | 272 | if (file_exists($this->execTimeFile)) |
228 | unlink($this->execTimeFile); | 273 | unlink($this->execTimeFile); |
229 | - | 274 | + |
275 | + if (file_exists($this->errorMsgFile)) | ||
276 | + unlink($this->errorMsgFile); | ||
277 | + | ||
230 | return true; | 278 | return true; |
231 | } | 279 | } |
232 | 280 | ||
@@ -245,6 +293,7 @@ class ProcessClass | @@ -245,6 +293,7 @@ class ProcessClass | ||
245 | $this->exitCodeFile = "cmd_exitcode"; | 293 | $this->exitCodeFile = "cmd_exitcode"; |
246 | $this->processFile = "cmd_process"; | 294 | $this->processFile = "cmd_process"; |
247 | $this->execTimeFile = "cmd_exec_time"; | 295 | $this->execTimeFile = "cmd_exec_time"; |
296 | + $this->errorMsgFile = "cmd_errormsg"; | ||
248 | 297 | ||
249 | if (file_exists($this->outputFile)) | 298 | if (file_exists($this->outputFile)) |
250 | unlink($this->outputFile); | 299 | unlink($this->outputFile); |
@@ -258,12 +307,19 @@ class ProcessClass | @@ -258,12 +307,19 @@ class ProcessClass | ||
258 | if (file_exists($this->execTimeFile)) | 307 | if (file_exists($this->execTimeFile)) |
259 | unlink($this->execTimeFile); | 308 | unlink($this->execTimeFile); |
260 | 309 | ||
310 | + if (file_exists($this->errorMsgFile)) | ||
311 | + unlink($this->errorMsgFile); | ||
312 | + | ||
261 | file_put_contents($this->processFile, "#!/bin/bash".PHP_EOL); | 313 | file_put_contents($this->processFile, "#!/bin/bash".PHP_EOL); |
262 | foreach ($envArray as $key => $value) | 314 | foreach ($envArray as $key => $value) |
263 | file_put_contents($this->processFile,"export ".$key."=".$value.PHP_EOL, FILE_APPEND); | 315 | file_put_contents($this->processFile,"export ".$key."=".$value.PHP_EOL, FILE_APPEND); |
264 | file_put_contents($this->processFile, "CMD_START=`echo $(($(date +%s%N)/1000000))`".PHP_EOL, FILE_APPEND); | 316 | file_put_contents($this->processFile, "CMD_START=`echo $(($(date +%s%N)/1000000))`".PHP_EOL, FILE_APPEND); |
265 | file_put_contents($this->processFile, $this->command." > ".$this->outputFile." 2>&1".PHP_EOL, FILE_APPEND); | 317 | file_put_contents($this->processFile, $this->command." > ".$this->outputFile." 2>&1".PHP_EOL, FILE_APPEND); |
266 | - file_put_contents($this->processFile, "echo $? > ".$this->exitCodeFile.PHP_EOL, FILE_APPEND); | 318 | + file_put_contents($this->processFile, "ERROR_CODE=$?".PHP_EOL, FILE_APPEND); |
319 | + file_put_contents($this->processFile, "echo \$ERROR_CODE > ".$this->exitCodeFile.PHP_EOL, FILE_APPEND); | ||
320 | + file_put_contents($this->processFile, "if [ \$ERROR_CODE -ne 0 ] && [ \"".$this->getErrorMsgCmd."\" != \"\" ]; then".PHP_EOL, FILE_APPEND); | ||
321 | + file_put_contents($this->processFile, " ".$this->getErrorMsgCmd." > ".$this->errorMsgFile.PHP_EOL, FILE_APPEND); | ||
322 | + file_put_contents($this->processFile, "fi;".PHP_EOL, FILE_APPEND); | ||
267 | file_put_contents($this->processFile, "CMD_STOP=`echo $(($(date +%s%N)/1000000))`".PHP_EOL, FILE_APPEND); | 323 | file_put_contents($this->processFile, "CMD_STOP=`echo $(($(date +%s%N)/1000000))`".PHP_EOL, FILE_APPEND); |
268 | file_put_contents($this->processFile, "echo $((\$CMD_STOP-\$CMD_START)) > ".$this->execTimeFile.PHP_EOL, FILE_APPEND); | 324 | file_put_contents($this->processFile, "echo $((\$CMD_STOP-\$CMD_START)) > ".$this->execTimeFile.PHP_EOL, FILE_APPEND); |
269 | if ($this->postProcessCmd != "") | 325 | if ($this->postProcessCmd != "") |
src/Request/ProcessRequestImpl/Process/ProcessManagerClass.php
@@ -19,9 +19,9 @@ class ProcessManagerClass | @@ -19,9 +19,9 @@ class ProcessManagerClass | ||
19 | /* | 19 | /* |
20 | * @brief Run a process | 20 | * @brief Run a process |
21 | */ | 21 | */ |
22 | - public function runProcess($cmd, $runningPath, $envArray, $postProcessCmd, $batchEnabled) | 22 | + public function runProcess($cmd, $runningPath, $envArray, $postProcessCmd, $getErrorMsgCmd, $batchEnabled) |
23 | { | 23 | { |
24 | - $process = new ProcessClass($cmd, $postProcessCmd); | 24 | + $process = new ProcessClass($cmd, $postProcessCmd, $getErrorMsgCmd); |
25 | 25 | ||
26 | if (!$process->run($runningPath, $envArray)) | 26 | if (!$process->run($runningPath, $envArray)) |
27 | return array("success" => false, "message" => "Cannot run the process"); | 27 | return array("success" => false, "message" => "Cannot run the process"); |
@@ -159,8 +159,10 @@ class ProcessManagerClass | @@ -159,8 +159,10 @@ class ProcessManagerClass | ||
159 | $this->updateProcessStatusToNode($dom,$processNode,"exitcodefile",$process->getExitCodeFile()); | 159 | $this->updateProcessStatusToNode($dom,$processNode,"exitcodefile",$process->getExitCodeFile()); |
160 | $this->updateProcessStatusToNode($dom,$processNode,"processfile",$process->getProcessFile()); | 160 | $this->updateProcessStatusToNode($dom,$processNode,"processfile",$process->getProcessFile()); |
161 | $this->updateProcessStatusToNode($dom,$processNode,"exectimefile",$process->getExecTimeFile()); | 161 | $this->updateProcessStatusToNode($dom,$processNode,"exectimefile",$process->getExecTimeFile()); |
162 | + $this->updateProcessStatusToNode($dom,$processNode,"errormsgfile",$process->getErrorMsgFile()); | ||
162 | $this->updateProcessStatusToNode($dom,$processNode,"exitcode",$process->getExitCode()); | 163 | $this->updateProcessStatusToNode($dom,$processNode,"exitcode",$process->getExitCode()); |
163 | $this->updateProcessStatusToNode($dom,$processNode,"exectime",$process->getExecTime()); | 164 | $this->updateProcessStatusToNode($dom,$processNode,"exectime",$process->getExecTime()); |
165 | + $this->updateProcessStatusToNode($dom,$processNode,"errormsg",$process->getErrorMsg()); | ||
164 | $this->updateProcessStatusToNode($dom,$processNode,"PID",$process->getPID()); | 166 | $this->updateProcessStatusToNode($dom,$processNode,"PID",$process->getPID()); |
165 | $this->updateProcessStatusToNode($dom,$processNode,"runningpath",$process->getRunningPath()); | 167 | $this->updateProcessStatusToNode($dom,$processNode,"runningpath",$process->getRunningPath()); |
166 | $this->updateProcessStatusToNode($dom,$processNode,"runningstart",$process->getRunningStart()); | 168 | $this->updateProcessStatusToNode($dom,$processNode,"runningstart",$process->getRunningStart()); |
@@ -180,8 +182,10 @@ class ProcessManagerClass | @@ -180,8 +182,10 @@ class ProcessManagerClass | ||
180 | "exitcodefile" => $this->getNodeValueFromNode($processNode, "exitcodefile"), | 182 | "exitcodefile" => $this->getNodeValueFromNode($processNode, "exitcodefile"), |
181 | "processfile" => $this->getNodeValueFromNode($processNode, "processfile"), | 183 | "processfile" => $this->getNodeValueFromNode($processNode, "processfile"), |
182 | "exectimefile" => $this->getNodeValueFromNode($processNode, "exectimefile"), | 184 | "exectimefile" => $this->getNodeValueFromNode($processNode, "exectimefile"), |
185 | + "errormsgfile" => $this->getNodeValueFromNode($processNode, "errormsgfile"), | ||
183 | "exitcode" => $this->getNodeValueFromNode($processNode, "exitcode"), | 186 | "exitcode" => $this->getNodeValueFromNode($processNode, "exitcode"), |
184 | "exectime" => $this->getNodeValueFromNode($processNode, "exectime"), | 187 | "exectime" => $this->getNodeValueFromNode($processNode, "exectime"), |
188 | + "errormsg" => $this->getNodeValueFromNode($processNode, "errormsg"), | ||
185 | "PID" => $this->getNodeValueFromNode($processNode, "PID"), | 189 | "PID" => $this->getNodeValueFromNode($processNode, "PID"), |
186 | "runningpath" => $this->getNodeValueFromNode($processNode, "runningpath"), | 190 | "runningpath" => $this->getNodeValueFromNode($processNode, "runningpath"), |
187 | "runningstart" => $this->getNodeValueFromNode($processNode, "runningstart"), | 191 | "runningstart" => $this->getNodeValueFromNode($processNode, "runningstart"), |
@@ -239,10 +243,11 @@ class ProcessManagerClass | @@ -239,10 +243,11 @@ class ProcessManagerClass | ||
239 | $processFile = $processInfo["processfile"]; | 243 | $processFile = $processInfo["processfile"]; |
240 | $exitCodeFile = $processInfo["exitcodefile"]; | 244 | $exitCodeFile = $processInfo["exitcodefile"]; |
241 | $execTimeFile = $processInfo["exectimefile"]; | 245 | $execTimeFile = $processInfo["exectimefile"]; |
246 | + $errorMsgFile = isset($processInfo["errormsgfile"]) ? $processInfo["errormsgfile"] : ""; | ||
242 | $pid = $processInfo["PID"]; | 247 | $pid = $processInfo["PID"]; |
243 | $runningPath = $processInfo["runningpath"]; | 248 | $runningPath = $processInfo["runningpath"]; |
244 | $runningStart = $processInfo["runningstart"]; | 249 | $runningStart = $processInfo["runningstart"]; |
245 | - $process->init($outputFile, $exitCodeFile, $processFile, $execTimeFile, $pid, $runningPath, $runningStart); | 250 | + $process->init($outputFile, $exitCodeFile, $processFile, $execTimeFile, $errorMsgFile, $pid, $runningPath, $runningStart); |
246 | return $process; | 251 | return $process; |
247 | } | 252 | } |
248 | 253 |
src/Request/ProcessRequestImpl/ProcessRequestClass.php
@@ -32,6 +32,8 @@ class ProcessRequestClass extends RequestAbstractClass | @@ -32,6 +32,8 @@ class ProcessRequestClass extends RequestAbstractClass | ||
32 | } | 32 | } |
33 | } | 33 | } |
34 | 34 | ||
35 | + $this->requestData->setGetErrorMsgCmd(KernelConfigClass::getKernelBinPath()."amdaGetErrorMsg \$ERROR_CODE"); | ||
36 | + | ||
35 | return true; | 37 | return true; |
36 | } | 38 | } |
37 | 39 | ||
@@ -90,6 +92,9 @@ class ProcessRequestClass extends RequestAbstractClass | @@ -90,6 +92,9 @@ class ProcessRequestClass extends RequestAbstractClass | ||
90 | else | 92 | else |
91 | $this->requestData->setStatus(ProcessStatusEnumClass::DONE); | 93 | $this->requestData->setStatus(ProcessStatusEnumClass::DONE); |
92 | $this->requestData->setErrorCode($processInfo['exitcode']); | 94 | $this->requestData->setErrorCode($processInfo['exitcode']); |
95 | + if (!empty($processInfo['exitcode'])) { | ||
96 | + $this->requestData->setErrorMsg($processInfo['errormsg']); | ||
97 | + } | ||
93 | $this->requestData->setExecTime($processInfo['exectime']); | 98 | $this->requestData->setExecTime($processInfo['exectime']); |
94 | $processMgr->deleteProcess($processInfo['id'], $result['success']); | 99 | $processMgr->deleteProcess($processInfo['id'], $result['success']); |
95 | } | 100 | } |
@@ -121,6 +126,7 @@ class ProcessRequestClass extends RequestAbstractClass | @@ -121,6 +126,7 @@ class ProcessRequestClass extends RequestAbstractClass | ||
121 | $this->requestData->getWorkingPath(), | 126 | $this->requestData->getWorkingPath(), |
122 | $this->requestData->getEnvVars(), | 127 | $this->requestData->getEnvVars(), |
123 | $this->requestData->getPostCmd(), | 128 | $this->requestData->getPostCmd(), |
129 | + $this->requestData->getGetErrorMsgCmd(), | ||
124 | $this->requestData->getBatchEnable()); | 130 | $this->requestData->getBatchEnable()); |
125 | if ($result['success']) { | 131 | if ($result['success']) { |
126 | $return_code = TRUE; | 132 | $return_code = TRUE; |
src/Request/ProcessRequestImpl/ProcessRequestDataClass.php
@@ -40,11 +40,13 @@ class ProcessRequestDataClass extends RequestDataClass | @@ -40,11 +40,13 @@ class ProcessRequestDataClass extends RequestDataClass | ||
40 | private $cmd = ""; | 40 | private $cmd = ""; |
41 | private $envVars = array(); | 41 | private $envVars = array(); |
42 | private $postCmd = ""; | 42 | private $postCmd = ""; |
43 | + private $getErrorMsgCmd = ""; | ||
43 | private $id = ""; | 44 | private $id = ""; |
44 | private $type = ProcessTypeEnumClass::UNKNOWN; | 45 | private $type = ProcessTypeEnumClass::UNKNOWN; |
45 | private $batchEnable = true; | 46 | private $batchEnable = true; |
46 | private $status = ProcessStatusEnumClass::UNKNOWN; | 47 | private $status = ProcessStatusEnumClass::UNKNOWN; |
47 | private $exitCode = 0; | 48 | private $exitCode = 0; |
49 | + private $errorMsg = ""; | ||
48 | private $execTime = 0; | 50 | private $execTime = 0; |
49 | private $start = 0; | 51 | private $start = 0; |
50 | private $runningPath = ""; | 52 | private $runningPath = ""; |
@@ -99,6 +101,16 @@ class ProcessRequestDataClass extends RequestDataClass | @@ -99,6 +101,16 @@ class ProcessRequestDataClass extends RequestDataClass | ||
99 | $this->postCmd = $postCmd; | 101 | $this->postCmd = $postCmd; |
100 | } | 102 | } |
101 | 103 | ||
104 | + public function getGetErrorMsgCmd() | ||
105 | + { | ||
106 | + return $this->getErrorMsgCmd; | ||
107 | + } | ||
108 | + | ||
109 | + public function setGetErrorMsgCmd($getErrorMsgCmd) | ||
110 | + { | ||
111 | + $this->getErrorMsgCmd = $getErrorMsgCmd; | ||
112 | + } | ||
113 | + | ||
102 | public function getId() | 114 | public function getId() |
103 | { | 115 | { |
104 | return $this->id; | 116 | return $this->id; |
@@ -169,6 +181,16 @@ class ProcessRequestDataClass extends RequestDataClass | @@ -169,6 +181,16 @@ class ProcessRequestDataClass extends RequestDataClass | ||
169 | $this->exitCode = $errorCode; | 181 | $this->exitCode = $errorCode; |
170 | } | 182 | } |
171 | 183 | ||
184 | + public function getErrorMsg() | ||
185 | + { | ||
186 | + return $this->errorMsg; | ||
187 | + } | ||
188 | + | ||
189 | + public function setErrorMsg($errorMsg) | ||
190 | + { | ||
191 | + $this->errorMsg = $errorMsg; | ||
192 | + } | ||
193 | + | ||
172 | public function getExecTime() | 194 | public function getExecTime() |
173 | { | 195 | { |
174 | return $this->execTime; | 196 | return $this->execTime; |
src/Request/TTRequestImpl/TTRequestDataClass.php
@@ -33,6 +33,7 @@ class TTRequestDataClass extends RequestDataClass | @@ -33,6 +33,7 @@ class TTRequestDataClass extends RequestDataClass | ||
33 | private $cmd = ""; | 33 | private $cmd = ""; |
34 | private $envVars = array(); | 34 | private $envVars = array(); |
35 | private $exitCode = 0; | 35 | private $exitCode = 0; |
36 | + private $sendToSamp = FALSE; | ||
36 | 37 | ||
37 | public function getInputFileName() | 38 | public function getInputFileName() |
38 | { | 39 | { |
@@ -83,6 +84,16 @@ class TTRequestDataClass extends RequestDataClass | @@ -83,6 +84,16 @@ class TTRequestDataClass extends RequestDataClass | ||
83 | { | 84 | { |
84 | $this->outputDir = $outputDir; | 85 | $this->outputDir = $outputDir; |
85 | } | 86 | } |
87 | + | ||
88 | + public function setSendToSamp($sendToSamp) | ||
89 | + { | ||
90 | + $this->sendToSamp = $sendToSamp; | ||
91 | + } | ||
92 | + | ||
93 | + public function getSendToSamp($sendToSamp) | ||
94 | + { | ||
95 | + return $this->sendToSamp; | ||
96 | + } | ||
86 | 97 | ||
87 | public function getCmd() | 98 | public function getCmd() |
88 | { | 99 | { |
@@ -126,4 +137,4 @@ class TTRequestDataClass extends RequestDataClass | @@ -126,4 +137,4 @@ class TTRequestDataClass extends RequestDataClass | ||
126 | } | 137 | } |
127 | } | 138 | } |
128 | 139 | ||
129 | -?> | ||
130 | \ No newline at end of file | 140 | \ No newline at end of file |
141 | +?> |