From 01ff2cc669e89577fd72f3cc918f8ad2a28311c1 Mon Sep 17 00:00:00 2001
From: elena <ebudnik@irap.omp.eu>
Date: Thu, 23 Jul 2015 19:14:30 +0200
Subject: [PATCH] catalog draft

---
 src/InputOutput/IHMImpl/IHMInputOutputClass.php                                       |  4 ++--
 src/InputOutput/IHMImpl/Params/StatisticsImpl/IHMInputOutputParamsStatisticsClass.php | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/InputOutput/IHMImpl/Tools/IHMJobsManagerClass.php                                 | 10 ++++++++--
 src/RequestManager.php                                                                |  2 +-
 4 files changed, 73 insertions(+), 5 deletions(-)
 create mode 100644 src/InputOutput/IHMImpl/Params/StatisticsImpl/IHMInputOutputParamsStatisticsClass.php

diff --git a/src/InputOutput/IHMImpl/IHMInputOutputClass.php b/src/InputOutput/IHMImpl/IHMInputOutputClass.php
index 54db80a..ff55566 100644
--- a/src/InputOutput/IHMImpl/IHMInputOutputClass.php
+++ b/src/InputOutput/IHMImpl/IHMInputOutputClass.php
@@ -48,9 +48,9 @@ class IHMInputOutputClass implements InputOutputInterface
 						if (($input->format == "PNG") && ($input->tabId != ""))
 							$requestId = "Plot".$input->tabId;
 						break;
-					case 'catalog' :
+					case 'statistics' :
 						//catalog generation
-						$this->inputOutput = new IHMInputOutputParamsCatalogClass();
+						$this->inputOutput = new IHMInputOutputParamsStatisticsClass();
 						break;	
 					default :
 						throw new Exception('Params request type '.$input_request->nodeType.' not implemented for this client.');
diff --git a/src/InputOutput/IHMImpl/Params/StatisticsImpl/IHMInputOutputParamsStatisticsClass.php b/src/InputOutput/IHMImpl/Params/StatisticsImpl/IHMInputOutputParamsStatisticsClass.php
new file mode 100644
index 0000000..c6177ce
--- /dev/null
+++ b/src/InputOutput/IHMImpl/Params/StatisticsImpl/IHMInputOutputParamsStatisticsClass.php
@@ -0,0 +1,62 @@
+<?php
+
+define ("STATISTICS_RESULT_FILE_KEY", "statistic");
+
+/**
+ * @class IHMInputOutputParamsStatisticsClass
+ * @brief Implementation of IHMInputOutputParamsAbstractClass to treat catalog generation request
+ * @details
+*/
+class IHMInputOutputParamsStatisticsClass extends IHMInputOutputParamsAbstractClass
+{
+	/*
+	 * @brief method to unmarshall a catalog generation request
+	*/
+	protected function unmarshallRequest($input)
+	{
+		/*
+		   {"id":"","timesrc":"TimeTable","name":"test","created":null,"description":"first","objName":"","objFormat":"","folderId":"","nbIntervals":0,"cacheToken":"","parameter":[{"param":"imf_gsm","function":"min"},{"param":"imf_mag","function":"max"}],"timeTables":[{"id":"sharedtt_26"},{"id":"sharedtt_27"}],"leaf":true,"nodeType":"catalog"}]'
+		 */
+		$paramsNode = $this->paramsData->getRequestNode()->getParamsNode();
+
+		//unmarshall time definition
+		$this->unmarshallTimeDefinition($input);
+
+		//unmarshall statistic output definition
+		$outputsNode = $this->paramsData->getRequestNode()->getOutputsNode();
+		$catalogNode = $outputsNode->addNewOutput(RequestOutputTypeEnum::STATISTIC);
+		$catalogNode->setTimeFormat(RequestOutputStatisticTimeFormatEnum::ISO);
+		$catalogNode->setFileFormat(RequestOutputStatisticFileFormatEnum::XML);
+		
+		// parse parameters / functions array                       
+                foreach ($input->parameter as $obj) { 
+                   $paramFunctionAssociation[$obj->param][] = $obj->function;                
+                }
+                
+                foreach ($paramFunctionAssociation as $param => $functions) {
+                     $paramsNode->addParam($param);
+                     $outputParamNode = $catalogNode->addParam($param);
+                     foreach ($functions as $function) $outputParamNode->addFunction($function);
+                     $paramInfo = $this->paramManager->addExistingParam($param,$this->paramsData);
+                } 
+
+ 		$resultFile = "result_".$this->requestID;
+		$this->paramsData->addWaitingResult(STATISTICS_RESULT_FILE_KEY, $resultFile);
+// 
+		$postProcessCmd  = "mv statistic-*";
+		$postProcessCmd .= " ".$resultFile.".xml";
+ 
+// 
+		$this->paramsData->setPostCmd($postProcessCmd);
+ 		return $this->paramsData;
+	}
+
+	/*
+	 * @brief method to marshall the result of a catalog generation request
+	*/
+	protected function marshallResult($data)
+	{
+		return $this->commonMarshallResult($data,STATISTICS_RESULT_FILE_KEY);
+	}
+}
+?>
\ No newline at end of file
diff --git a/src/InputOutput/IHMImpl/Tools/IHMJobsManagerClass.php b/src/InputOutput/IHMImpl/Tools/IHMJobsManagerClass.php
index da27706..c586ce1 100644
--- a/src/InputOutput/IHMImpl/Tools/IHMJobsManagerClass.php
+++ b/src/InputOutput/IHMImpl/Tools/IHMJobsManagerClass.php
@@ -10,11 +10,13 @@ class IHMJobsManagerClass {
 
 	protected $bkgRootNode = array('condition' => 'bkgSearch-treeRootNode',
 			'request' => 'bkgPlot-treeRootNode',
-			'download' => 'bkgDown-treeRootNode');
+			'download' => 'bkgDown-treeRootNode',
+			'statistics' => 'bkgStatistics-treeRootNode');
 
 	protected $resRootNode = array('condition' => 'resSearch-treeRootNode',
 			'request' => 'resPlot-treeRootNode',
-			'download' => 'resDown-treeRootNode');
+			'download' => 'resDown-treeRootNode',
+			'statistics' => 'resStatistics-treeRootNode');
 
 	/*
 	 * @brief Constructor
@@ -259,6 +261,10 @@ class IHMJobsManagerClass {
 				$name = 'datamining_'.time();
 				$info = $obj->expression;
 				break;
+			case 'statistics' :
+				$name = 'statistics_'.time();
+				$info = $obj->expression;
+				break;
 			case 'download' :
 				if ($obj->downloadSrc == '2') //fits image
 					$name = "download_fits_".time();
diff --git a/src/RequestManager.php b/src/RequestManager.php
index 081c182..c531663 100644
--- a/src/RequestManager.php
+++ b/src/RequestManager.php
@@ -9,7 +9,7 @@ function amdaintegration_autoload($class_name)
 			'InputOutput/IHMImpl/Config',
 			'InputOutput/IHMImpl/Params',
 			'InputOutput/IHMImpl/Params/DataMiningImpl',
-			'InputOutput/IHMImpl/Params/CatalogImpl',
+			'InputOutput/IHMImpl/Params/StatisticsImpl',
 			'InputOutput/IHMImpl/Params/DownloadImpl',
 			'InputOutput/IHMImpl/Params/PlotImpl',
 			'InputOutput/IHMImpl/Params/GeneratorImpl',
--
libgit2 0.21.2