Blame view

src/Request/ParamInfoRequestClass.php 4.67 KB
966bd5f8   Benjamin Renard   Add request to ge...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php 
/**
 * @class ParamInfoRequestClass
 * @brief Implementation of a ParamInfoRequestClass for a param info request
 * @details
 */
class ParamInfoRequestClass extends RequestAbstractClass
{
	/*
	 * @brief Init a param info request
	*/
	public function init()
	{
		if (!isset($this->requestData))
			return false;
		
ffc5cb81   Elena.Budnik   temporary commit
17
18
		if ($this->requestData->getType() == ParamInfoTypeEnumClass::PLOTINIT
			|| $this->requestData->getType() == ParamInfoTypeEnumClass::IMPEXPLOTINIT) {
f28f7c0e   Benjamin Renard   Add param info re...
19
20
21
22
			//Force load of node files to init the NodeFactory
			foreach (glob(dirname(__FILE__)."/ParamsRequestImpl/Nodes/Requests/*NodeClass.php") as $filename) {
				require_once $filename;
			}
966bd5f8   Benjamin Renard   Add request to ge...
23
24
25
26
27
28
29
30
31
32
		}
		
		return TRUE;
	}
	
	/*
	 * @brief Run a param info request
	 */
	public function run()
	{
ffc5cb81   Elena.Budnik   temporary commit
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
	
		if ($this->requestData->getType() == ParamInfoTypeEnumClass::IMPEXINFO)
		{
		   $this->requestData->setSuccess(true);
		   
		   $result = array();
		   $result['dimensions'] = array(
				'dim1' => 1,
				'dim2' => 1
			);
			
		   $this->requestData->setResult($result);
		   return $this->requestData->getSuccess();
		}
		
966bd5f8   Benjamin Renard   Add request to ge...
48
49
50
		$dom = new DOMDocument("1.0","UTF-8");
		$dom->preserveWhiteSpace = false;
		$dom->formatOutput = true;
966bd5f8   Benjamin Renard   Add request to ge...
51
		
f28f7c0e   Benjamin Renard   Add param info re...
52
		$res = $dom->load($this->requestData->getFilePath());
cc3bdb0e   Elena.Budnik   RequestManager sp...
53
 		
966bd5f8   Benjamin Renard   Add request to ge...
54
		$this->requestData->setSuccess(false);
f28f7c0e   Benjamin Renard   Add param info re...
55
			
966bd5f8   Benjamin Renard   Add request to ge...
56
		if (!$res) {
cc3bdb0e   Elena.Budnik   RequestManager sp...
57
			$this->requestData->setLastErrorMessage("Cannot load file".$this->requestData->getFilePath());
966bd5f8   Benjamin Renard   Add request to ge...
58
59
			return false;
		}
ffc5cb81   Elena.Budnik   temporary commit
60

f28f7c0e   Benjamin Renard   Add param info re...
61
		switch ($this->requestData->getType()) {
ffc5cb81   Elena.Budnik   temporary commit
62
63
			case ParamInfoTypeEnumClass::IMPEXPLOTINIT :
			case ParamInfoTypeEnumClass::PLOTINIT :	
f28f7c0e   Benjamin Renard   Add param info re...
64
				$this->runFromParamFile($dom);
ffc5cb81   Elena.Budnik   temporary commit
65
				break;			
f28f7c0e   Benjamin Renard   Add param info re...
66
67
68
69
			case ParamInfoTypeEnumClass::PARAMINFO :
				$this->runFromParamInfoFile($dom);
				break;
			default :
ffc5cb81   Elena.Budnik   temporary commit
70
				$this->requestData->setLastErrorMessage("Unknown ParamInfo type ");
f28f7c0e   Benjamin Renard   Add param info re...
71
72
73
74
		}
		
		return $this->requestData->getSuccess();
	}
ffc5cb81   Elena.Budnik   temporary commit
75

f28f7c0e   Benjamin Renard   Add param info re...
76
77
	
