Blame view

src/Request/ParamsRequestImpl/ParamsRequestClass.php 3.7 KB
22521f1c   Benjamin Renard   First 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
<?php
/**
 * @class ParamsRequestClass
 * @brief Treats a param request. This class inherits from ProcessRequestClass
 * @details
 */
class ParamsRequestClass extends ProcessRequestClass
{
	/*
	 * @brief Init a params request
	*/
	public function init()
	{
		if (!isset($this->requestData))
			return false;
			
		$this->requestData->setType(ProcessTypeEnumClass::RUN);
		$this->requestData->setCmd(KernelConfigClass::getKernelBinPath()."amdaXMLRequestorTool ".$this->getRequestFilePath());
		$this->requestData->setEnvVars(KernelConfigClass::getExecEnvVarArray());
			
		if (!parent::init())
			return false;
			
		$this->requestData->setSuccess(false);
		$this->requestData->setLastErrorMessage('Cannot init params request');

		if ($this->requestData->getCompilationPath() == '')
		{
			$this->requestData->setLastErrorMessage('Compilation path for params request not defined');
			return false;
		}

		if (!is_dir($this->requestData->getCompilationPath()))
		{
			if (!mkdir($this->requestData->getCompilationPath(),0777))
			{
				$this->requestData->setLastErrorMessage('Cannot create compilation path for params request');
				return false;
			}
		}

		//create request file
		$doc = new DOMDocument("1.0", "UTF-8");
		$doc->preserveWhiteSpace = false;
		$doc->formatOutput = true;

		if (!$xmlNode = $this->requestData->getRequestNode()->toXMLNode($doc))
		{
			$this->requestData->setLastErrorMessage('Cannot create params request XML file');
			return false;
		}
			
		$doc->appendChild($xmlNode);

		if (!$doc->schemaValidate(KernelConfigClass::getXSDRequestFilePath()))
		{
			$this->requestData->setLastErrorMessage('Params request XML file not valid');
			return false;
		}

		if (!$doc->save($this->getRequestFilePath()))
		{
			$this->requestData->setLastErrorMessage('Cannot save params request XML file');
			return false;
		}

		//create config files
		KernelConfigClass::write($this->requestData->getWorkingPath(), $this->requestData->getCompilationPath());

		//copy parameters files
		foreach ($this->requestData->getParamsToCopy() as $key => $value)
		{
			if (!file_exists($value))
			{
				$this->requestData->setLastErrorMessage('Cannot find param definition file for '.$key);
				return false;
			}
				
			$destinationFile = KernelConfigClass::getRequestParamsPath($this->requestData->getWorkingPath()).$key.".xml";
			if (!copy($value,$destinationFile))
			{
				$this->requestData->setLastErrorMessage('Cannot copy param definition file for '.$key);
				return false;
			}
286f7924   Benjamin Renard   Derived parameter...
85
86
			
			touch($destinationFile, filemtime($value));
22521f1c   Benjamin Renard   First commit
87
88
89
90
91
92
93
94
95
		}

		//create processed params files
		foreach ($this->requestData->getProcessParamsToCreate() as $key => $value)
		{
			$doc = new DOMDocument("1.0", "UTF-8");
			$doc->preserveWhiteSpace = false;
			$doc->formatOutput = true;

286f7924   Benjamin Renard   Derived parameter...
96
			if (!$xmlNode = $value["param"]->toXMLNode($doc))
22521f1c   Benjamin Renard   First commit
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
			{
				$this->requestData->setLastErrorMessage('Cannot create params XML file for '.$key);
				return false;
			}
				
			$doc->appendChild($xmlNode);

			/*if (!$doc->schemaValidate(KernelConfigClass::getXSDParameterFilePath()))
			 {
			$this->requestData->setLastErrorMessage('Params XML file not valid for '.$key);
			return false;
			}*/

			$destinationFile = KernelConfigClass::getRequestParamsPath($this->requestData->getWorkingPath()).$key.".xml";
			if (!$doc->save($destinationFile))
			{
				$this->requestData->setLastErrorMessage('Cannot save params XML file for '.$key);
				return false;
			}
286f7924   Benjamin Renard   Derived parameter...
116
117
			
			touch($destinationFile, $value["dateModif"]);
22521f1c   Benjamin Renard   First commit
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
		}

		return true;
	}

	/*
	 * @brief Run a params request
	*/
	public function run()
	{
		return parent::run();
	}

	/*
	 * @brief Get the request file path for AMDA_Kernel
	*/
	private function getRequestFilePath()
	{
		return $this->requestData->getWorkingPath()."request.xml";
	}
}
?>