IHMInputOutputClass.php 3.52 KB
<?php

/**
 * @class IHMInputOutputClass
 * @brief Class that's implement an InputOutputInterface for AMDA IHM client.
 * @details
 */
class IHMInputOutputClass implements InputOutputInterface
{
	private $inputOutput = null;

	/*
	 * @brief Constructor
	*/
	function __construct($userName)
	{
		IHMConfigClass::setUserName($userName);
	}

	/*
	 * @brief translate input data from AMDA IHM to AMDA_Integration module
	*/
	public function getInputData($input,$function,$requestId = "")
	{
		//check user workspace
		if (IHMConfigClass::getUserName() == "" || !is_dir(IHMConfigClass::getUserPath()))
			throw new Exception('Cannot find user workspace.');

		switch ($function)
		{
			case FunctionTypeEnumClass::PARAMS :
				switch ($input->nodeType)
				{
					case 'download' :
						//download data
						if ($input->downloadSrc != "0")
							throw new Exception('Download source '.$input->downloadSrc.' not implemented for this client.');
						$this->inputOutput = new IHMInputOutputParamsDownloadClass();
						break;
					case 'condition' :
						//data mining
						$this->inputOutput = new IHMInputOutputParamsDataMiningClass();
						break;
					case 'request' :
						//plot
						if (($input->{"file-format"} == "PNG") && ($input->{"file-output"} == "INTERACTIVE"))
						{
							//set working dir for interactive plot
							$requestId = "Plot";
						}
						$this->inputOutput = new IHMInputOutputParamsPlotClass();
						break;
					case 'statistics' :
						//catalog generation
						$this->inputOutput = new IHMInputOutputParamsStatisticsClass();
						break;
					case 'killplot' :
						$requestId = "Plot";
						$this->inputOutput = new IHMInputOutputParamsKillPlotClass();
						break;
					default :
						throw new Exception('Params request type '.$input_request->nodeType.' not implemented for this client.');
				}
				break;
			case FunctionTypeEnumClass::PARAMSGEN :
				$this->inputOutput = new IHMInputOutputParamsGeneratorClass();
				$requestId = "ParamGen";
				break;
			case FunctionTypeEnumClass::ACTION :
				$this->inputOutput = new IHMInputOutputParamsPlotClass();
				$requestId = "Plot";
				break;
			case FunctionTypeEnumClass::PROCESSDELETE :
				$this->inputOutput = new IHMInputOutputDeleteProcessClass();
				break;
			case FunctionTypeEnumClass::PROCESSRUNNINGINFO :
				$this->inputOutput = new IHMInputOutputRunningInfoProcessClass();
				break;
			case FunctionTypeEnumClass::PROCESSGETINFO :
				$this->inputOutput = new IHMInputOutputGetInfoProcessClass();
				break;
			case FunctionTypeEnumClass::PROCESSCLEAN :
				$this->inputOutput = new IHMInputOutputCleanProcessClass();
				break;
				/*case FunctionTypeEnumClass::TTMERGE :
				 $this->inputOutput = new IHMInputOutputMergeTTClass();
				break;
				case FunctionTypeEnumClass::TTUNION :
				$this->inputOutput = new IHMInputOutputUnionTTClass();
				break;*/
			case FunctionTypeEnumClass::PARAMINFO :
				$this->inputOutput = new IHMInputOutputParamInfoClass();
				break;
			default :
				throw new Exception('Request type '.$function.' not implemented for this client.');
		}

		return $this->inputOutput->getInputData($input,$function,$requestId);
	}

	/*
	 * @brief translate output data from AMDA_Integration module to AMDA IHM
	*/
	public function getOutput($data)
	{
		if (!isset($this->inputOutput))
			return array("success" => false, "message" => "Input Output Interface not initialized for this request");

		return $this->inputOutput->getOutput($data);
	}
}

?>