ParamsRequestDataClass.php 7.32 KB
<?php

/**
 * @class ParamsRequestTypeEnumClass
 * @brief Enumerate for request type
 * @details
 */
abstract class ParamsRequestTypeEnumClass
{
	const UNKNOWN = "";
	const XMLREQUEST = "XMLREQUEST";
	const PARAMGEN   = "PARAMGEN";
	const PARAMSINFOGEN   = "PARAMSINFOGEN";
}

/**
 * @class ParamsRequestDataClass
 * @brief Data for a params request. Inherits from ProcessRequestDataClass
 * @details
 */
class ParamsRequestDataClass extends ProcessRequestDataClass
{
	private $requestType           = ParamsRequestTypeEnumClass::XMLREQUEST;
	private $requestNodes          = array();
	private $compilationPath       = "";
	private $localBasePath         = "";
	private $waitingResults        = array();
	private $processParamsToCreate = array();
	private $localParamsToCreate   = array();
	private $localParamsToCreateAndCopy   = array();
	private $paramTimeRestriction  = array();
	private $paramsToCopy          = array();
	private $paramId               = "";
	private $datasetId             = array();
	private $task                  = "";

	function __construct()
	{
		parent::__construct();
	}

	public function getCompilationPath()
	{
		return $this->compilationPath;
	}

	public function setCompilationPath($compilationPath)
	{
		$this->compilationPath = $compilationPath;
	}
	
	public function getLocalBasePath()
	{
		return $this->localBasePath;
	}
	
	public function setLocalBasePath($localBasePath)
	{
		$this->localBasePath = $localBasePath;
	}

	public function getRequestType()
	{
		return $this->requestType;
	}
	
	public function setRequestType($requestType)
	{
		$this->requestType = $requestType;
	}
	
	public function getTask()
	{
		return $this->task;
	}
	
	public function setTask($task)
	{
		$this->task = $task;
	}

	public function addRequestNode($request_index)
	{
		$newRequestNode = new RequestNodeClass();
		$this->requestNodes[$request_index] = $newRequestNode;
		return $newRequestNode;
	}
	
	public function getRequestNodes()
	{
		return $this->requestNodes;
	}

	public function getWaitingResults()
	{
		return $this->waitingResults;
	}
	
	public function getWaitingResult($key)
	{
		return $this->waitingResults[$key];
	}

	public function addWaitingResult($key, $result)
	{
		$this->waitingResults[$key] = $result;
	}

	public function getParamId()
	{
		return $this->paramId;
	}
	
	public function setParamId($paramId)
	{
		$this->paramId = $paramId;
	}
	
	public function getParamsToCopy()
	{
		return $this->paramsToCopy;
	}

	public function addParamToCopy($paramId,$paramFilePath)
	{
		$this->paramsToCopy[$paramId] = $paramFilePath;
	}

	public function getProcessParamsToCreate()
	{
		return $this->processParamsToCreate;
	}
	
	public function getDatasetForStat()
	{
		return $this->datasetId;
	}
	
	public function addDatasetForStat($dsId)
	{
		$this->datasetId[] = $dsId;
	}
	
	public function addProcessParamToCreate($paramId, $expression, $expression_info, $getParams, $sampling_mode, $sampling_step, $ref_param, $gap, $dateModif, $units, $ytitle, $status)
	{
		$newParam = new ParamNodeClass();
		$newParam->setId($paramId);
		if (!empty($units)) {
			$newParam->getInfo()->setUnits($units);
		}
		if (!empty($ytitle)) {
			$newParam->getInfo()->setShortName($ytitle);
		}
		else {
			$newParam->getInfo()->setShortName($paramId);
		}
		if (!empty($status)) {
			foreach ($status as $def) {
				$newParam->getInfo()->addStatus($def["min"], $def["max"], $def["name"], $def["color"]);
			}
		}
		switch ($sampling_mode) {
			case 'refparam':
				$newParam->setReferenceParameter($ref_param);
				$amdaParamNode = $newParam->addParamGet(ParamGetTypeEnum::AMDAPARAM);
				$amdaParamNode->setParamName($ref_param);
				break;
			default:
				$newParam->setSampling($sampling_step);
				if (isset($gap) && ($gap > 0))
					$newParam->setGap($gap);
				break;
		}
		foreach ($getParams as $getParam)
		{
			$amdaParamNode = $newParam->addParamGet(ParamGetTypeEnum::AMDAPARAM);
			if (array_key_exists('template_args', $getParam))
				$amdaParamNode->setParamName($getParam['fullparamid']);
			else
				$amdaParamNode->setParamName($getParam['paramid']);
		}
		$newParam->setProcess($expression, $expression_info, true);
		$newParam->setOutput();

		$this->processParamsToCreate[$paramId] = array('param' => $newParam, 'dateModif' => $dateModif);
	}

