Blame view

src/Request/ParamInfoRequestClass.php 5.25 KB
966bd5f8   Benjamin Renard   Add request to ge...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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;
dcdacd5c   Benjamin Renard   Fill plot type in...
16

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
		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();
		}
dcdacd5c   Benjamin Renard   Fill plot type in...
46
47
48
49
50
51
52

		$filePath = $this->requestData->getFilePath();
		if (!empty($filePath)) {
			//Load info from a XML file
			$dom = new DOMDocument("1.0","UTF-8");
			$dom->preserveWhiteSpace = false;
			$dom->formatOutput = true;
ffc5cb81   Elena.Budnik   temporary commit
53
		
dcdacd5c   Benjamin Renard   Fill plot type in...
54
			$res = @$dom->load($this->requestData->getFilePath());
cc3bdb0e   Elena.Budnik   RequestManager sp...
55
 		
dcdacd5c   Benjamin Renard   Fill plot type in...
56
			$this->requestData->setSuccess(false);
f28f7c0e   Benjamin Renard   Add param info re...
57
			
dcdacd5c   Benjamin Renard   Fill plot type in...
58
59
60
61
			if (!$res) {
				$this->requestData->setLastErrorMessage("Cannot load file".$this->requestData->getFilePath());
				return false;
			}
ffc5cb81   Elena.Budnik   temporary commit
62

dcdacd5c   Benjamin Renard   Fill plot type in...
63
64
65
			switch ($this->requestData->getType()) {
				case ParamInfoTypeEnumClass::IMPEXPLOTINIT :
				case ParamInfoTypeEnumClass::PLOTINIT :	
59eb1b9c   Elena.Budnik   new ama stat
66
					$this->runFromParamFile($dom);					
dcdacd5c   Benjamin Renard   Fill plot type in...
67
68
69
70
71
72
73
74
75
76
77
					break;			
				case ParamInfoTypeEnumClass::PARAMINFO :
					$this->runFromParamInfoFile($dom);
					break;
				default :
					$this->requestData->setLastErrorMessage("Unknown ParamInfo type ");
			}
		}
		else {
			//Use some internal info - Nothing to do
			$this->requestData->setSuccess(true);
f28f7c0e   Benjamin Renard   Add param info re...
78
		}
59eb1b9c   Elena.Budnik   new ama stat
79
		 
f28f7c0e   Benjamin Renard   Add param info re...
80
81
		return $this->requestData->getSuccess();
	}
ffc5cb81   Elena.Budnik   temporary commit
82

f28f7c0e   Benjamin Renard   Add param info re...
83
84
	
	private function runFromParamFile($dom) {
966bd5f8   Benjamin Renard   Add request to ge...
85
86
87
88
89
90
91
92
93
94
		$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
95
			case ParamInfoTypeEnumClass::IMPEXPLOTINIT :
966bd5f8   Benjamin Renard   Add request to ge...
96
97
98
99
100
			case ParamInfoTypeEnumClass::PLOTINIT :
				$outputNode = $paramNode->getOutput();
				if (!isset($outputNode)) {
					$this->requestData->setLastErrorMessage("Cannot parse output node");
					return false;
ffc5cb81   Elena.Budnik   temporary commit
101
				}			 
966bd5f8   Benjamin Renard   Add request to ge...
102
103
104
105
				$plotNode = $outputNode->getChildInstanceByName("plot");
				if (!isset($plotNode)) {
					$this->requestData->setLastErrorMessage("Cannot parse plot node");
					return false;
ffc5cb81   Elena.Budnik   temporary commit
106
				}				
f28f7c0e   Benjamin Renard   Add param info re...
107
				$this->requestData->setResult($plotNode);
966bd5f8   Benjamin Renard   Add request to ge...
108
				$this->requestData->setSuccess(true);
f28f7c0e   Benjamin Renard   Add param info re...
109
				return true;
966bd5f8   Benjamin Renard   Add request to ge...
110
111
112
113
			default :
				$this->requestData->setLastErrorMessage("Unknown param info request");
		}
		
f28f7c0e   Benjamin Renard   Add param info re...
114
115
116
117
118
119
120
121
122
123
124
		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...
125
126
				'dim1' => $dimsNode->getAttribute("dim_1"),
				'dim2' => $dimsNode->getAttribute("dim_2")
f28f7c0e   Benjamin Renard   Add param info re...
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
			);
		}
		
		// 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...
151
						'relatedDim' => ($tableNode->getAttribute("relatedDim") == "dim_1" ? "dim1" : "dim2"),
f28f7c0e   Benjamin Renard   Add param info re...
152
153
						'name' => $tableNode->getAttribute("name"),
						'units' => $tableNode->getAttribute("units"),
f25e55ba   Benjamin Renard   Add sum in table ...
154
						'variable' => ($tableNode->getAttribute("variable") === "true"),
34a30a7e   Elena.Budnik   auto fill of min/...
155
156
						'channels' => array(),
						'minmax' => array()
f28f7c0e   Benjamin Renard   Add param info re...
157
				);
dde4b598   Benjamin Renard   Fix
158
159
160
				if ($tableNode->getAttribute("mainDim") === "true") {
					$tableResult['mainDim'] = TRUE;
				}
f28f7c0e   Benjamin Renard   Add param info re...
161
				
f25e55ba   Benjamin Renard   Add sum in table ...
162
163
164
165
166
167
168
169
				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...
170
				}
34a30a7e   Elena.Budnik   auto fill of min/...
171
172
173
174
175
176
177
178
				else {
					if ($tableNode->hasAttribute("minValue")) {
						$tableResult['minmax'] = array(
							'min' => $tableNode->getAttribute("minValue"),
							'max' => $tableNode->getAttribute("maxValue")
						);
					}
				}
f28f7c0e   Benjamin Renard   Add param info re...
179
180
181
182
183
184
185
186
187
				
				$result['tables'][] = $tableResult;
			}
		}
		
		$this->requestData->setResult($result);
		$this->requestData->setSuccess(true);
		
		return true;
966bd5f8   Benjamin Renard   Add request to ge...
188
189
	}
}
8ade06fe   Benjamin Renard   Improve config load
190
?>