Commit 23b74e4b7098d6165b6e9ff6489adc110e187f73

Authored by Elena.Budnik
1 parent 2bf065de

spectra in remote

php/RemoteDataCenter/CDAWEB.php
... ... @@ -45,6 +45,22 @@ class CDAWEB extends RemoteDataCenterClientClass
45 45 return $res;
46 46 }
47 47  
  48 + public function checkParamIsReal()
  49 + {
  50 + $cmd = "ncinfo_remote ".RemoteData.$this->baseID."/".$this->infoFile." ".$this->ParamId." 4";
  51 + $res = shell_exec($cmd);
  52 +
  53 + return $res;
  54 + }
  55 +
  56 + public function checkIsSpectra()
  57 + {
  58 + $cmd = "ncinfo_remote ".RemoteData.$this->baseID."/".$this->infoFile." ".$this->ParamId." 5";
  59 + $res = shell_exec($cmd);
  60 +
  61 + return $res;
  62 + }
  63 +
48 64 public function setInfoFile()
49 65 {
50 66 $this->infoFile = strtolower($this->ViId).".nc";
... ...
php/RemoteDataCenter/RemoteParamManager.php
... ... @@ -97,13 +97,13 @@ class RemoteParamManager
97 97 // <output/>
98 98 // </param>
99 99  
100   - public function makeInternalParamXml()
  100 + public function makeInternalParamXml($isSpectra)
101 101 {
102 102 if (!$this->center->ViId) return false;
103 103 if (!$this->center->ParamId) return false;
104 104  
105 105 // $this->paramId = strtolower($this->center->baseID."_".$this->center->ViId."_".$this->center->ParamId);
106   -
  106 +
107 107 $xmlNameRemote = RemoteData."/PARAMS/".$this->paramId.".xml";
108 108 $xmlNameTemp = PARAMS_LOCALDB_DIR."/".$this->paramId.".xml";
109 109  
... ... @@ -114,7 +114,9 @@ class RemoteParamManager
114 114 if (file_exists($xmlNameRemote)) {
115 115 return copy($xmlNameRemote, $xmlNameTemp);
116 116 }
117   -
  117 + if (!$this->center->checkParamIsReal())
  118 + return false;
  119 +
118 120 $xml = new DomDocument("1.0");
119 121 $paramNode = $xml->createElement("param");
120 122 $xml->appendChild($paramNode);
... ... @@ -127,7 +129,8 @@ class RemoteParamManager
127 129  
128 130 $size = $this->center->getParamSize();
129 131 //TODO spectra components
130   - if ($size > 1)
  132 +
  133 + if ($size > 1 && !$isSpectra)
131 134 {
132 135 $components = strtolower($this->center->getParamComponents());
133 136 }
... ... @@ -140,7 +143,9 @@ class RemoteParamManager
140 143 if (!$fillValue)
141 144 $fillValue = null;
142 145  
143   - $infoNode->appendChild($xml->createElement("components",$components));
  146 + if ($components)
  147 + $infoNode->appendChild($xml->createElement("components",$components));
  148 +
144 149 $infoNode->appendChild($xml->createElement("units",$this->center->getParamUnits()));
145 150 $infoNode->appendChild($xml->createElement("coordinates_system"));
146 151 $infoNode->appendChild($xml->createElement("tensor_order"));
... ... @@ -161,7 +166,13 @@ class RemoteParamManager
161 166 $paramNode->appendChild($infoNode);
162 167 $paramNode->appendChild($getNode);
163 168 $paramNode->appendChild($xml->createElement("process"));
164   - $paramNode->appendChild($xml->createElement("output"));
  169 + $output = $xml->createElement("output");
  170 +
  171 + if ($isSpectra) {
  172 + $output->appendChild($this->makeSpectraNode($xml));
  173 + }
  174 +
  175 + $paramNode->appendChild($output);
165 176  
166 177 $res = $xml->save($xmlNameRemote);
167 178  
... ... @@ -171,6 +182,55 @@ class RemoteParamManager
171 182 return $res;
172 183 }
173 184  
  185 + protected function makeSpectraNode($xml)
  186 + {
  187 + $yAxis = $xml->createElement("yAxis");
  188 + $digitalAxis = $xml->createElement("digitalAxis");
  189 + $digitalAxis->setAttribute('id',"y-left");
  190 +// $digitalAxis->setAttribute('scale',"logarithmic");
  191 + $yAxis->appendChild($digitalAxis);
  192 +
  193 + $zAxis = $xml->createElement("zAxis");
  194 + $colorAxis = $xml->createElement("colorAxis");
  195 + $colorAxis->setAttribute('colorMapIndex',"1");
  196 + $colorAxis->setAttribute('scale',"logarithmic");
  197 + $zAxis->appendChild($colorAxis);
  198 +
  199 + $axes = $xml->createElement("axes");
  200 + $axes->appendChild($yAxis);
  201 + $axes->appendChild($zAxis);
  202 +
  203 + $spectro = $xml->createElement("spectro");
  204 + $spectro->setAttribute('yAxis',"y-left");
  205 + $param = $xml->createElement("param");
  206 + $param->setAttribute('id',$this->paramId);
  207 + $param->appendChild($spectro);
  208 +
  209 + $params = $xml->createElement("params");
  210 + $params->appendChild($param);
  211 +
  212 + $timePlot = $xml->createElement("timePlot");
  213 + $timePlot->appendChild($params);
  214 + $timePlot->appendChild($axes);
  215 +
  216 + $plot = $xml->createElement("plot");
  217 + $plot->appendChild($timePlot);
  218 +
  219 + return $plot;
  220 + }
  221 +
  222 + protected function makeOurComponents($node, $size)
  223 + {
  224 + for ($i = 0; $i < $size; $i++)
  225 + {
  226 + $compNode = $this->xmlDom->createElement("component");
  227 + $compNode->setAttribute('xml:id',$this->paramId."($i)");
  228 + $compNode->setAttribute('name',"comp_$i"); // LABEL
  229 +
  230 + $node->appendChild($compNode);
  231 + }
  232 + }
  233 +
174 234 protected function makeComponents($node, $size, $components)
175 235 {
176 236 $compArray = explode(",",$components);
... ... @@ -195,19 +255,21 @@ class RemoteParamManager
195 255 // Node to be added
196 256 $nodeRemote = $this->center->baseDom->getElementById($id);
197 257 // No such node in base.xml
  258 +
198 259 if (!$nodeRemote) return false;
199 260  
200 261 if ($nodeRemote->tagName == 'dataset')
201 262 {
  263 +
202 264 $this->center->setViId($nodeRemote->getAttribute('name'));
203 265 $status = $this->center->addViToDD();
204   -
  266 +
205 267 if (!$status) return false;
206   -
207   - $remoteDatasetInfo = DDSERVICE."/BASE/INFO/bases/".$this->center->baseID."/".$this->center->infoFile;
  268 +
  269 + $remoteDatasetInfo = BASE."/INFO/bases/".$this->center->baseID."/".$this->center->infoFile;
208 270 $localDatasetInfo = RemoteData.$this->center->baseID."/".$this->center->infoFile;
209 271  
210   - if (!copy($remoteDatasetInfo,$localDatasetInfo)) return false;
  272 + if (!copy($remoteDatasetInfo,$localDatasetInfo)) return false;
211 273 }
212 274  
213 275 $node = $this->xmlDom->importNode($nodeRemote);
... ... @@ -217,18 +279,25 @@ class RemoteParamManager
217 279 $this->center->setParamId($nodeRemote->getAttribute('name'));
218 280 $this->center->setViId($nodeRemote->parentNode->getAttribute('name'));
219 281 $this->center->setInfoFile();
  282 + $isSpectra = $this->center->checkIsSpectra();
  283 + if (!$this->makeInternalParamXml($isSpectra)) return false;
220 284  
221   - if (!$this->makeInternalParamXml()) return false;
222   -
223   - if (($size = $this->center->getParamSize()) > 1)
224   - {
225   - // make components and args
226   - $components = $this->center->getParamComponents();
227   - $this->makeComponents($node, $size, $components); // return false;
  285 + if ( (($size = $this->center->getParamSize()) > 1) && !$isSpectra )
  286 + {
  287 + // make components and args
  288 + $components = $this->center->getParamComponents();
  289 + if ($components == -1) {
  290 + $this->makeOurComponents($node, $size);
  291 + }
  292 + else {
  293 + $this->makeComponents($node, $size, $components); // return false;
  294 + }
228 295 }
229 296  
230 297 // convert remote paramID into AMDA paramID
231 298 $node->setAttribute("xml:id", strtr(strtolower($node->getAttribute("xml:id")), ":","_"));
  299 + if ($isSpectra)
  300 + $node->setAttribute("display_type","spectrogram");
232 301 }
233 302  
234 303 $parentRemote= $nodeRemote->parentNode;
... ...