	private function runFromParamFile($dom) {
966bd5f8   Benjamin Renard   Add request to ge...
78
79
80
81
82
83
84
85
86
87
		$paramNode = new ParamNodeClass();
		
		try {
			$paramNode->loadFromNode($dom->documentElement);
		} catch (Exception $e) {
			$this->requestData->setLastErrorMessage("Error to parse parameter file : Exception detected : ".$e->getMessage());
			return false;
		}
		
		switch ($this->requestData->getType()) {
ffc5cb81   Elena.Budnik   temporary commit
88
			case ParamInfoTypeEnumClass::IMPEXPLOTINIT :
966bd5f8   Benjamin Renard   Add request to ge...
89
90
91
92
93
			case ParamInfoTypeEnumClass::PLOTINIT :
				$outputNode = $paramNode->getOutput();
				if (!isset($outputNode)) {
					$this->requestData->setLastErrorMessage("Cannot parse output node");
					return false;
ffc5cb81   Elena.Budnik   temporary commit
94
				}			 
966bd5f8   Benjamin Renard   Add request to ge...
95
96
97
98
				$plotNode = $outputNode->getChildInstanceByName("plot");
				if (!isset($plotNode)) {
					$this->requestData->setLastErrorMessage("Cannot parse plot node");
					return false;
ffc5cb81   Elena.Budnik   temporary commit
99
				}				
f28f7c0e   Benjamin Renard   Add param info re...
100
				$this->requestData->setResult($plotNode);
966bd5f8   Benjamin Renard   Add request to ge...
101
				$this->requestData->setSuccess(true);
f28f7c0e   Benjamin Renard   Add param info re...
102
				return true;
966bd5f8   Benjamin Renard   Add request to ge...
103
104
105
106
			default :
				$this->requestData->setLastErrorMessage("Unknown param info request");
		}
		
f28f7c0e   Benjamin Renard   Add param info re...
107
108
109
110
111
112
113
114
115
116
117
		return false;
	}
	
	private function runFromParamInfoFile($dom) {
		$result = array();
		
		// Dimensions
		$dimsNodes = $dom->getElementsByTagName("dimensions");
		if ($dimsNodes->length > 0) {
			$dimsNode = $dimsNodes->item(0);
			$result['dimensions'] = array(
4b616b6d   Benjamin Renard   Fix table / dim a...
118
119
				'dim1' => $dimsNode->getAttribute("dim_1"),
				'dim2' => $dimsNode->getAttribute("dim_2")
f28f7c0e   Benjamin Renard   Add param info re...
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
			);
		}
		
		// Components
		$compNodes = $dom->getElementsByTagName("components");
		if ($compNodes->length > 0) {
			$compNode = $compNodes->item(0);
			$result['components'] = array();
			foreach ($compNode->getElementsByTagName("component") as $componentNode) {
				$result['components'][] = array(
					'index_1' => $componentNode->getAttribute("index_1"),
					'index_2' => $componentNode->getAttribute("index_2"),
					'name' => $componentNode->getAttribute("name")
				);
			} 
		}
		
		// Tables
		$tablesNodes = $dom->getElementsByTagName("tables");
		if ($tablesNodes->length > 0) {
			$tablesNode = $tablesNodes->item(0);
			$result['tables'] = array();
			foreach ($tablesNode->getElementsByTagName("table") as $tableNode) {
				$tableResult = array(
4b616b6d   Benjamin Renard   Fix table / dim a...
144
						'relatedDim' => ($tableNode->getAttribute("relatedDim") == "dim_1" ? "dim1" : "dim2"),
f28f7c0e   Benjamin Renard   Add param info re...
145
146
						'name' => $tableNode->getAttribute("name"),
						'units' => $tableNode->getAttribute("units"),
f25e55ba   Benjamin Renard   Add sum in table ...
147
						'variable' => ($tableNode->getAttribute("variable") === "true"),
f28f7c0e   Benjamin Renard   Add param info re...
148
149
150
						'channels' => array()
				);
				
f25e55ba   Benjamin Renard   Add sum in table ...
151
152
153
154
155
156
157
158
				if (!$tableResult['variable']) {
					$channelNodes = $tableNode->getElementsByTagName("channel");
					foreach ($channelNodes as $channelNode) {
						$tableResult['channels'][] = array(
							'min' => $channelNode->getAttribute("min"),
							'max' => $channelNode->getAttribute("max")
						);
					}
f28f7c0e   Benjamin Renard   Add param info re...
159
160
161
162
163
164
165
166
167
168
				}
				
				$result['tables'][] = $tableResult;
			}
		}
		
		$this->requestData->setResult($result);
		$this->requestData->setSuccess(true);
		
		return true;
966bd5f8   Benjamin Renard   Add request to ge...
169
170
171
	}
}
?>