IHMInputOutputParamsDataMiningClass.php 2.59 KB
<?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","durationMs":"000","leaf":true,"nodeType":"condition"}'
		 */

		$requestNode = $this->paramsData->addRequestNode(0);
		$paramsNode = $requestNode->getParamsNode();

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

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

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

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

		//parse expression
		$expressionInfo = $this->paramManager->parseExpression($input->expression, $this->paramsData->getWorkingPath());
		if (!$expressionInfo['success']) {
			throw new Exception($expressionInfo['message']);
		}

		$paramId = "datamining_".md5($expressionInfo["expression"]);

		//create a derived param for the expression
		$this->paramManager->addProcessParam($paramId, $expressionInfo["expression"], $input->expression,
				$expressionInfo['params'], $input->sampling_mode, $input->sampling, $input->reference_param,
			$input->gap,
			time(),
			"",
			"",
			"",
			$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);
	}
}
?>