Blame view

src/InputOutput/IHMImpl/Params/DataMiningImpl/IHMInputOutputParamsDataMiningClass.php 2.31 KB
22521f1c   Benjamin Renard   First commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php

define ("DATAMINING_RESULT_FILE_KEY","datamining");

/**
 * @class IHMInputOutputParamsDataMiningClass
 * @brief Implementation of IHMInputOutputParamsAbstractClass to treat data mining request
 * @details
*/
class IHMInputOutputParamsDataMiningClass extends IHMInputOutputParamsAbstractClass
{
	/*
	 * @brief method to unmarshall a data mining request
	*/
	protected function unmarshallRequest($input)
	{
		/*	'{"id":"cond_2","name":"us44_test1","sampling":600,"gap":5,"description":"","expression":"dst>0","timesrc":"Interval","startDate":"2008-01-31T00:00:00","stopDate":"2008-02-01T00:00:00","durationDay":"0001","durationHour":"00","durationMin":"00","durationSec":"00","leaf":true,"nodeType":"condition"}'
		 */

		$paramsNode = $this->paramsData->getRequestNode()->getParamsNode();

		//unmarshall time definition
		$this->unmarshallTimeDefinition($input);

		//unmarshall data mining output definition
		$outputsNode = $this->paramsData->getRequestNode()->getOutputsNode();
		$dataMiningNode = $outputsNode->addNewOutput(RequestOutputTypeEnum::DATAMINING);

		$dataMiningNode->setTimeFormat(RequestOutputDataMiningTimeFormatEnum::ISO);

		$dataMiningNode->setFileFormat(RequestOutputDataMiningFileFormatEnum::XML);

		//parse expression
		$expressionInfo = $this->expressionParser->parse($input->expression);
		$paramId = "datamining_".md5($expressionInfo["expression"]);

		//create a derived param for the expression
		$this->paramManager->addProcessParam($paramId, $expressionInfo["expression"],
				$expressionInfo['params'], $input->sampling,
				$input->gap,$this->paramsData);
			
		//add derived param to output
		$paramsNode->addParam($paramId);
		$dataMiningNode->setParam($paramId);

		$resultFile = "result_".$this->requestID;
		$this->paramsData->addWaitingResult(DATAMINING_RESULT_FILE_KEY, $resultFile);

		$postProcessCmd  = "mv timeTable_datamining_*.xml ".$resultFile.".xml";
		$postProcessCmd .= " && ";
		$postProcessCmd .= "mv Gaps_timeTable_datamining_*.xml Gaps_".$resultFile.".xml";

		$this->paramsData->setPostCmd($postProcessCmd);

		return $this->paramsData;
	}

	/*
	 * @brief method to marshall the result of a data mining request
	*/
	protected function marshallResult($data)
	{
		return $this->commonMarshallResult($data,DATAMINING_RESULT_FILE_KEY);
	}
}
?>