	public function addTTCatParamToCreate($paramId, $ttCatFilePath, $isShared, $dateModif, $units, $ytitle, $status, $flag = "")
	{
		$newParam = new ParamNodeClass();
		$newParam->setId($paramId);
		if (!empty($units)) {
			$newParam->getInfo()->setUnits($units);
		}
		if (!empty($ytitle)) {
			$newParam->getInfo()->setShortName($ytitle);
		}
		else {
			$newParam->getInfo()->setShortName($paramId);
		}
		if (!empty($status)) {
			foreach ($status as $def) {
				$newParam->getInfo()->addStatus($def["min"], $def["max"], $def["name"], $def["color"]);
			}
		}
		$constantGetNode = $newParam->addParamGet(ParamGetTypeEnum::CONSTANT);
		$constantParamNode = $constantGetNode->addConstant();
		$constantParamNode->setSampling(1);
		$process = "#ttcat_to_param(\$constant_1_".$constantParamNode->getType()."_";
		$process .= $constantParamNode->getConstValue()."_".$constantParamNode->getDim1()."_".$constantParamNode->getDim2().";".$ttCatFilePath;
		if (!empty($flag)) {
			$process .= ";".$flag;
		}
		$process .= ")";
		$newParam->setProcess($process, "Transform Time Table or Catalog to a parameter", !$isShared);
		$newParam->setOutput();

		$this->processParamsToCreate[$paramId] = array('param' => $newParam, 'dateModif' => $dateModif);
	}
	
	public function getLocalParamsToCreate()
	{
		return $this->localParamsToCreate;
	}
	
	public function getLocalParamsToCreateAndCopy()
	{
		return $this->localParamsToCreateAndCopy;
	}	
	
	public function addLocalParamToCreate($paramId, $viId, $realVarId, $minSampling, $maxSampling, $type, $size, $fillValue, $dateModif, $status, $isImpex = false)
	{
		$newParam = new ParamNodeClass();
		$newParam->setId($paramId);
		
		$infoNode = $newParam->getInfo();
                if (isset($fillValue)) {
                    $infoNode->setFillVal($fillValue);
                }
		
		$localParamNode = $newParam->addParamGet(ParamGetTypeEnum::LOCALBASE);
		$localParamNode->setVIId($viId);
		
		$localParamNode->addLocalParam($realVarId, $minSampling, $maxSampling, $type, $size);
		
		$newParam->setProcess("","");
		$newParam->setOutput();

		if (!empty($status)) {
			foreach ($status as $def) {
				$newParam->getInfo()->addStatus($def["min"], $def["max"], $def["name"], $def["color"]);
			}
		}
		
		if ($isImpex) 
		{			
			$this->localParamsToCreateAndCopy[$paramId] = array('param' => $newParam, 'dateModif' => $dateModif);
		}
		else
		{
			$this->localParamsToCreate[$paramId] = array('param' => $newParam, 'dateModif' => $dateModif);
		}
		
		return $newParam;
	}

	public function addParamTimeRestriction($paramId, $timeRestriction)
	{
		if (array_key_exists($paramId, $this->paramTimeRestriction)) {
			if (strtotime($timeRestriction) > strtotime($this->paramTimeRestriction[$paramId])) {
				return;
			}
		}
		$this->paramTimeRestriction[$paramId] = $timeRestriction;
	}

	public function getParamsTimeRestrictions()
	{
		return $this->paramTimeRestriction;
	}
}

?>