Blame view

src/InputOutput/IHMImpl/IHMInputOutputClass.php 3.69 KB
d5a86709   Elena.Budnik   interim 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php

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

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

	/*
	 * @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::PROCESSGETREQUEST :
				$this->inputOutput = new IHMInputOutputGetProcessRequestClass();
				break;
				/*case FunctionTypeEnumClass::TTMERGE :
				 $this->inputOutput = new IHMInputOutputMergeTTClass();
				break;
				case FunctionTypeEnumClass::TTUNION :
				$this->inputOutput = new IHMInputOutputUnionTTClass();
				break;*/
			case FunctionTypeEnumClass::TTCONVERT :
				$this->inputOutput = new IHMInputOutputTTClass();
				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);
	}
}

?>