Commit bb3666936061f286f84b9be6b278c5988ceb5376
Exists in
master
and in
110 other branches
Merge branch master into install-rework
Showing
30 changed files
with
1277 additions
and
1413 deletions
Show diff stats
generic_data/SpecialSettings/Settings.xml
1 | 1 | <?xml version="1.0"?> |
2 | -<users> | |
3 | - <user xml:id="budnik"> | |
2 | +<users> | |
3 | + <user xml:id="genot"> | |
4 | 4 | <!--- 1024*1024*1000 pour 1000Mo --> |
5 | - <setting name="DISK_QUOTA" value="1048576000"/> | |
5 | + <setting name="DISK_QUOTA" value="1048576000"/> | |
6 | + <setting isSetting='true' name="memory_limit" value="100000000"/> | |
7 | + <setting isSetting='true' name="max_execution_time" value="1200"/> | |
8 | + </user> | |
9 | + <user xml:id="budnik"> | |
10 | + <!--- 1024*1024*1000 pour 1000Mo --> | |
11 | + <setting name="DISK_QUOTA" value="1048576000"/> | |
6 | 12 | <setting isSetting='true' name="memory_limit" value="100000000"/> |
7 | 13 | <setting isSetting='true' name="max_execution_time" value="1200"/> |
8 | 14 | </user> |
... | ... |
js/app/controllers/ExplorerModule.js
... | ... | @@ -105,29 +105,19 @@ Ext.define('amdaDesktop.ExplorerModule', |
105 | 105 | region: 'center' |
106 | 106 | }, |
107 | 107 | { |
108 | - xtype: 'label', | |
109 | - text: 'Log:', | |
110 | - margin: '10 0 -5 0', | |
111 | - region: 'south', | |
112 | - height: 20 | |
113 | - }, | |
114 | - { | |
115 | 108 | xtype: 'panel', |
109 | + title: 'Log', | |
116 | 110 | id: 'LogPanel', |
111 | + collapsible: true, | |
112 | + iconCls: 'icon-align-left', | |
117 | 113 | region: 'south', |
118 | - height: 150, | |
119 | 114 | split: true, |
120 | - layout: { | |
121 | - type: 'vbox', | |
122 | - align: 'stretch', | |
123 | - autoSize: true | |
124 | - }, | |
125 | - autoScroll: true, | |
115 | + height: 150, | |
126 | 116 | stateful: true, |
127 | 117 | stateId: 'LogPanel', |
128 | - buttons: [{ | |
129 | - scope: this, | |
130 | - text: 'Clear', | |
118 | + tools: [{ | |
119 | + type: 'trash', | |
120 | + tooltip: 'Clear logs', | |
131 | 121 | handler: function () { |
132 | 122 | var logPanel = win.items.get('LogPanel') |
133 | 123 | logPanel.removeAll() |
... | ... |
js/app/views/ExplorerUI.js
... | ... | @@ -506,6 +506,9 @@ Ext.define('amdaUI.ExplorerUI', { |
506 | 506 | }, |
507 | 507 | |
508 | 508 | itemcontextmenu: function(view, rec, item, index, e){ |
509 | + // Add record to selection model | |
510 | + view.ownerCt.getSelectionModel().select(rec); | |
511 | + | |
509 | 512 | // block other events |
510 | 513 | e.stopEvent(); |
511 | 514 | |
... | ... |
js/resources/css/amda.css
... | ... | @@ -104,6 +104,10 @@ |
104 | 104 | background-image:url( ../images/16x16/workspaces.png ) !important; |
105 | 105 | } |
106 | 106 | |
107 | +.icon-align-left { | |
108 | + background-image: url(../images/16x16/align_left.png); | |
109 | +} | |
110 | + | |
107 | 111 | .icon-delete { |
108 | 112 | background-image:url( ../images/icons/fam/delete.gif ) !important; |
109 | 113 | } |
... | ... | @@ -121,6 +125,14 @@ background-image: url(../images/small_cancel_centered.png); |
121 | 125 | } |
122 | 126 | |
123 | 127 | /** |
128 | +Custom tool typ icons | |
129 | + */ | |
130 | + | |
131 | +.x-tool-trash { | |
132 | + background-image: url(../images/trash.png) !important; | |
133 | +} | |
134 | + | |
135 | +/** | |
124 | 136 | * RangeMenu Styles |
125 | 137 | **/ |
126 | 138 | |
... | ... | @@ -489,6 +501,10 @@ p + p { |
489 | 501 | opacity: 1.0 !important; |
490 | 502 | } |
491 | 503 | |
504 | +#LogPanel-splitter-collapseEl { | |
505 | + display: none; | |
506 | +} | |
507 | + | |
492 | 508 | .epntap_grid .disabled_row { |
493 | 509 | color: gray; |
494 | 510 | } |
... | ... | @@ -504,4 +520,4 @@ p + p { |
504 | 520 | .epntap_cell { |
505 | 521 | padding: 4px; |
506 | 522 | white-space: normal; |
507 | -} | |
508 | 523 | \ No newline at end of file |
524 | +} | |
... | ... |
201 Bytes
356 Bytes
php/AMDA_METHODS_WSDL.php
... | ... | @@ -2,17 +2,14 @@ |
2 | 2 | |
3 | 3 | /** |
4 | 4 | * @file AMDA_METHODS_WSDL.php |
5 | -* @brief PHP SoapServer for IMPEx WebServices | |
6 | -* | |
7 | -* @version $Id: $ | |
8 | -* | |
5 | +* @brief PHP SoapServer for IMPEx WebServices | |
9 | 6 | */ |
10 | 7 | |
11 | - require_once 'config.php'; | |
12 | - | |
13 | - ini_set("soap.wsdl_cache_enabled", "0"); // desactive le cache WSDL | |
14 | - $server = new SoapServer('../public/wsdl/Methods_AMDA.wsdl'); | |
15 | - $server->setClass('WebServer'); | |
16 | - $server->handle(); | |
8 | + require_once 'config.php'; | |
17 | 9 | |
10 | + ini_set("soap.wsdl_cache_enabled", "0"); // desactive le cache WSDL | |
11 | + $server = new SoapServer('../public/wsdl/Methods_AMDA.wsdl'); | |
12 | + $server->setClass('WebServer'); | |
13 | + $server->handle(); | |
14 | + | |
18 | 15 | ?> |
19 | 16 | \ No newline at end of file |
... | ... |
php/classes/WSClientInterface.php renamed to php/WebServices/Client/WSClientInterface.php
... | ... | @@ -4,6 +4,7 @@ abstract class WSOutputFileFormat |
4 | 4 | const NETCDF = "netCDF"; |
5 | 5 | const VOTABLE = "VOTable"; |
6 | 6 | const ASCII = "ASCII"; |
7 | + const CDF = "CDF"; | |
7 | 8 | } |
8 | 9 | |
9 | 10 | abstract class WSOutputTimeFormat |
... | ... | @@ -29,7 +30,7 @@ abstract class WSOrbitUnit |
29 | 30 | |
30 | 31 | abstract class WSSpacecraft |
31 | 32 | { |
32 | - const CASSINI = "Cassini_Public"; | |
33 | + const CASSINI = "Cassini"; | |
33 | 34 | const GALILEO = "Galileo"; |
34 | 35 | const VOYAGER1 = "Voyager_1"; |
35 | 36 | const VOYAGER2 = "Voyager_2"; |
... | ... | @@ -117,7 +118,9 @@ Interface WSClientInterface |
117 | 118 | |
118 | 119 | public function getParameter($startTime, $stopTime, $parameterID, $sampling = 0, $userID = "", $password = "", |
119 | 120 | $outputFormat = WSOutputFileFormat::NETCDF, $timeFormat = WSOutputTimeFormat::ISO, $gzip = 0); |
120 | - | |
121 | + | |
122 | + public function getStatus($processID); | |
123 | + | |
121 | 124 | public function getDataset($startTime, $stopTime, $datasetID, $sampling = 0, $userID = "", $password = "", |
122 | 125 | $outputFormat = WSOutputFileFormat::NETCDF, $timeFormat = WSOutputTimeFormat::ISO, $gzip = 0); |
123 | 126 | |
... | ... |
php/classes/WSClientREST.php renamed to php/WebServices/Client/WSClientREST.php
php/classes/WSClientSOAP.php renamed to php/WebServices/Client/WSClientSOAP.php
... | ... | @@ -83,7 +83,16 @@ class WSClientSOAP implements WSClientInterface |
83 | 83 | |
84 | 84 | return $this->call(__FUNCTION__, $params); |
85 | 85 | } |
86 | - | |
86 | + | |
87 | + public function getStatus($processID) | |
88 | + { | |
89 | + $params = array('parameters' => array( | |
90 | + "id" => $processID | |
91 | + )); | |
92 | + | |
93 | + return $this->call(__FUNCTION__, $params); | |
94 | + } | |
95 | + | |
87 | 96 | public function getDataset($startTime, $stopTime, $datasetID, $sampling = 0, $userID = "", $password = "", |
88 | 97 | $outputFormat = WSOutputFileFormat::NETCDF, $timeFormat = WSOutputTimeFormat::ISO, $gzip = 0) |
89 | 98 | { |
... | ... |
php/testWebServer.php renamed to php/WebServices/Tests/testWebServer.php
1 | 1 | <?php |
2 | 2 | |
3 | -require_once("classes/WSClientSOAP.php"); | |
4 | -require_once("classes/WSClientREST.php"); | |
3 | +require_once("../Client/WSClientSOAP.php"); | |
4 | +//require_once("../Client/WSClientREST.php"); | |
5 | 5 | |
6 | 6 | function runSuiteTests($client) |
7 | 7 | { |
... | ... | @@ -11,44 +11,44 @@ function runSuiteTests($client) |
11 | 11 | echo "[ERROR] - Error during call of isAlive function".PHP_EOL; |
12 | 12 | else |
13 | 13 | echo "[OK] - isAlive".PHP_EOL; |
14 | - | |
14 | + | |
15 | 15 | //Test getTimeTablesList function without userID & password |
16 | - $res = $client->getTimeTablesList(); | |
17 | - if (!isset($res) || !$res->success) | |
18 | - echo "[ERROR] - Error during call of getTimeTablesList function - Test 1".PHP_EOL; | |
19 | - else | |
20 | - echo "[OK] - getTimeTablesList - Test 1 - ".$res->TimeTablesList.PHP_EOL; | |
21 | - | |
16 | +// $res = $client->getTimeTablesList(); | |
17 | +// if (!isset($res) || !$res->success) | |
18 | +// echo "[ERROR] - Error during call of getTimeTablesList function - Test 1".PHP_EOL; | |
19 | +// else | |
20 | +// echo "[OK] - getTimeTablesList - Test 1 - ".$res->TimeTablesList.PHP_EOL; | |
21 | + | |
22 | 22 | //Test getTimeTablesList function with userID & password |
23 | - $res = $client->getTimeTablesList("testKernel", "amda"); | |
23 | + $res = $client->getTimeTablesList("budnik", "Sacre-Cour"); | |
24 | 24 | if (!isset($res) || !$res->success) |
25 | 25 | echo "[ERROR] - Error during call of getTimeTablesList function - Test 2".PHP_EOL; |
26 | 26 | else |
27 | 27 | echo "[OK] - getTimeTablesList - Test 2 - ".$res->TimeTablesList.PHP_EOL; |
28 | - | |
28 | + | |
29 | 29 | //Test getTimeTable function without userID & password |
30 | - $res = $client->getTimeTable("sharedtt_0"); | |
31 | - if (!isset($res) || !$res->success) | |
32 | - echo "[ERROR] - Error during call of getTimeTable function - Test 1".PHP_EOL; | |
33 | - else | |
34 | - echo "[OK] - getTimeTable - Test 1 - ".$res->ttFileURL.PHP_EOL; | |
35 | - | |
30 | +// $res = $client->getTimeTable("sharedtt_0"); | |
31 | +// if (!isset($res) || !$res->success) | |
32 | +// echo "[ERROR] - Error during call of getTimeTable function - Test 1".PHP_EOL; | |
33 | +// else | |
34 | +// echo "[OK] - getTimeTable - Test 1 - ".$res->ttFileURL.PHP_EOL; | |
35 | + | |
36 | 36 | //Test getTimeTable function with userID & password |
37 | - $res = $client->getTimeTable("tt_0", "testKernel", "amda"); | |
37 | + $res = $client->getTimeTable("tt_0", "budnik", "Sacre-Cour"); | |
38 | 38 | if (!isset($res) || !$res->success) |
39 | 39 | echo "[ERROR] - Error during call of getTimeTable function - Test 2".PHP_EOL; |
40 | 40 | else |
41 | 41 | echo "[OK] - getTimeTable - Test 2 - ".$res->ttFileURL.PHP_EOL; |
42 | - | |
42 | + | |
43 | 43 | //Test getParameterList function for impex user |
44 | - $res = $client->getParameterList("impex"); | |
45 | - if (!isset($res) || !$res->success) | |
46 | - echo "[ERROR] - Error during call of getParameterList function - Test 1".PHP_EOL; | |
47 | - else | |
48 | - echo "[OK] - getParameterList - Test 1 - ".$res->ParameterList->LocalDataBaseParameters.PHP_EOL; | |
49 | - | |
44 | +// $res = $client->getParameterList("impex"); | |
45 | +// if (!isset($res) || !$res->success) | |
46 | +// echo "[ERROR] - Error during call of getParameterList function - Test 1".PHP_EOL; | |
47 | +// else | |
48 | +// echo "[OK] - getParameterList - Test 1 - ".$res->ParameterList->LocalDataBaseParameters.PHP_EOL; | |
49 | + | |
50 | 50 | //Test getParameterList function with userID & password |
51 | - $res = $client->getParameterList("testKernel", "amda"); | |
51 | + $res = $client->getParameterList("budnik", "Sacre-Cour"); | |
52 | 52 | if (!isset($res) || !$res->success) |
53 | 53 | echo "[ERROR] - Error during call of getParameterList function - Test 2".PHP_EOL; |
54 | 54 | else |
... | ... | @@ -57,7 +57,7 @@ function runSuiteTests($client) |
57 | 57 | echo " - UserDefinedParameters : ".$res->ParameterList->UserDefinedParameters.PHP_EOL; |
58 | 58 | echo " - LocalDataBaseParameters : ".$res->ParameterList->LocalDataBaseParameters.PHP_EOL; |
59 | 59 | } |
60 | - | |
60 | + | |
61 | 61 | //Test getObsDataTree function |
62 | 62 | $res = $client->getObsDataTree(); |
63 | 63 | if (!isset($res) || !$res->success) |
... | ... | @@ -150,7 +150,7 @@ function runSuiteTests($client) |
150 | 150 | } |
151 | 151 | } |
152 | 152 | |
153 | -$clientSOAP = new WSClientSOAP("http://localhost/NEWAMDA-BENJAMIN/public/wsdl/Methods_AMDA.wsdl"); | |
153 | +$clientSOAP = new WSClientSOAP("http://apus.irap.omp.eu/NEWAMDA/public/wsdl/Methods_AMDA.wsdl"); | |
154 | 154 | |
155 | 155 | echo "==> Suite tests for SOAP client".PHP_EOL; |
156 | 156 | runSuiteTests($clientSOAP); |
... | ... |
php/classes/WSUserMgr.php renamed to php/WebServices/WSUserMgr.php
... | ... | @@ -8,31 +8,37 @@ |
8 | 8 | class WSUserMgr extends UserMgr |
9 | 9 | { |
10 | 10 | protected $isSoap; |
11 | + | |
12 | + private function throwError($errorType, $msg) | |
13 | + { | |
14 | + if ($this->isSoap) | |
15 | + throw new SoapFault($errorType, $msg); | |
16 | + else | |
17 | + return array("error" => $msg); | |
18 | + } | |
11 | 19 | |
12 | - /***************************************************************** | |
13 | - * PUBLIC FUNCTIONS | |
14 | - *****************************************************************/ | |
15 | - | |
16 | - public function init($username, $password, $sessionID, $isSoap) | |
20 | + public function init($username, $password, $sessionID, $setPathOnly, $isSoap) | |
17 | 21 | { |
18 | 22 | $this->user = trim($username); |
19 | - $this->sessionID = trim($sessionID); | |
20 | - $this->passwd = trim($password); | |
23 | + if (isset($sessionID)) | |
24 | + $this->sessionID = trim($sessionID); | |
25 | + if (isset($password)) | |
26 | + $this->passwd = trim($password); | |
21 | 27 | |
22 | 28 | $this->isSoap = isset($isSoap); |
23 | 29 | |
24 | - // Check if user has DD session already open, otherwise - login | |
25 | - if ($this->ddCheckUser() != 0) | |
30 | + if (isset($password) && ! $setPathOnly) | |
26 | 31 | { |
27 | - if ($this->ddLogin() != 0) { // DD Login if user is not registered | |
28 | - if ($this->isSoap) throw new SoapFault("error", "Login procedure failed"); | |
29 | - else return array("error" => "Login procedure failed"); | |
30 | - } | |
31 | - | |
32 | + // Check if user has DD session already open, otherwise - login | |
32 | 33 | if ($this->ddCheckUser() != 0) |
33 | 34 | { |
34 | - if ($this->isSoap) throw new SoapFault("error", "CheckUser procedure failed"); | |
35 | - else return array("error" => "CheckUser procedure failed"); | |
35 | + if ($this->ddLogin() != 0) { // DD Login if user is not registered | |
36 | + $this->throwError("loginError", "Login procedure failed"); | |
37 | + } | |
38 | + | |
39 | + if ($this->ddCheckUser() != 0) { | |
40 | + $this->throwError("loginError", "CheckUser procedure failed"); | |
41 | + } | |
36 | 42 | } |
37 | 43 | } |
38 | 44 | |
... | ... | @@ -41,30 +47,18 @@ class WSUserMgr extends UserMgr |
41 | 47 | if (!is_dir($this->userdir)) |
42 | 48 | { |
43 | 49 | if (!$this->createDir()) { |
44 | - if ($this->isSoap) throw new SoapFault("error", "Cannot create UserDir"); | |
45 | - else return array("error" => "Cannot create UserDir"); | |
50 | + $this->throwError("loginError", "Cannot create UserDir"); | |
46 | 51 | } |
47 | 52 | } |
48 | - | |
49 | - // $this->userWS = USERPATH . "/" . $this->user . "/WS/"; | |
50 | - // chmod($this->userWS, 0775); | |
51 | - // $this->userMissions = $this->getAvailableMissionsByUser(); | |
52 | 53 | |
53 | 54 | $this->setPath(); |
54 | - | |
55 | - return array('success' => true); | |
56 | - } | |
57 | - | |
58 | - public function makeUserWS() | |
59 | - { | |
60 | - if (file_exists(USERWSDIR.'LocalParams.xml')) | |
61 | - unlink(USERWSDIR.'LocalParams.xml'); | |
62 | - // if (!file_exists(USERWSDIR.'LocalParams.xml')) | |
63 | - symlink(DATAPATH.'/LocalData/LocalParams.xml', USERWSDIR.'LocalParams.xml'); | |
64 | - // $this->makeLocalTree(); | |
55 | + if ( $setPathOnly ) | |
56 | + return array('success' => true); | |
57 | + | |
58 | + $this->makeLocalTree(); | |
65 | 59 | $this->makeRemoteTree(); |
66 | 60 | |
67 | - return $this->user; | |
61 | + return array('success' => true); | |
68 | 62 | } |
69 | 63 | } |
70 | 64 | ?> |
71 | 65 | \ No newline at end of file |
... | ... |
... | ... | @@ -0,0 +1,736 @@ |
1 | +<?php | |
2 | +/** | |
3 | +* @file WebServer.php | |
4 | +* @brief Web services AMDA | |
5 | +*/ | |
6 | + | |
7 | +class WebServer | |
8 | +{ | |
9 | + private $isSoap = false; | |
10 | + private $userID, $userPWD = null, $sessionID = null, $IPclient; | |
11 | + private $dataFileName; | |
12 | + private $requestManager = null; | |
13 | + private $paramLoader = null; | |
14 | + private $service; | |
15 | + private $requestTime; | |
16 | + | |
17 | + function __construct() | |
18 | + { | |
19 | + if (!is_dir(WSConfigClass::getWsResultDir())) mkdir(WSConfigClass::getWsResultDir(), 0775); | |
20 | + } | |
21 | + | |
22 | + protected function init($data) | |
23 | + { | |
24 | + $this->requestTime = date('Ymd',time()); | |
25 | + | |
26 | + if (!isset($data)) { | |
27 | + $this->userID = 'impex'; | |
28 | + return array('success' => true); | |
29 | + } | |
30 | + | |
31 | + if(is_object($data)){ | |
32 | + $vars = get_object_vars($data); | |
33 | + $this->isSoap = true; | |
34 | + } | |
35 | + else { | |
36 | + $vars = $data; | |
37 | + } | |
38 | + | |
39 | + if (isset($vars['userID'])){ | |
40 | + $this->userID = $vars['userID']; | |
41 | + } | |
42 | + else { | |
43 | + $this->userID = 'impex'; | |
44 | + } | |
45 | + | |
46 | + $this->sessionID = $this->userID; | |
47 | + | |
48 | + if (isset($vars['password'])) | |
49 | + $this->userPWD = $vars['password']; | |
50 | + else | |
51 | + $this->userPWD = 'impexfp7'; | |
52 | + | |
53 | + return array('success' => true, 'vars' => $vars); | |
54 | + } | |
55 | + | |
56 | + private function initUserMgr($setPatOnly = false) | |
57 | + { | |
58 | + $wsUserMgr = new WSUserMgr(); | |
59 | + $wsUserMgr->init($this->userID, $this->userPWD, $this->sessionID, $setPatOnly, $this->isSoap); | |
60 | + | |
61 | + $this->IPclient = $wsUserMgr->getIPClient(); | |
62 | + | |
63 | + return array('success' => true); | |
64 | + } | |
65 | + | |
66 | + private function throwError($errorType, $msg) | |
67 | + { | |
68 | + if ($this->isSoap) | |
69 | + throw new SoapFault($errorType, $msg); | |
70 | + else | |
71 | + return array("error" => $msg); | |
72 | + } | |
73 | + | |
74 | + private function isGetPlotRequest($name){ | |
75 | + | |
76 | + return (substr($name,0,7) == 'getplot'); | |
77 | + } | |
78 | + | |
79 | + private function xsl2vot($inputName, $outputName) | |
80 | + { | |
81 | + // Load Time table | |
82 | + $xml = new DomDocument("1.0"); | |
83 | + if (!@$xml->load($inputName)) | |
84 | + $this->throwError("wokrspaceError", "Cannot load time table $inputName for ".$this->userID); | |
85 | + | |
86 | + // Load XSL file | |
87 | + $xsl = new DomDocument("1.0"); | |
88 | + if (!@$xsl->load(WSConfigClass::getXslDir()."xml2vot.xsl")) | |
89 | + $this->throwError("systemError", "Cannot load xsl file"); | |
90 | + | |
91 | + // Import XSL and write output file in vot format | |
92 | + $xslt = new XSLTProcessor(); | |
93 | + $xslt->importStylesheet($xsl); | |
94 | + $vot = new DomDocument("1.0"); | |
95 | + if (!@$vot->loadXML($xslt->transformToXML($xml))) | |
96 | + $this->throwError("systemError", "Cannot convert time table to VOtable"); | |
97 | + | |
98 | + if (!$vot->save(WSConfigClass::getWsResultDir().$outputName)) | |
99 | + $this->throwError("systemError", "Cannot save time table to result dir"); | |
100 | + } | |
101 | + | |
102 | + private function getDatasetInfo($id) | |
103 | + { | |
104 | + $dataSetXml = WSConfigClass::getDataSetInfoDir().$id.".xml"; | |
105 | + | |
106 | + if (!file_exists($dataSetXml)) | |
107 | + $this->throwError("systemError", "Cannot find info file for dataset ".$id); | |
108 | + | |
109 | + $dataSetDom = new DomDocument("1.0"); | |
110 | + | |
111 | + if (!@$dataSetDom->load($dataSetXml)) | |
112 | + $this->throwError("systemError", "Cannot load info file for dataset ".$id); | |
113 | + | |
114 | + return $dataSetDom; | |
115 | + } | |
116 | + | |
117 | +/* | |
118 | +* get user TimeTables list; Shared for impex | |
119 | +*/ | |
120 | + private function getTimeTablesCatalogsList($object) | |
121 | + { | |
122 | + $this->initUserMgr(true); | |
123 | + $dom = new DOMDocument("1.0"); | |
124 | + | |
125 | + if ($this->userID == 'impex') { | |
126 | + $sharedObjMgr = new SharedObjectsMgr(); | |
127 | + if (!@$dom->load($sharedObjMgr->getTreeFilePath())) | |
128 | + $this->throwError("workspaceError", "Workspace Error : Cannot load Shared TimeTable list"); | |
129 | + } | |
130 | + else { | |
131 | + if (!@$dom->load(USERWSDIR.'Tt.xml')) | |
132 | + $this->throwError("workspaceError", "Workspace Error : Cannot load TimeTable list for ".$this->userID); | |
133 | + } | |
134 | + | |
135 | + $tagName = $object == "timetables" ? "timetabList" : "catalogList"; | |
136 | + $timetabNode = $dom->getElementsByTagName($tagName); | |
137 | + | |
138 | + if ($timetabNode->length < 1){ | |
139 | + $this->throwError("workspaceWarning", "Workspace Warning : No $object"); | |
140 | + } | |
141 | + | |
142 | + $outDOM = new DOMDocument("1.0"); | |
143 | + $outDOM->formatOutput = TRUE; | |
144 | + $outDOM->preserveWhiteSpace = FALSE; | |
145 | + | |
146 | + $newNode = $outDOM->importNode($timetabNode->item(0),TRUE); | |
147 | + $outDOM->appendChild($newNode); | |
148 | + | |
149 | + $ttListResult = $object.'_'.$this->userID.'_'.$this->requestTime.'.xml'; | |
150 | + | |
151 | + if (!$outDOM->save(WSConfigClass::getWsResultDir().$ttListResult)) | |
152 | + $this->throwError("workspaceError", "Workspace Error : problem while saving $object list file"); | |
153 | + | |
154 | + return WSConfigClass::getUrl().$ttListResult; | |
155 | + } | |
156 | + | |
157 | +/* | |
158 | +* Get corresponding orbit parameter ID | |
159 | +*/ | |
160 | + private function getOrbitParameter($orbitRequest) | |
161 | + { | |
162 | + if (!file_exists(WSConfigClass::getOrbitsXml())) | |
163 | + $this->throwError('systemError', "No AMDA system orbits file"); | |
164 | + | |
165 | + $orbitsXml = new DomDocument(); | |
166 | + | |
167 | + if (!@$orbitsXml->load(WSConfigClass::getOrbitsXml())) | |
168 | + $this->throwError('systemError', "Cannot load AMDA system orbits file"); | |
169 | + | |
170 | + $spacecraft = strtolower($orbitRequest['spacecraft']); | |
171 | + $spacecraft = str_replace('-', '', $spacecraft); | |
172 | + | |
173 | + $xpath = new DOMXpath($orbitsXml); | |
174 | + $path = '//orbites[@mission="'.$spacecraft.'" and @coordinate_system="'.$orbitRequest['coordinateSystem'].'" and @units="'.$orbitRequest['units'].'" ] '; | |
175 | + | |
176 | + $orbits = $xpath->query($path); | |
177 | + | |
178 | + foreach ($orbits as $orbit) | |
179 | + { | |
180 | + $datasetID = strtr($orbit->getAttribute('dataset'),"_","-"); | |
181 | + $dataSetDom = $this->getDatasetInfo($datasetID); | |
182 | + | |
183 | + $paramStart = strtotime($dataSetDom->getElementsByTagName('global_start')->item(0)->nodeValue); | |
184 | + $paramStop = strtotime($dataSetDom->getElementsByTagName('global_stop')->item(0)->nodeValue); | |
185 | + | |
186 | + if(($paramStart <= strtotime($orbitRequest['startTime']) && (strtotime($orbitRequest['stopTime'])) <= $paramStop)) { | |
187 | + | |
188 | + return array('success' => true, | |
189 | + 'parameterID' => $orbit->getAttribute('xml:id') | |
190 | + ); | |
191 | + } | |
192 | + } | |
193 | + | |
194 | + $this->throwError('systemError', | |
195 | + "Cannot find orbit data for ".$orbitRequest['spacecraft']." for ".$orbitRequest['startTime']."-".$orbitRequest['stopTime']." in ".$orbitRequest['units']." ".$orbitRequest['coordinateSystem']."($paramStart - $paramStop)"); | |
196 | + } | |
197 | + | |
198 | + private function doDownloadRequest($interval, $paramList, $formatInfo) | |
199 | + { | |
200 | + if (!isset($this->paramLoader)) | |
201 | + $this->paramLoader = new IHMUserParamLoaderClass(); | |
202 | + | |
203 | + //Build parameter list | |
204 | + $params = array(); | |
205 | + | |
206 | + //TODO template arguments to implement ? | |
207 | + foreach ($paramList['params'] as $paramId) | |
208 | + { | |
209 | + $param = new stdClass; | |
210 | + | |
211 | + if (preg_match("#^ws_#",$paramId)) | |
212 | + { | |
213 | + $res = $this->paramLoader->getDerivedParameterNameFromId($paramId); | |
214 | + | |
215 | + if (!$res["success"]) { | |
216 | + $this->throwError("serverError", "Not available derived parameter $paramId"); | |
217 | + } | |
218 | + $param->paramid = "ws_".$res['name']; | |
219 | + } | |
220 | + else if (preg_match("#^wsd_#",$paramId)) | |
221 | + { | |
222 | + $res = $this->paramLoader->getUploadedParameterNameFromId($paramId); | |
223 | + | |
224 | + if (!$res["success"]){ | |
225 | + $this->throwError("serverError", "Not available parameter $paramId"); | |
226 | + } | |
227 | + $param->paramid = "wsd_".$res['name']; | |
228 | + } | |
229 | + else { | |
230 | + $param->paramid = $paramId; | |
231 | + } | |
232 | + $params[] = $param; | |
233 | + } | |
234 | + | |
235 | + $obj = (object)array( | |
236 | + "sampling" => $interval['sampling'], | |
237 | + "startDate" => $interval['startTime'], | |
238 | + "stopDate" => $interval['stopTime'], | |
239 | + "list" => $params, | |
240 | + "fileformat" => $formatInfo['format'], | |
241 | + "timeformat" => $formatInfo['timeFormat'], | |
242 | + "compression" => $formatInfo['gzip'] | |
243 | + ); | |
244 | + | |
245 | + if (!isset($this->requestManager)) | |
246 | + $this->requestManager = new RequestManagerClass(); | |
247 | + | |
248 | + try { | |
249 | + $downloadResult = $this->requestManager->runWSRequest($this->userID, $this->IPclient, FunctionTypeEnumClass::PARAMS, $this->service, $obj); | |
250 | + } catch (Exception $e) { | |
251 | + $this->throwError("executionError", "Exception detected : ".$e->getMessage()); | |
252 | + } | |
253 | + | |
254 | + if (!$downloadResult['success']) { | |
255 | + $this->throwError("serverError", $downloadResult['message']); | |
256 | + } | |
257 | + | |
258 | + if($downloadResult['status'] == 'in_progress') { | |
259 | + return ['success' => true, 'status' => 'in progress', 'id' => $downloadResult['id']]; | |
260 | + } elseif ($downloadResult['status'] == 'done') | |
261 | + { | |
262 | + $this->deleteProcess($downloadResult['id']); | |
263 | + return array('success' => true, 'status' => 'done', 'dataFileURLs' => WSConfigClass::getUrl().$downloadResult['result']); | |
264 | + } else { | |
265 | + return ['success' => false, 'message' => 'Unknown status ' . $downloadResult['status']]; | |
266 | + } | |
267 | + } | |
268 | + | |
269 | +/* | |
270 | +* delete process after execution : | |
271 | +* delete temporary files/folders ( JOBS/process_xxxx, RES/DDxxx ); | |
272 | +* delete job node in processManager.xml | |
273 | +*/ | |
274 | + private function deleteProcess($id) | |
275 | + { | |
276 | + $obj = (object)array('id' => $id); | |
277 | + | |
278 | + if (!isset($this->requestManager)) | |
279 | + $this->requestManager = new RequestManagerClass(); | |
280 | + | |
281 | + try { | |
282 | + $downloadResult = $this->requestManager->runWSRequest($this->userID, $this->IPclient, FunctionTypeEnumClass::PROCESSDELETE, null, $obj); | |
283 | + } catch (Exception $e) { | |
284 | + $this->throwError("deleteProcessError", $e->getMessage()); | |
285 | + } | |
286 | + } | |
287 | + | |
288 | +/* | |
289 | +* generate AUTH token for access to REST services | |
290 | +*/ | |
291 | + public function getNewToken() | |
292 | + { | |
293 | + // generate token from timeStamp and some salt | |
294 | + $newToken = md5(1321 * (int)( time() / WSConfigClass::$timeLimitQuery)); | |
295 | + | |
296 | + return array('success' => true, 'token' => $newToken); | |
297 | + } | |
298 | + | |
299 | +/************************** WEB SERVICES **************************************/ | |
300 | + | |
301 | +/* | |
302 | +* public data only : user impex | |
303 | +*/ | |
304 | + public function getObsDataTree() | |
305 | + { | |
306 | + $res = $this->init(); | |
307 | + $this->initUserMgr(); | |
308 | + | |
309 | + $locParamSrc = USERWSDIR.'LocalParams.xml'; | |
310 | + $locParamDst = substr(strtolower(__FUNCTION__),3).'_'.$this->userID.'_'.$this->requestTime.'_AmdaLocalDataBaseParameters.xml'; | |
311 | + | |
312 | + if (!copy($locParamSrc,WSConfigClass::getWsResultDir().$locParamDst)) | |
313 | + $this->throwError('workspaceError', 'No Amda Local DataBase Parameters description file'); | |
314 | + | |
315 | + return array('success' => true,'WorkSpace' => array("LocalDataBaseParameters" => WSConfigClass::getUrl().$locParamDst)); | |
316 | + } | |
317 | + | |
318 | +/* | |
319 | +* get Parameter List for given user | |
320 | +*/ | |
321 | + public function getParameterList($data) | |
322 | + { | |
323 | + $res = $this->init($data); | |
324 | + $this->initUserMgr(); | |
325 | + | |
326 | + $vars = $res['vars']; | |
327 | + | |
328 | + $locParamSrc = USERWSDIR.'LocalParams.xml'; | |
329 | + $wsParamSrc = USERWSDIR.'WsParams.xml'; | |
330 | + | |
331 | + $locParamDst = substr(strtolower(__FUNCTION__),3).'_'.$this->userID.'_'.$this->requestTime.'_AmdaLocalDataBaseParameters.xml'; | |
332 | + $wsParamDst = substr(strtolower(__FUNCTION__),3).'_'.$this->userID.'_'.$this->requestTime.'_UserDefinedParameters.xml'; | |
333 | + | |
334 | + if (!copy($locParamSrc, WSConfigClass::getWsResultDir().$locParamDst)) | |
335 | + $this->throwError('workspaceError', 'No Amda Local DataBase Parameters description file for '.$this->userID); | |
336 | + | |
337 | + if (!copy($wsParamSrc, WSConfigClass::getWsResultDir().$wsParamDst)) | |
338 | + $this->throwError('workspaceError', 'No User Defined Parameters description file for '.$this->userID); | |
339 | + | |
340 | + return array('success' => true,'ParameterList' => | |
341 | + array("UserDefinedParameters" => WSConfigClass::getUrl().$wsParamDst, | |
342 | + "LocalDataBaseParameters" => WSConfigClass::getUrl().$locParamDst, | |
343 | + "RemoteDataBaseParameters" => "not implemented")); | |
344 | + } | |
345 | + | |
346 | +/* | |
347 | +* getParameter | |
348 | +*/ | |
349 | + public function getParameter($data) | |
350 | + { | |
351 | + $res = $this->init($data); | |
352 | + | |
353 | + if (!$res['success']){ | |
354 | + $this->throwError("requestError", "Cannot parse request"); | |
355 | + } | |
356 | + | |
357 | + $this->initUserMgr(); | |
358 | + | |
359 | + $vars = $res['vars']; | |
360 | + | |
361 | + if (strtotime($vars["stopTime"]) <= strtotime($vars["startTime"])){ | |
362 | + $this->throwError("requestError", "Requested time interval should be greater than 0"); | |
363 | + } | |
364 | + | |
365 | + $paramId = array(); | |
366 | + array_push($paramId, $vars["parameterID"]); | |
367 | + | |
368 | + if (!$vars["timeFormat"]) | |
369 | + $timeFormat = "ISO8601"; | |
370 | + else | |
371 | + $timeFormat = $vars["timeFormat"]; | |
372 | + | |
373 | + if (!$vars["gzip"]) | |
374 | + $gzip = 0; | |
375 | + else | |
376 | + $gzip = $vars["gzip"]; | |
377 | + | |
378 | + if (!$vars["stream"]) | |
379 | + $stream = 0; | |
380 | + else | |
381 | + $stream = $vars["stream"]; | |
382 | + | |
383 | + $this->service = strtolower(__FUNCTION__); | |
384 | + | |
385 | + $res = $this->doDownloadRequest( | |
386 | + array("startTime" => $vars["startTime"], "stopTime" => $vars["stopTime"], "sampling" => $vars["sampling"]), | |
387 | + array("params" => $paramId), | |
388 | + array("format" => $vars["outputFormat"], "timeFormat"=> $timeFormat, "gzip"=>$gzip, "stream"=>$stream)); | |
389 | + | |
390 | + if ($res['success']) | |
391 | + return $res; | |
392 | + | |
393 | + $this->throwError("serverError", $res['message']); | |
394 | + } | |
395 | + | |
396 | +/* | |
397 | +* get user Catalogs list; Shared for impex | |
398 | +*/ | |
399 | + public function getCatalogsList($data) | |
400 | + { | |
401 | + $this->init($data); | |
402 | + $this->init($data); | |
403 | + return array('success' => true, 'CatalogsList' => $this->getTimeTablesCatalogsList('catalogs')); | |
404 | + } | |
405 | + | |
406 | +/* | |
407 | +* get user TimeTables list; Shared for impex | |
408 | +*/ | |
409 | + public function getTimeTablesList($data) | |
410 | + { | |
411 | + $this->init($data); | |
412 | + | |
413 | + return array('success' => true, 'TimeTablesList' => $this->getTimeTablesCatalogsList('timetables')); | |
414 | + } | |
415 | + | |
416 | + public function isAlive() | |
417 | + { | |
418 | + return true; | |
419 | + } | |
420 | + | |
421 | +/* | |
422 | +* get Dataset | |
423 | +*/ | |
424 | + public function getDataset($data) | |
425 | + { | |
426 | + $res = $this->init($data); | |
427 | + | |
428 | + if (!$res['success']){ | |
429 | + $this->throwError("requestError", "Cannot parse request"); | |
430 | + } | |
431 | + | |
432 | + $this->initUserMgr(); | |
433 | + | |
434 | + $vars = $res['vars']; | |
435 | + | |
436 | + if (strtotime($vars["stopTime"]) <= strtotime($vars["startTime"])){ | |
437 | + $this->throwError("requestError", "Requested time interval should be greater than 0"); | |
438 | + } | |
439 | + | |
440 | + $dataSetDom = $this->getDatasetInfo($vars['datasetID']); | |
441 | + | |
442 | + $params = $dataSetDom->getElementsByTagName("parameter"); | |
443 | + | |
444 | + if ($params->length == 0) | |
445 | + $this->throwError("systemError", "Cannot find parameter list for dataset ".$vars['datasetID']); | |
446 | + | |
447 | + $paramId = array(); | |
448 | + | |
449 | + foreach ($params as $p) | |
450 | + $paramId[] = $p->nodeValue; | |
451 | + | |
452 | + if (!$vars["sampling"]) | |
453 | + { | |
454 | + $sampling = $dataSetDom->getElementsByTagName('min_sampling')->item(0)->nodeValue; | |
455 | + | |
456 | + $units = substr($sampling,-1); | |
457 | + $sampling = substr($sampling,0,strlen($sampling)-1); | |
458 | + | |
459 | + switch ($units) { | |
460 | +// case 'S': | |
461 | +// $sampling = floatval($sampling); | |
462 | +// break; | |
463 | + case 'M': | |
464 | + $sampling = floatval($sampling)*60; | |
465 | + break; | |
466 | + case 'H': | |
467 | + $sampling = floatval($sampling)*60*60; | |
468 | + break; | |
469 | + default: | |
470 | + } | |
471 | + } | |
472 | + else { | |
473 | + $sampling = $vars["sampling"]; | |
474 | + } | |
475 | + | |
476 | + if (!$vars["timeFormat"]) | |
477 | + $timeFormat = "ISO8601"; | |
478 | + else | |
479 | + $timeFormat = $vars["timeFormat"]; | |
480 | + | |
481 | + if (!$vars["gzip"]) | |
482 | + $gzip = 0; | |
483 | + else | |
484 | + $gzip = $vars["gzip"]; | |
485 | + | |
486 | + if (!$vars["stream"]) | |
487 | + $stream = 0; | |
488 | + else | |
489 | + $stream = $vars["stream"]; | |
490 | + | |
491 | + $this->service = strtolower(__FUNCTION__); | |
492 | + | |
493 | + $res = $this->doDownloadRequest( | |
494 | + array("startTime" => $vars["startTime"], "stopTime" => $vars["stopTime"], "sampling" => $sampling), | |
495 | + array("params" => $paramId), | |
496 | + array("format" => $vars["outputFormat"], "timeFormat"=> $timeFormat, "gzip"=>$gzip, "stream"=>$stream)); | |
497 | + | |
498 | + if ($res['success']) return $res; | |
499 | + | |
500 | + $this->throwError("serverError", $res['message']); | |
501 | + } | |
502 | + | |
503 | +/* | |
504 | +* get status for jobs in batch | |
505 | +*/ | |
506 | + public function getStatus($data) | |
507 | + { | |
508 | + $result = $this->init($data); | |
509 | + | |
510 | + $id = $result['vars']['id']; | |
511 | + | |
512 | + if (!isset($this->requestManager)) | |
513 | + $this->requestManager = new RequestManagerClass(); | |
514 | + | |
515 | + try | |
516 | + { | |
517 | + $res = $this->requestManager->runWSRequest('nobody', 'nobody', FunctionTypeEnumClass::PROCESSGETINFO, null, $id); | |
518 | + } | |
519 | + catch (Exception $e) | |
520 | + { | |
521 | + // after first getStatus() call process is deleted | |
522 | + $jobsManager = new WSJobsManagerClass(); | |
523 | + | |
524 | + try | |
525 | + { | |
526 | + $res = $jobsManager->getResultFromProcessId($id); | |
527 | + if (!$res['success']) { | |
528 | + $this->throwError("processError","Cannot retrieve process $id info"); | |
529 | + } | |
530 | + | |
531 | + $resultTag = $this->isGetPlotRequest($res['result']) ? 'plotURL' : 'dataFileURLs'; | |
532 | + | |
533 | + return array('success' => true, 'status' => 'done', $resultTag => WSConfigClass::getUrl().$res['result']); | |
534 | + } | |
535 | + catch (Exception $e) | |
536 | + { | |
537 | + $this->throwError("getResultFromProcessIdError", "Exception detected : ".$e->getMessage()); | |
538 | + } | |
539 | + } | |
540 | + | |
541 | + if (!$res['success']) { | |
542 | + $this->throwError("processError","Cannot retrieve process $id info"); | |
543 | + } | |
544 | + | |
545 | + if ($res['status'] == 'in_progress') { | |
546 | + return array('success' => true, 'status' => 'in progress'); | |
547 | + } | |
548 | + | |
549 | + if ($res['error']) { | |
550 | + $this->throwError("processError","Process $id error code"); | |
551 | + } | |
552 | + | |
553 | + $this->deleteProcess($res['id']); | |
554 | + | |
555 | + $resultTag = $this->isGetPlotRequest($res['result']) ? 'plotURL' : 'dataFileURLs'; | |
556 | + | |
557 | + return array('success' => true, 'status' => $res['status'], $resultTag => WSConfigClass::getUrl().$res['result']); | |
558 | + } | |
559 | + | |
560 | +/* | |
561 | +* TODO Can be done by TTCONVERT function of AMDA_Kernel - more hard !!! | |
562 | +* TODO Think about this if merge/union will be also done by AMDA_Kernel | |
563 | +* | |
564 | +* get Time Table : shared for impex ; user' for user | |
565 | +*/ | |
566 | + public function getTimeTable($data) | |
567 | + { | |
568 | + $res = $this->init($data); | |
569 | + | |
570 | + if (!$res['success']){ | |
571 | + $this->throwError("requestError", "Cannot parse request"); | |
572 | + } | |
573 | + | |
574 | + $this->initUserMgr(true); | |
575 | + | |
576 | + $ttID = $res['vars']['ttID']; | |
577 | + | |
578 | + if ($this->userID == 'impex') { | |
579 | + $sharedObjMgr = new SharedObjectsMgr(); | |
580 | + $ttSrc = $sharedObjMgr->getDataFilePath('timeTable', $ttID); | |
581 | + } | |
582 | + else | |
583 | + $ttSrc = USERTTDIR.$ttID.'.xml'; | |
584 | + | |
585 | + if (!file_exists($ttSrc)) { | |
586 | + $this->throwError("workspaceError", "No such table ".$ttID." for user ".$this->userID); | |
587 | + } | |
588 | + | |
589 | + $ttDst = substr(strtolower(__FUNCTION__), 3)."_".$this->userID."_".$this->requestTime."_$ttID.xml"; | |
590 | + | |
591 | + //TODO can be done by | |
592 | + // $res = $this->requestManager->runWSRequest($this->userID, $this->IPclient,FunctionTypeEnumClass::TTCONVERT, null, $ttID); | |
593 | + $this->xsl2vot($ttSrc,$ttDst); | |
594 | + | |
595 | + return array('success' => true, 'ttFileURL' => WSConfigClass::getUrl().$ttDst); | |
596 | + } | |
597 | + | |
598 | +/* | |
599 | +* get Orbits | |
600 | +*/ | |
601 | + public function getOrbites($data) | |
602 | + { | |
603 | + $res = $this->init($data); | |
604 | + | |
605 | + if (!$res['success']){ | |
606 | + $this->throwError("requestError", "Cannot parse request"); | |
607 | + } | |
608 | + | |
609 | + $this->initUserMgr(); | |
610 | + | |
611 | + $vars = $res['vars']; | |
612 | + | |
613 | + if (strtotime($vars["stopTime"]) <= strtotime($vars["startTime"])){ | |
614 | + $this->throwError("requestError", "Requested time interval should be greater than 0"); | |
615 | + } | |
616 | + | |
617 | + $spacecraft = $vars["spacecraft"]; | |
618 | + $coordinateSystem = $vars["coordinateSystem"]; | |
619 | + | |
620 | + if (!$vars["units"]) | |
621 | + $units = "km"; | |
622 | + else | |
623 | + $units = $vars["units"]; | |
624 | + | |
625 | + $orbitRequest = array("startTime" => $vars["startTime"], | |
626 | + "stopTime" => $vars["stopTime"], | |
627 | + "spacecraft" => $spacecraft, | |
628 | + "coordinateSystem" => $coordinateSystem, | |
629 | + "units" => $units | |
630 | + ); | |
631 | + | |
632 | + $orbitParam = $this->getOrbitParameter($orbitRequest); | |
633 | + | |
634 | + $paramId = array(); | |
635 | + array_push($paramId, $orbitParam['parameterID']); | |
636 | + | |
637 | + if (!$vars["timeFormat"]) | |
638 | + $timeFormat = "ISO8601"; | |
639 | + else | |
640 | + $timeFormat = $vars["timeFormat"]; | |
641 | + | |
642 | + if (!$vars["gzip"]) | |
643 | + $gzip = 0; | |
644 | + else | |
645 | + $gzip = $vars["gzip"]; | |
646 | + | |
647 | + $this->service = strtolower(__FUNCTION__); | |
648 | + | |
649 | + $res = $this->doDownloadRequest( | |
650 | + array("startTime" => $vars["startTime"], "stopTime" => $vars["stopTime"], "sampling" => $vars["sampling"]), | |
651 | + array("params" => $paramId), | |
652 | + array("format" => $vars["outputFormat"], "timeFormat"=> $timeFormat, "gzip"=>$gzip, "stream"=>$stream)); | |
653 | + | |
654 | + if ($res['success']) return $res; | |
655 | + | |
656 | + $this->throwError("serverError",$res['message']); | |
657 | + } | |
658 | + | |
659 | +/* | |
660 | +* getPlot : predefined; by mission | |
661 | +*/ | |
662 | + public function getPlot($data) | |
663 | + { | |
664 | + $res = $this->init($data); | |
665 | + | |
666 | + if (!$res['success']){ | |
667 | + $this->throwError("requestError", "Cannot parse request"); | |
668 | + } | |
669 | + | |
670 | + $this->initUserMgr(); | |
671 | + | |
672 | + $vars = $res['vars']; | |
673 | + $mission = $vars["missionID"]; | |
674 | + | |
675 | + $resultFilePrefix = strtolower(__FUNCTION__)."_".$mission."_".date("YmdHms",strtotime($vars["startTime"]))."_".date("YmdHms",strtotime($vars["stopTime"])); | |
676 | + | |
677 | + if ($this->userID != "impex") | |
678 | + $resultFilePrefix .= "_".$this->userID; | |
679 | + | |
680 | + $dom = new DomDocument("1.0"); | |
681 | + if (!@$dom->load(WSConfigClass::getXslDir()."AmdaPlots.xml")) | |
682 | + $this->throwError("systemError", "Cannot load predefined plot definition"); ; | |
683 | + | |
684 | + $missionTag = $dom->getElementById($mission); | |
685 | + $params = $missionTag->getElementsByTagName('param'); | |
686 | + | |
687 | + $paramsList = array(); | |
688 | + foreach ($params as $param) | |
689 | + $paramsList[] = $param->getAttribute('name'); | |
690 | + | |
691 | + $requestObject = (Object) array( | |
692 | + "nodeType" => "request", | |
693 | + "file-format" => "PNG", | |
694 | + "result-file" => $resultFilePrefix, | |
695 | + "timesrc" => "Interval", | |
696 | + "startDate" => $vars["startTime"], | |
697 | + "stopDate" => $vars["stopTime"], | |
698 | + "parameters" => array() | |
699 | + ); | |
700 | + | |
701 | + foreach ($paramsList as $paramToPlot) | |
702 | + { | |
703 | + $paramObject = (Object) array( | |
704 | + "paramid" => $paramToPlot | |
705 | + ); | |
706 | + | |
707 | + $requestObject->{"parameters"}[] = $paramObject; | |
708 | + } | |
709 | + | |
710 | + $this->service = strtolower(__FUNCTION__); | |
711 | + | |
712 | + if (!isset($this->requestManager)) | |
713 | + $this->requestManager = new RequestManagerClass(); | |
714 | + | |
715 | + try { | |
716 | + $plotResult = $this->requestManager->runWSRequest($this->userID, $this->IPclient, FunctionTypeEnumClass::PARAMS, $this->service, $requestObject); | |
717 | + } catch (Exception $e) { | |
718 | + $this->throwError("plotError", "Exeption detected : ".$e->getMessage()); | |
719 | + } | |
720 | + | |
721 | + if (!$plotResult['success']) { | |
722 | + $this->throwError("serverError", $plotResult['message']); | |
723 | + } | |
724 | + | |
725 | + if($plotResult['status'] == 'in_progress') { | |
726 | + return ['success' => true, 'status' => 'in progress', 'id' => $plotResult['id']]; | |
727 | + } elseif ($plotResult['status'] == 'done') | |
728 | + { | |
729 | + $this->deleteProcess($plotResult['id']); | |
730 | + return array('success' => true, 'status' => 'done', 'plotFileURL' => WSConfigClass::getUrl().$plotResult['result']); | |
731 | + } else { | |
732 | + return ['success' => false, 'message' => 'Unknown status ' . $plotResult['status']]; | |
733 | + } | |
734 | + } | |
735 | +} | |
736 | +?> | |
... | ... |
... | ... | @@ -0,0 +1,48 @@ |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<missions> | |
3 | + <mission xml:id='ACE'> | |
4 | + <param name='sw_vb'/> | |
5 | + <param name='sw_t'/> | |
6 | + <param name='sw_n'/> | |
7 | + <param name='imf'/> | |
8 | + <param name='imf_mag'/> | |
9 | + </mission> | |
10 | + <mission xml:id='WIND'> | |
11 | + <param name='wnd_swe_vmag'/> | |
12 | + <param name='wnd_swe_vth'/> | |
13 | + <param name='wnd_swe_n'/> | |
14 | + <param name='wnd_b' class="mag"/> | |
15 | + <param name='wnd_bmag'/> | |
16 | + </mission> | |
17 | + <mission xml:id='STEREO-A'> | |
18 | + <param name='vpbulk_sta'/> | |
19 | + <param name='vth_sta'/> | |
20 | + <param name='np_sta'/> | |
21 | + <param name='sta_b'/> | |
22 | + <param name='sta_btot'/> | |
23 | + </mission> | |
24 | + <mission xml:id='STEREO-B'> | |
25 | + <param name='vpbulk_stb'/> | |
26 | + <param name='vth_stb'/> | |
27 | + <param name='np_stb'/> | |
28 | + <param name='stb_b'/> | |
29 | + <param name='stb_btot'/> | |
30 | + </mission> | |
31 | + <mission xml:id='VEX'> | |
32 | + <param name='vex_mag_4s'/> | |
33 | + <param name='vex_mag_4s_tot'/> | |
34 | + </mission> | |
35 | + <mission xml:id='OMNI'> | |
36 | + <param name='omni_sw_v'/> | |
37 | + <param name='omni_sw_t'/> | |
38 | + <param name='omni_sw_n'/> | |
39 | + <param name='omni_imf' /> | |
40 | + <param name='omni_imf_mag'/> | |
41 | + </mission> | |
42 | + <mission xml:id='GEOMAG'> | |
43 | + <param name='omni_kp'/> | |
44 | + <param name='omni_dst'/> | |
45 | + <param name='omni_ae'/> | |
46 | + </mission> | |
47 | +</missions> | |
48 | + | |
... | ... |
... | ... | @@ -0,0 +1,39 @@ |
1 | +<xsl:stylesheet version="1.0" | |
2 | +xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |
3 | + | |
4 | +<xsl:output method="xml"/> | |
5 | + | |
6 | +<xsl:template match="/timetable"> | |
7 | + <VOTABLE version='1.1'> | |
8 | + <DESCRIPTION> | |
9 | + Name: <xsl:value-of select="name"/>; | |
10 | + Description: <xsl:value-of select="description"/>; | |
11 | + Historic: <xsl:value-of select="history"/>; | |
12 | + Creation Date : <xsl:value-of select="created"/>; | |
13 | + </DESCRIPTION> | |
14 | +<RESOURCE> | |
15 | +<DESCRIPTION> | |
16 | + AMDA @ CDPP | |
17 | +</DESCRIPTION> | |
18 | +<TABLE> | |
19 | +<FIELD datatype='char' name='Start Time' ID='TimeIntervalStart' ucd='time.start'> | |
20 | + <DESCRIPTION>time tag for beginning of interval</DESCRIPTION> | |
21 | +</FIELD> | |
22 | +<FIELD datatype='char' name='Stop Time' ID='TimeIntervalStop' ucd='time.stop'> | |
23 | + <DESCRIPTION>time tag for end of interval</DESCRIPTION> | |
24 | +</FIELD> | |
25 | +<DATA> | |
26 | + <TABLEDATA> | |
27 | + <xsl:for-each select="intervals"> | |
28 | + <TR> | |
29 | + <TD><xsl:value-of select="start"/></TD> | |
30 | + <TD><xsl:value-of select="stop"/></TD> | |
31 | + </TR> | |
32 | + </xsl:for-each> | |
33 | + </TABLEDATA> | |
34 | + </DATA> | |
35 | + </TABLE> | |
36 | + </RESOURCE> | |
37 | + </VOTABLE> | |
38 | +</xsl:template> | |
39 | +</xsl:stylesheet> | |
... | ... |
php/classes/AmdaAction.php
... | ... | @@ -844,9 +844,9 @@ class AmdaAction |
844 | 844 | } |
845 | 845 | |
846 | 846 | /* |
847 | -* Get Jobs en cours | |
847 | +* Get running jobs | |
848 | 848 | */ |
849 | - public function getJobs() | |
849 | + public function getJobs($obj = null) | |
850 | 850 | { |
851 | 851 | $obj = (object) array(); |
852 | 852 | return $this->executeRequest($obj, FunctionTypeEnumClass::PROCESSRUNNINGINFO); |
... | ... | @@ -863,10 +863,10 @@ class AmdaAction |
863 | 863 | return array('success' => true); |
864 | 864 | } |
865 | 865 | |
866 | - if (isset($obj->username) && isset($obj->password) && isset($obj->sessionID)) { | |
867 | - //$dd = new WSUserMgr(); | |
868 | - //$dd->init($obj->username,$obj->password,$obj->sessionID); | |
869 | - return array('success' => false, "message" => "AKKA-KERNEL-INT - WS support not implemented"); | |
866 | + if (isset($obj->username) && isset($obj->password) && isset($obj->sessionID)) | |
867 | + { | |
868 | + $dd = new WSUserMgr(); | |
869 | + $dd->init($obj->username,$obj->password,$obj->sessionID, false); | |
870 | 870 | } |
871 | 871 | else { |
872 | 872 | $dd = new UserMgr(); |
... | ... | @@ -881,8 +881,11 @@ class AmdaAction |
881 | 881 | return array('success' => false, 'message' => 'ddLogin error: '.$res); |
882 | 882 | } |
883 | 883 | |
884 | - if ($dd->user == 'impex') { | |
885 | - return array('success' => false, "message" => "AKKA-KERNEL-INT - WS support for IMPEx not implemented"); | |
884 | + if ($dd->user == 'impex') | |
885 | + { | |
886 | + //if ($dd->getWsSize() > DISK_QUOTA * 100) | |
887 | + // error_log('Natacha! It is time to CLEAN UP IMPEX WS!',1,'nbourrel@irap.omp.eu'); | |
888 | +// return array('success' => false, "message" => "AKKA-KERNEL-INT - WS support for IMPEx not implemented"); | |
886 | 889 | } |
887 | 890 | else { |
888 | 891 | // check disk space |
... | ... |
php/classes/RequestMgr.php
... | ... | @@ -241,7 +241,8 @@ class RequestMgr extends AmdaObjectMgr |
241 | 241 | if ($obj->timesrc != 'Interval') break; |
242 | 242 | |
243 | 243 | foreach ($obj->list as $param) |
244 | - { | |
244 | + { | |
245 | + | |
245 | 246 | //TODO not in code spase___IMPEX_ !!! |
246 | 247 | //TODO other models (tsyganenko etc) |
247 | 248 | if (preg_match("#^spase___IMPEX_#", $param->paramid)) |
... | ... | @@ -249,14 +250,16 @@ class RequestMgr extends AmdaObjectMgr |
249 | 250 | if ($param->template_args->url_XYZ) $params[] = $param->template_args->url_XYZ; |
250 | 251 | } |
251 | 252 | } |
252 | - if (!empty($params)) | |
253 | + | |
254 | + if (!empty($params)) | |
253 | 255 | { |
256 | + // tab is not defined, iterate over $obj->tabs? | |
254 | 257 | $argsTab['param'] = array_unique($params); |
255 | 258 | $argsTab['startTime'] = $tab->{'multi-plot-linked'} ? $obj->startDate : $tab->startDate; |
256 | 259 | $argsTab['stopTime'] = $tab->{'multi-plot-linked'} ? $obj->startDate : $tab->stopDate; |
257 | 260 | } |
258 | 261 | if (count($argsTab) > 0) $args[] = $argsTab; |
259 | - | |
262 | + | |
260 | 263 | break; |
261 | 264 | case 'statistics' : |
262 | 265 | return array('success' => true); |
... | ... | @@ -264,23 +267,23 @@ class RequestMgr extends AmdaObjectMgr |
264 | 267 | default : |
265 | 268 | return array('success' => false, 'message' => "unknown action ".$obj->nodeType); |
266 | 269 | } |
267 | - | |
268 | - if (count($args) === 0) return array('success' => true); | |
269 | - | |
270 | + | |
271 | + if (count($args) === 0) return array('success' => true); | |
272 | + | |
270 | 273 | try |
271 | 274 | { |
272 | 275 | $client = new SoapClient(DD_WSDL); |
273 | 276 | } |
274 | 277 | catch (SoapFault $exception) |
275 | - { | |
278 | + { | |
276 | 279 | return array('success' => false, 'message' => $exception->faultstring); |
277 | 280 | } |
278 | - | |
281 | + | |
279 | 282 | $orbitsXml = new DomDocument("1.0"); |
280 | 283 | $orbitsXml->load(orbitsAllXml); |
281 | 284 | $tr = array('_' => ':'); |
282 | - | |
283 | - foreach ($args as $tab) | |
285 | + | |
286 | + foreach ($args as $tab) | |
284 | 287 | { |
285 | 288 | $startTime = $tab['startTime']; |
286 | 289 | $stopTime = $tab['stopTime']; |
... | ... | @@ -309,8 +312,8 @@ class RequestMgr extends AmdaObjectMgr |
309 | 312 | return array('success' => false, 'message' => "Too big interval for IMPEX request : ".IMPEX_INTERVAL_LIMIT/86400.." day limit!"); |
310 | 313 | } |
311 | 314 | } |
312 | - | |
313 | - return array('success' => true); | |
315 | + | |
316 | + return array('success' => true); | |
314 | 317 | } |
315 | 318 | } |
316 | 319 | ?> |
... | ... |
php/classes/UserMgr.php
... | ... | @@ -542,7 +542,6 @@ unlink(USERWSDIR.'RemoteParams.xml'); |
542 | 542 | public function ddCheckUser() |
543 | 543 | { |
544 | 544 | $this->IP = $this->getIPclient(); |
545 | - | |
546 | 545 | $cmdCheckUser = "DDCheckUser ".$this->IP." ".$this->user." 1> /dev/null 2> /dev/null"; |
547 | 546 | system($cmdCheckUser, $res); |
548 | 547 | return $res; |
... | ... |
php/classes/WebServer.php deleted
... | ... | @@ -1,1037 +0,0 @@ |
1 | -<?php | |
2 | -/** | |
3 | -* @file WebServer.php | |
4 | -* @brief Web services AMDA | |
5 | -* | |
6 | -* @version $Id: WebServer.php 2968 2015-06-29 13:17:00Z natacha $ | |
7 | -*/ | |
8 | -class WebResultMgr | |
9 | -{ | |
10 | - private $resDOM; | |
11 | - private $rootEl; | |
12 | - private $resXP; | |
13 | - private $requestManager = null; | |
14 | - private $paramLoader = null; | |
15 | - | |
16 | - function __construct() | |
17 | - { | |
18 | - if (!is_dir(WSRESULT)) | |
19 | - mkdir(WSRESULT); | |
20 | - chmod(WSRESULT,0775); | |
21 | - | |
22 | - $this->resDOM = new DOMDocument("1.0"); | |
23 | - $this->resDOM->formatOutput = TRUE; | |
24 | - $this->resDOM->preserveWhiteSpace = FALSE; | |
25 | - | |
26 | - if (!file_exists(wsResultsXml)) | |
27 | - { | |
28 | - $this->rootEl = $this->resDOM->createElement('wsresults'); | |
29 | - $this->resDOM->appendChild($this->rootEl); | |
30 | - $this->resDOM->save(wsResultsXml); | |
31 | - } | |
32 | - | |
33 | - $this->resDOM->load(wsResultsXml); | |
34 | - | |
35 | - $this->resXP = new DOMXPath($this->resDOM); | |
36 | - | |
37 | - $this->rootEl = $this->resDOM->documentElement; | |
38 | - } | |
39 | - | |
40 | - public function addResult($function_name,$vars,$user,$IP,$output){ | |
41 | - $nodes = $this->rootEl->getElementsByTagName($function_name); | |
42 | - if($nodes->length < 1){ | |
43 | - $funcNode = $this->resDOM->createElement($function_name); | |
44 | - $this->rootEl->appendChild($funcNode); | |
45 | - } | |
46 | - else | |
47 | - $funcNode = $nodes->item(0); | |
48 | - | |
49 | - $oldOutput = $this->resXP->query('//'.$function_name.'/result[@output="'.$output.'"]'); | |
50 | - if ($oldOutput->length > 0) | |
51 | - $funcNode->removeChild($oldOutput->item(0)); | |
52 | - | |
53 | - $resNode = $this->resDOM->createElement('result'); | |
54 | - $resNode->setAttribute('date',time()); | |
55 | - $resNode->setAttribute('user',$user); | |
56 | -// $resNode->setAttribute('IP',$IP); | |
57 | - $resNode->setAttribute('input',json_encode($vars)); | |
58 | - $resNode->setAttribute('output',$output); | |
59 | - $funcNode->appendChild($resNode); | |
60 | - | |
61 | - $this->resDOM->save(wsResultsXml); | |
62 | - | |
63 | - return $resNode; | |
64 | - } | |
65 | - | |
66 | - public function getResOutputName($function_name,$user,$suffixe,$extension) | |
67 | - { | |
68 | - $outputFile = WSRESULT.$function_name."_".$user; | |
69 | - if (isset($suffixe)) | |
70 | - $outputFile .= ("_".$suffixe); | |
71 | - if (isset($extension)) | |
72 | - $outputFile .= (".".$extension); | |
73 | - else | |
74 | - $outputFile .= ".xml"; | |
75 | - return $outputFile; | |
76 | - } | |
77 | -} | |
78 | - | |
79 | -class WebServer | |
80 | -{ | |
81 | - private $isSoap = false; | |
82 | - private $userID, $userPWD, $sessionID; | |
83 | - private $wsUserMgr; | |
84 | - private $resultMgr, $myParamsInfoMgr; | |
85 | - private $dataFileName; | |
86 | - | |
87 | - function __construct() { | |
88 | - $this->userID = 'impex'; | |
89 | - $this->userPWD = 'impexfp7'; | |
90 | - $this->sessionID = $this->userID; | |
91 | - $this->myParamsInfoMgr = new ParamsInfoMgr(); | |
92 | - $this->resultMgr = new WebResultMgr(); | |
93 | - } | |
94 | - | |
95 | - protected function init($data) { | |
96 | - if(is_object($data)) | |
97 | - { | |
98 | - $vars = get_object_vars($data); | |
99 | - $this->isSoap = true; | |
100 | - } | |
101 | - else | |
102 | - $vars = $data; | |
103 | - | |
104 | - if (isset($vars['userID'])) | |
105 | - { | |
106 | - $this->userID = $vars['userID']; | |
107 | - $this->sessionID = $this->userID; | |
108 | - } | |
109 | - else { | |
110 | - $this->userID = 'impex'; | |
111 | - $this->sessionID = $this->userID; | |
112 | - } | |
113 | - if (isset($vars['password'])) | |
114 | - $this->userPWD = $vars['password']; | |
115 | - else | |
116 | - $this->userPWD = 'impexfp7'; | |
117 | - return array('success' => true, 'vars' => $vars); | |
118 | - } | |
119 | - | |
120 | - private function setID(){ | |
121 | - | |
122 | - $nb_min = 10000; | |
123 | - $nb_max = 99999; | |
124 | - $nombre = mt_rand($nb_min,$nb_max); | |
125 | - | |
126 | - $this->IP = $this->getIPclient(); | |
127 | - | |
128 | - return "PP".$nombre; | |
129 | - } | |
130 | - | |
131 | -/** | |
132 | - * Function getIPclient return the IP client sent a request for needs DD scripts (DDHtmlLogin, DDCheckUser, DD_Search) | |
133 | - * | |
134 | - * @param void | |
135 | - * @return string | |
136 | - */ | |
137 | - private function getIPclient(){ | |
138 | - | |
139 | - if (getenv('REMOTE_ADDR')) { | |
140 | - $realIP = getenv('REMOTE_ADDR'); | |
141 | - } | |
142 | - else { | |
143 | - //get local IP | |
144 | - $command="hostname -i"; | |
145 | - $realIP = exec($command); | |
146 | - } | |
147 | - | |
148 | - return $realIP; | |
149 | - } | |
150 | - | |
151 | - private function timeInterval2Days($TimeInterval){ | |
152 | - | |
153 | - $divDays = 60*60*24; | |
154 | - $nbDays = floor($TimeInterval / $divDays); | |
155 | - $divHours = 60*60; | |
156 | - $nbHours = floor(($TimeInterval - $divDays*$nbDays)/$divHours); | |
157 | - $nbMin = floor(($TimeInterval - $divDays*$nbDays - $divHours*$nbHours)/60); | |
158 | - $nbSec = $TimeInterval - $divDays*$nbDays - $divHours*$nbHours - $nbMin*60; | |
159 | - | |
160 | - $DD = sprintf("%03d", $nbDays); // format ex. 005 not 5 | |
161 | - $HH = sprintf("%02d", $nbHours); // format ex. 25 | |
162 | - $MM = sprintf("%02d", $nbMin); // format ex. 03 not 3 | |
163 | - $SS = sprintf("%02d", $nbSec); // format ex. 02 not 2 | |
164 | - | |
165 | - return $DD.':'.$HH.':'.$MM.':'.$SS; | |
166 | - | |
167 | - } | |
168 | - | |
169 | -/* Start Time into AMDA format YYYY:DOY-1:HH:MM:SS */ | |
170 | - private function startTime2Days($startTime){ | |
171 | - | |
172 | - $ddStart = getdate($startTime); | |
173 | - $date_start = sprintf("%04d",$ddStart["year"]).":".sprintf("%03d", $ddStart["yday"]).":" | |
174 | - .sprintf("%02d",$ddStart["hours"]).":".sprintf("%02d",$ddStart["minutes"]).":" | |
175 | - .sprintf("%02d",$ddStart["seconds"]); | |
176 | - return $date_start; | |
177 | - } | |
178 | - | |
179 | - private function rrmdir($dir){ | |
180 | - if (is_dir($dir)) { | |
181 | - $objects = scandir($dir); | |
182 | - | |
183 | - foreach ($objects as $object) { // Recursively delete a directory that is not empty and directorys in directory | |
184 | - if ($object != "." && $object != "..") { // If object isn't a directory recall recursively this function | |
185 | - if (filetype($dir."/".$object) == "dir") | |
186 | - $this->rrmdir($dir."/".$object); | |
187 | - else | |
188 | - unlink($dir."/".$object); | |
189 | - } | |
190 | - } | |
191 | - reset($objects); | |
192 | - rmdir($dir); | |
193 | - } | |
194 | - } | |
195 | - | |
196 | - protected function initUserMgr() { | |
197 | - if (isset($this->wsUserMgr)) | |
198 | - return array('success' => true); | |
199 | - $this->wsUserMgr = new WSUserMgr(); | |
200 | - $this->wsUserMgr->init($this->userID,$this->userPWD,$this->sessionID, $this->isSoap); | |
201 | - | |
202 | - return array('success' => true); | |
203 | - } | |
204 | - | |
205 | - public function getTimeTablesList($data) { | |
206 | - if(is_object($data)) | |
207 | - { | |
208 | - $vars = get_object_vars($data); | |
209 | - $this->isSoap = true; | |
210 | - } | |
211 | - else | |
212 | - $vars = $data; | |
213 | - if (isset($vars['userID']) && $vars['userID'] == 'impex'){ | |
214 | - if ($this->isSoap) throw new SoapFault("server00","Server Error: AMDA Login procedure failed"); | |
215 | - else return array("error" => "Server Error: AMDA Login procedure failed"); | |
216 | - } | |
217 | - | |
218 | - | |
219 | - $res = $this->init($data); | |
220 | - $vars = $res['vars']; | |
221 | - | |
222 | - $ttListWSresult = $this->resultMgr->getResOutputName(__FUNCTION__,$this->userID); | |
223 | - | |
224 | - $dom = new DOMDocument("1.0"); | |
225 | - if ($this->userID == 'impex') { | |
226 | - $sharedObjMgr = new SharedObjectsMgr(); | |
227 | - $loadDom = $dom->load($sharedObjMgr->getTreeFilePath()); | |
228 | - } | |
229 | - else | |
230 | - $loadDom = $dom->load(USERPATH.$this->userID.'/WS/Tt.xml'); | |
231 | - | |
232 | - if ($loadDom == FALSE){ | |
233 | - if ($this->isSoap) throw new SoapFault("server00","Server Error: AMDA Login procedure failed"); | |
234 | - else return array("error" => "Server Error: AMDA Login procedure failed"); | |
235 | - } | |
236 | - | |
237 | - $timetabNode = $dom->documentElement->getElementsByTagName('timetabList'); | |
238 | - | |
239 | - if ($timetabNode->length < 1){ | |
240 | - if ($this->isSoap) throw new SoapFault("server03","Cannot reach TT list"); | |
241 | - else return array('success' => false, 'message' => "Server Error: Cannot reach TT list"); | |
242 | - } | |
243 | - $outDOM = new DOMDocument("1.0"); | |
244 | - $outDOM->formatOutput = TRUE; | |
245 | - $outDOM->preserveWhiteSpace = FALSE; | |
246 | - | |
247 | - $newNode = $outDOM->importNode($timetabNode->item(0),TRUE); | |
248 | - $outDOM->appendChild($newNode); | |
249 | - | |
250 | - | |
251 | - $outXP = new domxpath($outDOM); | |
252 | - $ttNodes = $outXP->query('//timetab'); | |
253 | - | |
254 | - $outDOM->save($ttListWSresult); | |
255 | - | |
256 | - $wsres = $this->resultMgr->addResult(__FUNCTION__,$vars,$this->userID,$ttListWSresult); | |
257 | - | |
258 | - $ttListResult = 'http://'.str_replace(BASE_PATH,$_SERVER['SERVER_NAME'].APACHE_ALIAS,$ttListWSresult); | |
259 | - | |
260 | - $timeTablesList = array('success' => true, 'TimeTablesList' => $ttListResult); | |
261 | - | |
262 | - return $timeTablesList; | |
263 | - | |
264 | - } | |
265 | - | |
266 | - public function getTimeTable($data) { | |
267 | - $res = $this->init($data); | |
268 | - | |
269 | - $vars = $res['vars']; | |
270 | - $ttID = $vars['ttID']; | |
271 | - | |
272 | - if ($this->userID == 'impex') { | |
273 | - $sharedObjMgr = new SharedObjectsMgr(); | |
274 | - $ttSrc = $sharedObjMgr->getDataFilePath('timeTable', $ttID); | |
275 | - } | |
276 | - else | |
277 | - $ttSrc = USERPATH.$this->userID.'/TT/'.$ttID.'.xml'; | |
278 | - | |
279 | - if (!file_exists($ttSrc)) { | |
280 | - if ($this->isSoap) throw new SoapFault("server03","Cannot reach time table"); | |
281 | - else return array('success' => false, 'message' => "Cannot reach time table"); | |
282 | - } | |
283 | - | |
284 | - $ttWSresult = $this->resultMgr->getResOutputName(__FUNCTION__,$this->userID,$ttID); | |
285 | - | |
286 | - if (!copy($ttSrc,$ttWSresult)){ | |
287 | - if ($this->isSoap) throw new SoapFault("server04","Cannot copy time table"); | |
288 | - else return array('success' => false, 'message' => "Cannot copy time table"); | |
289 | - } | |
290 | - | |
291 | - $wsres = $this->resultMgr->addResult(__FUNCTION__,$vars,$this->userID, $ttWSresult); | |
292 | - | |
293 | - $myTimeTableMgr = new TimeTableMgr($this->userID); | |
294 | - $ttWSresultVot = $myTimeTableMgr->xsl2vot($ttWSresult); | |
295 | - if( file_exists ( $ttWSresultVot)){ | |
296 | - copy($ttWSresultVot, $ttWSresult); | |
297 | - unlink( $ttWSresultVot ) ; | |
298 | - } | |
299 | - return array('success' => true, 'ttFileURL' => 'http://'.str_replace(BASE_PATH,$_SERVER['SERVER_NAME'].APACHE_ALIAS,$ttWSresult)); | |
300 | - | |
301 | - } | |
302 | - | |
303 | - | |
304 | - public function isAlive(){ | |
305 | - $res = $this->init($data); | |
306 | - return true; | |
307 | - } | |
308 | - | |
309 | - | |
310 | - public function getObsDataTree() { | |
311 | - | |
312 | - $res = $this->init(); | |
313 | - | |
314 | - $resMgr = $this->initUserMgr(); | |
315 | - | |
316 | - $vars = $res['vars']; | |
317 | - | |
318 | - $locParamSrc = USERPATH.$this->userID.'/WS/LocalParams.xml'; | |
319 | -// $remoteParamSrc = USERPATH.$this->userID.'/WS/RemoteParams.xml'; | |
320 | - $wsParamSrc = USERPATH.$this->userID.'/WS/WsParams.xml'; | |
321 | - $locParamResult = $this->resultMgr->getResOutputName(__FUNCTION__,$this->userID.'_'.'LocalParams'); | |
322 | -// $remoteParamResult = $this->resultMgr->getResOutputName(__FUNCTION__,'RemoteParams'); | |
323 | - $wsParamResult = $this->resultMgr->getResOutputName(__FUNCTION__,$this->userID.'_'.'WsParams'); | |
324 | - | |
325 | - if (!copy($locParamSrc,$locParamResult)) | |
326 | - $locParamResult = ''; | |
327 | - else { | |
328 | - $piBase = new DomDocument("1.0"); | |
329 | - $piBase->formatOutput = true; | |
330 | - $piBase->preserveWhiteSpace = false; | |
331 | - | |
332 | - $dom = new DomDocument("1.0"); | |
333 | - $dom->load($locParamResult); | |
334 | - | |
335 | - $xsl = new DomDocument("1.0"); | |
336 | - $xsl->load(XMLPATH.'dd2WStree.xsl'); | |
337 | - | |
338 | - $xslt = new XSLTProcessor(); | |
339 | - $xslt->importStylesheet($xsl); | |
340 | - | |
341 | - $dom->loadXML($xslt->transformToXML($dom)); | |
342 | - | |
343 | - $dom->formatOutput = true; | |
344 | - $dom->preserveWhiteSpace = false; | |
345 | - $chum_ger = $dom->getElementById("Rosetta@C-G : Plot Only!"); | |
346 | - if ($chum_ger != NULL) $chum_ger->setAttribute("target","Churyumov-Gerasimenko"); | |
347 | - | |
348 | - $dom->save($locParamResult); | |
349 | - } | |
350 | -// if (!copy($remoteParamSrc,$remoteParamResult)) | |
351 | -// $remoteParamResult = ''; | |
352 | - if (!copy($wsParamSrc,$wsParamResult)) | |
353 | - $wsParamResult = ''; | |
354 | - | |
355 | - if ($locParamResult !='') $locParamResult = 'http://'.str_replace(BASE_PATH,$_SERVER['SERVER_NAME'].APACHE_ALIAS,$locParamResult); | |
356 | -// if ($remoteParamResult !='') $remoteParamResult = 'http://'.str_replace(BASE_PATH,$_SERVER['SERVER_NAME'].APACHE_ALIAS,$remoteParamResult); | |
357 | - if ($wsParamResult !='') $wsParamResult = 'http://'.str_replace(BASE_PATH,$_SERVER['SERVER_NAME'].APACHE_ALIAS,$wsParamResult); | |
358 | - | |
359 | - if (($locParamResult =='') && ($remoteParamResult =='') && ($wsParamResult =='')){ | |
360 | - if ($this->isSoap) throw new SoapFault("server05","No params descriptions .xml files for ".$this->userID." user"); | |
361 | - else return array('success' => false, 'message' => "No params descriptions .xml files for ".$this->userID." user"); | |
362 | - } | |
363 | - | |
364 | - $wsres = $this->resultMgr->addResult(__FUNCTION__,$vars,$this->userID,$wsParamResult.";".$locParamResult.";".$remoteParamResult); | |
365 | - | |
366 | - return array('success' => true,'WorkSpace' => array("LocalDataBaseParameters"=>$locParamResult, "RemoteDataBaseParameters"=>$remoteParamResult)); | |
367 | - } | |
368 | - | |
369 | - public function getPlot($data) { | |
370 | - | |
371 | - $res = $this->init($data); | |
372 | - $resMgr = $this->initUserMgr(); | |
373 | - | |
374 | - $vars = $res['vars']; | |
375 | - $mission = $vars["missionID"]; | |
376 | - | |
377 | - $ID = $this->setID(); // unique JobID | |
378 | - $resDirName = WSRESULT.$ID; // Define a temporary directory for results | |
379 | - | |
380 | - if (is_dir($resDirName)) | |
381 | - $this->rrmdir($resDirName); | |
382 | - mkdir($resDirName); | |
383 | - chmod($resDirName,0775); | |
384 | - | |
385 | - $dom = new DomDocument("1.0"); | |
386 | - $dom->load(plotsXml); | |
387 | - | |
388 | - $missionTag = $dom->getElementById($mission); | |
389 | - $params = $missionTag->getElementsByTagName('param'); | |
390 | - | |
391 | - $paramsList = array(); | |
392 | - foreach ($params as $param) | |
393 | - $paramsList[] = $param->getAttribute('name'); | |
394 | - | |
395 | - $requestObject = (Object) array( | |
396 | - "nodeType" => "request", | |
397 | - "file-format" => "PNG", | |
398 | - "file-output" => "WS", | |
399 | - "ws-result-file" => $resDirName."/request.list.png", | |
400 | - "last-plotted-tab" => 1, | |
401 | - "timesrc" => "Interval", | |
402 | - "startDate" => $vars["startTime"], | |
403 | - "stopDate" => $vars["stopTime"], | |
404 | - "tabs" => array() | |
405 | - ); | |
406 | - | |
407 | - $pageObject = (Object) array( | |
408 | - "id" => 1, | |
409 | - "multi-plot-linked" => true, | |
410 | - "page-margins-activated" => true, | |
411 | - "page-margin-x" => 5, | |
412 | - "page-margin-y" => 5, | |
413 | - "page-orientation" => "portrait", | |
414 | - "page-dimension" => "ISO A4", | |
415 | - "page-layout-type" => "vertical", | |
416 | - "page-layout-object" => (Object) array( | |
417 | - "layout-panel-height" => 0.25, | |
418 | - "layout-panel-spacing" => 0, | |
419 | - "layout-expand" => false | |
420 | - ), | |
421 | - "panels" => array() | |
422 | - ); | |
423 | - | |
424 | - foreach ($paramsList as $paramToPlot) | |
425 | - { | |
426 | - $panelObject = (Object) array( | |
427 | - "panel-plot-type" => "timePlot", | |
428 | - "axes" => array(), | |
429 | - "params" => array() | |
430 | - ); | |
431 | - | |
432 | - $timeAxisObject = (Object) array( | |
433 | - "id" => "time", | |
434 | - "axis-type" => "time", | |
435 | - "axis-range-extend" => true | |
436 | - ); | |
437 | - $panelObject->{"axes"}[] = $timeAxisObject; | |
438 | - | |
439 | - $yAxisObject = (Object) array( | |
440 | - "id" => "y-left", | |
441 | - "axis-type" => "y-left", | |
442 | - "axis-range-extend" => true | |
443 | - ); | |
444 | - $panelObject->{"axes"}[] = $yAxisObject; | |
445 | - | |
446 | - $paramObject = (Object) array( | |
447 | - "id" => 1, | |
448 | - "param-id" => $paramToPlot, | |
449 | - "param-drawing-type" => "serie", | |
450 | - "param-drawing-object" => (Object) array( | |
451 | - "serie-yaxis" => "y-left", | |
452 | - "serie-lines-activated" => true | |
453 | - ) | |
454 | - ); | |
455 | - $panelObject->{"params"}[] = $paramObject; | |
456 | - | |
457 | - $pageObject->{"panels"}[] = $panelObject; | |
458 | - } | |
459 | - | |
460 | - $requestObject->{"tabs"}[] = $pageObject; | |
461 | - | |
462 | - require_once(INTEGRATION_SRC_DIR."RequestManager.php"); | |
463 | - if (!isset($this->requestManager)) | |
464 | - $this->requestManager = new RequestManagerClass(); | |
465 | - | |
466 | - try { | |
467 | - $plotResult = $this->requestManager->runIHMRequest($this->userID, $this->getIPclient(), FunctionTypeEnumClass::PARAMS, $requestObject); | |
468 | - } catch (Exception $e) { | |
469 | - if ($this->isSoap) throw new SoapFault("plot01", 'Exception detected : '.$e->getMessage()); | |
470 | - else return array('success' => false, 'message' => 'Exception detected : '.$e->getMessage()); | |
471 | - } | |
472 | - | |
473 | - return array('success' => true, 'plotDirectoryURL' => $ID); | |
474 | - } | |
475 | - | |
476 | - public function getResultPlot($data) { | |
477 | - | |
478 | - $res = $this->init($data); | |
479 | - $vars = $res['vars']; | |
480 | - $ID = $vars["plotDirectoryURL"]; | |
481 | - $filename = WSRESULT.$ID."/request.list.png"; | |
482 | - if (file_exists($filename)) { | |
483 | - $plotWSresult=WSRESULT.$ID."/request.list.png"; | |
484 | - return array('success' => true, 'plotFileURL' => 'http://'.str_replace(BASE_PATH,$_SERVER['SERVER_NAME'].APACHE_ALIAS,$plotWSresult)); | |
485 | - } | |
486 | - else | |
487 | - return array('success' => false); | |
488 | - | |
489 | - } | |
490 | - | |
491 | - | |
492 | - public function getParameterList($data) { | |
493 | - | |
494 | - $res = $this->init($data); | |
495 | - | |
496 | - $resMgr = $this->initUserMgr(); | |
497 | - | |
498 | - $vars = $res['vars']; | |
499 | - | |
500 | - $locParamSrc = USERPATH.$this->userID.'/WS/LocalParams.xml'; | |
501 | -// $remoteParamSrc = USERPATH.$this->userID.'/WS/RemoteParams.xml'; | |
502 | - $wsParamSrc = USERPATH.$this->userID.'/WS/WsParams.xml'; | |
503 | - $locParamResult = $this->resultMgr->getResOutputName(__FUNCTION__,$this->userID.'_'.'LocalParams'); | |
504 | -// $remoteParamResult = $this->resultMgr->getResOutputName(__FUNCTION__,'RemoteParams'); | |
505 | - $wsParamResult = $this->resultMgr->getResOutputName(__FUNCTION__,$this->userID.'_'.'WsParams'); | |
506 | - | |
507 | - if (!copy($locParamSrc,$locParamResult)) | |
508 | - $locParamResult = ''; | |
509 | - else { | |
510 | - $piBase = new DomDocument("1.0"); | |
511 | - $piBase->formatOutput = true; | |
512 | - $piBase->preserveWhiteSpace = false; | |
513 | - | |
514 | - $dom = new DomDocument("1.0"); | |
515 | - $dom->load($locParamResult); | |
516 | - | |
517 | - $xsl = new DomDocument("1.0"); | |
518 | - $xsl->load(XMLPATH.'dd2WStree.xsl'); | |
519 | - | |
520 | - $xslt = new XSLTProcessor(); | |
521 | - $xslt->importStylesheet($xsl); | |
522 | - | |
523 | - $dom->loadXML($xslt->transformToXML($dom)); | |
524 | - | |
525 | - $dom->formatOutput = true; | |
526 | - $dom->preserveWhiteSpace = false; | |
527 | - $chum_ger = $dom->getElementById("Rosetta@C-G : Plot Only!"); | |
528 | - if ($chum_ger != NULL) $chum_ger->setAttribute("target","Churyumov-Gerasimenko"); | |
529 | - $dom->save($locParamResult); | |
530 | - } | |
531 | -// if (!copy($remoteParamSrc,$remoteParamResult)) | |
532 | -// $remoteParamResult = ''; | |
533 | - if (!copy($wsParamSrc,$wsParamResult)) | |
534 | - $wsParamResult = ''; | |
535 | - | |
536 | - if ($locParamResult !='') $locParamResult = 'http://'.str_replace(BASE_PATH,$_SERVER['SERVER_NAME'].APACHE_ALIAS,$locParamResult); | |
537 | -// if ($remoteParamResult !='') $remoteParamResult = 'http://'.str_replace(BASE_PATH,$_SERVER['SERVER_NAME'].APACHE_ALIAS,$remoteParamResult); | |
538 | - if ($wsParamResult !='') $wsParamResult = 'http://'.str_replace(BASE_PATH,$_SERVER['SERVER_NAME'].APACHE_ALIAS,$wsParamResult); | |
539 | - | |
540 | - if (($locParamResult =='') && ($remoteParamResult =='') && ($wsParamResult =='')){ | |
541 | - if ($this->isSoap) throw new SoapFault("server05","No params descriptions .xml files for ".$this->userID." user"); | |
542 | - else return array('success' => false, 'message' => "No params descriptions .xml files for ".$this->userID." user"); | |
543 | - } | |
544 | - | |
545 | - $wsres = $this->resultMgr->addResult(__FUNCTION__,$vars,$this->userID,$wsParamResult.";".$locParamResult.";".$remoteParamResult); | |
546 | - | |
547 | - return array('success' => true,'ParameterList' => array("UserDefinedParameters"=>$wsParamResult, "LocalDataBaseParameters"=>$locParamResult, "RemoteDataBaseParameters"=>$remoteParamResult)); | |
548 | - } | |
549 | -///////////////////////////////////////START GET DATASET /////////////////////////////// | |
550 | - public function getParameter($data) { | |
551 | - | |
552 | - $multiParam = false; | |
553 | - | |
554 | - $res = $this->init($data); | |
555 | - | |
556 | - $resMgr = $this->initUserMgr(); | |
557 | - | |
558 | - if (!$res['success']){ | |
559 | - if ($this->isSoap) throw new SoapFault("server01","Cannot init user manager"); | |
560 | - else return array('success' => false, 'message' => "Cannot init user manager"); | |
561 | - } | |
562 | - | |
563 | - $vars = $res['vars']; | |
564 | - | |
565 | - if ((strtotime($vars["stopTime"]) - strtotime($vars["startTime"])) < 0){ | |
566 | - if ($this->isSoap) throw new SoapFault("request01","Start time must be higher than stop time"); | |
567 | - else return array('success' => false, 'message' => "Start time must be higher than stop time"); | |
568 | - } | |
569 | - elseif ((strtotime($vars["stopTime"]) - strtotime($vars["startTime"])) == 0){ | |
570 | - if ($this->isSoap) throw new SoapFault("request02","You time interval equal 0 start is ".$vars["stopTime"]." stop is ".$vars["startTime"]); | |
571 | - else return array('success' => false, 'message' => "You time interval equal 0"); | |
572 | - } | |
573 | - | |
574 | - $dataFileName = $this->getDataFileName($vars, $multiParam); | |
575 | - | |
576 | - if ($dataFileName['success']) $this->dataFileName = $dataFileName['fileName']; | |
577 | - else { | |
578 | - if ($this->isSoap) throw new SoapFault("request03",$dataFileName['message']); | |
579 | - else return array('success' => false, 'message' => $dataFileName['message']); | |
580 | - } | |
581 | - | |
582 | - | |
583 | - $paramId = array(); | |
584 | - array_push($paramId, $vars["parameterID"]); | |
585 | -// $paramId[] = $vars["parameterID"]; | |
586 | - | |
587 | - if (!$vars["timeFormat"]) | |
588 | - $timeFormat = "ISO8601"; | |
589 | - else | |
590 | - $timeFormat = $vars["timeFormat"]; | |
591 | - | |
592 | - if (!$vars["gzip"]) | |
593 | - $gzip = 0; | |
594 | - else | |
595 | - $gzip = $vars["gzip"]; | |
596 | -/* | |
597 | - if (!$vars["stream"]) | |
598 | - $stream = 0; | |
599 | - else | |
600 | - $stream = $vars["stream"];*/ | |
601 | - | |
602 | - $res = $this->doDownloadRequest( | |
603 | - array("startTime" => $vars["startTime"], "stopTime" => $vars["stopTime"], "sampling" => $vars["sampling"]), | |
604 | - array("params" => $paramId), | |
605 | - array("userName" => $this->userID, "userPwd" => $this->userPWD, "sessionID" => $this->sessionID), | |
606 | - array("format" => $vars["outputFormat"], "timeFormat"=> $timeFormat, "gzip"=>$gzip, "stream"=>$stream), | |
607 | - $dataFileName); | |
608 | - | |
609 | - | |
610 | - if ($res['success']) return $res; | |
611 | - else { | |
612 | - if ($this->isSoap) throw new SoapFault("request03",$res['message']); | |
613 | - else return array('success' => false, 'message' => $res['message']); | |
614 | - } | |
615 | - } | |
616 | -///////////////////////////////////////START GET ORBITES /////////////////////////////// | |
617 | - public function getOrbites($data) { | |
618 | - | |
619 | - $multiParam = false; | |
620 | - | |
621 | - $res = $this->init($data); | |
622 | - | |
623 | - $resMgr = $this->initUserMgr(); | |
624 | - | |
625 | - if (!$resMgr['success']){ | |
626 | - if ($this->isSoap) throw new SoapFault("server01","Cannot init user manager"); | |
627 | - else return array('success' => false, 'message' => "Cannot init user manager"); | |
628 | - } | |
629 | - | |
630 | - $vars = $res['vars']; | |
631 | - | |
632 | - if ((strtotime($vars["stopTime"]) - strtotime($vars["startTime"])) < 0){ | |
633 | - if ($this->isSoap) throw new SoapFault("request01","Start time must be higher than stop time"); | |
634 | - else return array('success' => false, 'message' => "Start time must be higher than stop time"); | |
635 | - } | |
636 | - elseif ((strtotime($vars["stopTime"]) - strtotime($vars["startTime"])) == 0){ | |
637 | - if ($this->isSoap) throw new SoapFault("request02","You time interval equal 0 start is ".$vars["stopTime"]." stop is ".$vars["startTime"]); | |
638 | - else return array('success' => false, 'message' => "You time interval equal 0"); | |
639 | - } | |
640 | - | |
641 | - | |
642 | - | |
643 | - $spacecraft = $vars["spacecraft"]; | |
644 | - $coordinateSystem = $vars["coordinateSystem"]; | |
645 | - if ($spacecraft == "GALILEO") $spacecraft = ucfirst(strtolower($spacecraft)); | |
646 | - if (!$vars["units"]) | |
647 | - $units = "km"; | |
648 | - else | |
649 | - $units = $vars["units"]; | |
650 | - | |
651 | - $paramId = array(); | |
652 | - | |
653 | - $orbitRequest = array("startTime" => $vars["startTime"], | |
654 | - "stopTime" => $vars["stopTime"], | |
655 | - "spacecraft" => $spacecraft, | |
656 | - "coordinateSystem" => $coordinateSystem, | |
657 | - "units" => $units | |
658 | - ); | |
659 | - | |
660 | - | |
661 | - $orbitesParam = $this->getOrbitesParameter($orbitRequest); | |
662 | - if ($orbitesParam['success']) $orbParam = $orbitesParam['parameterID']; | |
663 | - else { | |
664 | - $orbParam = 'successEstfalse'; | |
665 | - if ($this->isSoap) throw new SoapFault("request03",$orbitesParam['message']); | |
666 | - else return array('success' => false, 'message' => $orbitesParam['message']); | |
667 | - } | |
668 | - | |
669 | - | |
670 | - $dataFileName = $this->getDataFileName($orbitesParam, $multiParam); | |
671 | - | |
672 | - if ($dataFileName['success']) $this->dataFileName = $dataFileName['fileName']; | |
673 | - else { | |
674 | - if ($this->isSoap) throw new SoapFault("request03",$dataFileName['message']); | |
675 | - else return array('success' => false, 'message' => $dataFileName['message']); | |
676 | - } | |
677 | - | |
678 | - array_push($paramId, $orbParam); | |
679 | -// $paramId[] = $vars["parameterID"]; | |
680 | - | |
681 | - if (!$vars["timeFormat"]) | |
682 | - $timeFormat = "ISO8601"; | |
683 | - else | |
684 | - $timeFormat = $vars["timeFormat"]; | |
685 | - | |
686 | - if (!$vars["gzip"]) | |
687 | - $gzip = 0; | |
688 | - else | |
689 | - $gzip = $vars["gzip"]; | |
690 | - | |
691 | - $res = $this->doDownloadRequest( | |
692 | - array("startTime" => $vars["startTime"], "stopTime" => $vars["stopTime"], "sampling" => $vars["sampling"]), | |
693 | - array("params" => $paramId), | |
694 | - array("userName" => $this->userID, "userPwd" => $this->userPWD, "sessionID" => $this->sessionID), | |
695 | - array("format" => $vars["outputFormat"], "timeFormat"=> $timeFormat, "gzip"=>$gzip, "stream"=>$stream), | |
696 | - $dataFileName); | |
697 | - | |
698 | - | |
699 | - if ($res['success']) return $res; | |
700 | - else { | |
701 | - if ($this->isSoap) throw new SoapFault("request03",$res['message']); | |
702 | - else return array('success' => false, 'message' => $res['message']); | |
703 | - } | |
704 | - } | |
705 | - | |
706 | -///////////////////////////////////////START GET DATASET /////////////////////////////// | |
707 | - | |
708 | - | |
709 | - public function getDataset($data) { | |
710 | - $multiParam = true; | |
711 | - | |
712 | - $res = $this->init($data); | |
713 | - | |
714 | - $resMgr = $this->initUserMgr(); | |
715 | - | |
716 | - $vars = $res['vars']; | |
717 | - | |
718 | - if ((strtotime($vars["stopTime"]) - strtotime($vars["startTime"])) < 0){ | |
719 | - if ($this->isSoap) throw new SoapFault("request01","Start time must be higher than stop time"); | |
720 | - else return array('success' => false, 'message' => "Start time must be higher than stop time"); | |
721 | - } | |
722 | - elseif ((strtotime($vars["stopTime"]) - strtotime($vars["startTime"])) == 0){ | |
723 | - if ($this->isSoap) throw new SoapFault("request02","You time interval equal 0"); | |
724 | - else return array('success' => false, 'message' => "You time interval equal 0"); | |
725 | - } | |
726 | - | |
727 | - $dataFileName = $this->getDataFileName($vars, $multiParam); | |
728 | - | |
729 | - if ($dataFileName['success']) $this->dataFileName = $dataFileName['fileName']; | |
730 | - else { | |
731 | - if ($this->isSoap) throw new SoapFault("request03",$dataFileName['message']); | |
732 | - else return array('success' => false, 'message' => $dataFileName['message']); | |
733 | - } | |
734 | - $paramId = array(); | |
735 | - $localData = simplexml_load_file(USERPATH.$this->userID.'/WS/LocalParams.xml'); | |
736 | - | |
737 | - if (!$vars["sampling"]){ | |
738 | -$xpath = "//dataset[@xml:id='".$vars['datasetID']."']/@sampling"; | |
739 | -$tmp = $localData->xpath($xpath); | |
740 | -$vars["sampling"] = (string)$tmp[0]; | |
741 | - | |
742 | -$matches=array(); | |
743 | -preg_match("/([a-z])$/", $vars["sampling"], $matches); | |
744 | - | |
745 | - | |
746 | -$dataFileName = $this->getDataFileName($vars, $multiParam); | |
747 | - | |
748 | -if ($dataFileName['success']) $this->dataFileName = $dataFileName['fileName']; | |
749 | -else { | |
750 | - if ($this->isSoap) throw new SoapFault("request03",$dataFileName['message']); | |
751 | - else return array('success' => false, 'message' => $dataFileName['message']); | |
752 | -} | |
753 | - | |
754 | -$vars["sampling"] = strtr($vars["sampling"], array($matches[1] => "")); | |
755 | - switch ($matches[1]) { | |
756 | - case 's': | |
757 | - $sampling = floatval($vars["sampling"]); | |
758 | - break; | |
759 | - case 'm': | |
760 | - $sampling = floatval($vars["sampling"])*60; | |
761 | - break; | |
762 | - case 'h': | |
763 | - $sampling = floatval($vars["sampling"])*60*60; | |
764 | - break; | |
765 | - default: | |
766 | - } | |
767 | - } | |
768 | - | |
769 | - $xpath = "//dataset[@xml:id='".$vars['datasetID']."']/parameter/@*[namespace-uri()='http://www.w3.org/XML/1998/namespace' and local-name()='id']"; | |
770 | - $pars = $localData->xpath($xpath); | |
771 | - | |
772 | - foreach ($pars as $p) | |
773 | - $paramId[] = (string)$p[0]; | |
774 | - | |
775 | - if (!$vars["timeFormat"]) | |
776 | - $timeFormat = "ISO8601"; | |
777 | - else | |
778 | - $timeFormat = $vars["timeFormat"]; | |
779 | - | |
780 | - if (!$vars["gzip"]) | |
781 | - $gzip = 0; | |
782 | - else | |
783 | - $gzip = $vars["gzip"]; | |
784 | - | |
785 | - $res = $this->doDownloadRequest( | |
786 | - array("startTime" => $vars["startTime"], "stopTime" => $vars["stopTime"], "sampling" => $sampling), | |
787 | - array("params" => $paramId), | |
788 | - array("userName" => $this->userID, "userPwd" => $this->userPWD, "sessionID" => $this->sessionID), | |
789 | - array("format" => $vars["outputFormat"], "timeFormat"=> $timeFormat, "gzip"=>$gzip, "stream"=>$stream), | |
790 | - $dataFileName); | |
791 | - | |
792 | - | |
793 | - if ($res['success']) return $res; | |
794 | - else { | |
795 | - if ($this->isSoap) throw new SoapFault("request03",$res['message']); | |
796 | - else return array('success' => false, 'message' => $res['message']); | |
797 | - } | |
798 | - } | |
799 | - | |
800 | -////////////////////////////////////////END GET PARAMETERS ///////////////////////////////// | |
801 | - protected function getOrbitesParameter($orbitRequest) { | |
802 | - | |
803 | - $orbitesXml = new DomDocument(); | |
804 | - | |
805 | - if (file_exists(orbitesXml)) { | |
806 | - $orbitesXml -> load(orbitesXml); | |
807 | - $xpath = new DOMXpath($orbitesXml); | |
808 | - $path = '//orbites[@mission="'.$orbitRequest['spacecraft'].'" and @coordinate_system="'.$orbitRequest['coordinateSystem'].'" and @units="'.$orbitRequest['units'].'" ] '; | |
809 | - | |
810 | - $orbites = $xpath->query($path); | |
811 | - foreach ($orbites as $orbite){ | |
812 | - $paramInfo = $this->myParamsInfoMgr->GetDDInfoFromParameterID($orbite->getAttribute('xml:id')); | |
813 | - $paramStart = $paramInfo['dataset']['starttime']; | |
814 | - $paramStop = $paramInfo['dataset']['stoptime']; | |
815 | - | |
816 | - if((strtotime($paramStart) <= strtotime($orbitRequest['startTime']) && (strtotime($orbitRequest['stopTime'])) <= strtotime($paramStop))) { | |
817 | - | |
818 | - return array('success' => true, | |
819 | - 'parameterID' => $orbite->getAttribute('xml:id'), | |
820 | - 'startTime' => $orbitRequest['startTime'], | |
821 | - 'stopTime' => $orbitRequest['stopTime'] | |
822 | - ); | |
823 | - } | |
824 | - } | |
825 | - return array('success' => false, | |
826 | - 'message' => | |
827 | - "Cannot find orbites for ".$orbitRequest['spacecraft']." between ".$orbitRequest['startTime']." in ".$orbitRequest['units']." ".$orbitRequest['coordinateSystem']." and ".$orbitRequest['stopTime']." ($paramStart - $paramStop) "); | |
828 | - } | |
829 | - else { | |
830 | - return array('success' => false, 'message' => "Orbits file doesn't exist"); | |
831 | - } | |
832 | - } | |
833 | - | |
834 | - | |
835 | - protected function doDownloadRequest($interval,$paramList,$user,$formatInfo,$dataFileName) { | |
836 | - if ($interval['sampling']) | |
837 | - $structure = 0;// sampling | |
838 | - else | |
839 | - $structure = 2; // not sampling | |
840 | - | |
841 | - $fileExtension = ""; | |
842 | - switch ($formatInfo['format']) | |
843 | - { | |
844 | - case 'netCDF' : | |
845 | - if (!$jobMgr){ | |
846 | - if ($this->isSoap) throw new SoapFault("server01","netCDF format not implemented"); | |
847 | - else return array('success' => false, 'message' => "netCDF format not implemented"); | |
848 | - } | |
849 | - break; | |
850 | - case 'VOTable' : | |
851 | - $fileformat = "vot"; | |
852 | - $kernelExtension = ".vot"; | |
853 | - $wsExtension = ".xml"; | |
854 | - break; | |
855 | - case 'ASCII' : | |
856 | - default : | |
857 | - $fileformat = "ASCII"; | |
858 | - $kernelExtension = ".txt"; | |
859 | - $wsExtension = ".txt"; | |
860 | - } | |
861 | - | |
862 | - switch ($formatInfo['timeFormat']) | |
863 | - { | |
864 | - case 'unixtime' : | |
865 | - $timeformat = 'Timestamp'; | |
866 | - break; | |
867 | - default : | |
868 | - $timeformat = 'YYYY-MM-DDThh:mm:ss'; | |
869 | - } | |
870 | - | |
871 | - if ($formatInfo['gzip'] == 1) | |
872 | - { | |
873 | - $compression = "gzip"; | |
874 | - $kernelExtension .= ".gz"; | |
875 | - $wsExtension .= ".gz"; | |
876 | - } | |
877 | - else | |
878 | - $compression = ""; | |
879 | - | |
880 | - require_once(INTEGRATION_SRC_DIR."RequestManager.php"); | |
881 | - IHMConfigClass::setUserName($this->userID); | |
882 | - if (!isset($this->paramLoader)) | |
883 | - $this->paramLoader = new IHMUserParamLoaderClass(); | |
884 | - | |
885 | - //Build parameter list | |
886 | - $params = array(); | |
887 | - | |
888 | - //TODO template arguments to implementer ? | |
889 | - foreach ($paramList['params'] as $paramId) | |
890 | - { | |
891 | - $param = new stdClass; | |
892 | - | |
893 | - if (preg_match("#^ws_#",$paramId)) | |
894 | - { | |
895 | - $res = $this->paramLoader->getDerivedParameterNameFromId($paramId); | |
896 | - if (!$res["success"]) | |
897 | - { | |
898 | - if ($this->isSoap) throw new SoapFault("server02", 'Not available derived parameter '.$paramId); | |
899 | - else return array('success' => false, 'message' => 'Not available derived parameter '.$paramId); | |
900 | - } | |
901 | - $param->paramid = "ws_".$res['name']; | |
902 | - } | |
903 | - else if (preg_match("#^wsd_#",$paramId)) | |
904 | - { | |
905 | - $res = $this->paramLoader->getUploadedParameterNameFromId($paramId); | |
906 | - if (!$res["success"]) | |
907 | - { | |
908 | - if ($this->isSoap) throw new SoapFault("server02", 'Not available user parameter '.$paramId); | |
909 | - else return array('success' => false, 'message' => 'Not available user parameter '.$paramId); | |
910 | - } | |
911 | - $param->paramid = "wsd_".$res['name']; | |
912 | - } | |
913 | - else | |
914 | - { | |
915 | - $param->paramid = $paramId; | |
916 | - } | |
917 | - | |
918 | - $params[] = $param; | |
919 | - } | |
920 | - | |
921 | - $obj = (object)array( | |
922 | - "nodeType" => "download", | |
923 | - "downloadSrc" => "0", | |
924 | - "structure" => $structure, | |
925 | - "refparamSampling" => false, | |
926 | - "sampling" => $interval['sampling'], | |
927 | - "timesrc" => "Interval", | |
928 | - "startDate" => $interval['startTime'], | |
929 | - "stopDate" => $interval['stopTime'], | |
930 | - "list" => $params, | |
931 | - "fileformat" => $fileformat, | |
932 | - "timeformat" => $timeformat, | |
933 | - "compression" => $compression, | |
934 | - "disablebatch" => true | |
935 | - ); | |
936 | - | |
937 | - if (!isset($this->requestManager)) | |
938 | - $this->requestManager = new RequestManagerClass(); | |
939 | - | |
940 | - try { | |
941 | - $downloadResult = $this->requestManager->runIHMRequest($this->userID, $this->getIPclient(), FunctionTypeEnumClass::PARAMS, $obj); | |
942 | - } catch (Exception $e) { | |
943 | - if ($this->isSoap) throw new SoapFault("server02", 'Exception detected : '.$e->getMessage()); | |
944 | - else return array('success' => false, 'message' => 'Exception detected : '.$e->getMessage()); | |
945 | - } | |
946 | - | |
947 | - if (!$downloadResult['success']) | |
948 | - { | |
949 | - if ($this->isSoap) throw new SoapFault("server03", $downloadResult['message']); | |
950 | - else return array('success' => false, 'message' => $downloadResult['message']); | |
951 | - } | |
952 | - | |
953 | - $resultFile = USERPATH.$this->userID.'/RES/'.$downloadResult['folder'].'/'.$downloadResult['result']; | |
954 | - $resultFile .= $kernelExtension; | |
955 | - | |
956 | - if (!file_exists($resultFile)) | |
957 | - { | |
958 | - if ($this->isSoap) throw new SoapFault("server04", 'Cannot retrieve result file '.$resultFile); | |
959 | - else return array('success' => false, 'message' => 'Cannot retrieve result file'); | |
960 | - } | |
961 | - | |
962 | - rename($resultFile, WSRESULT.$this->dataFileName.$wsExtension); | |
963 | - $outputFile = WSRESULT.$this->dataFileName.$wsExtension; | |
964 | - chmod ($outputFile, 0664); | |
965 | - $outputFile = 'http://'.str_replace(BASE_PATH,$_SERVER['SERVER_NAME'].APACHE_ALIAS,$outputFile); | |
966 | - | |
967 | - $obj = (object)array( | |
968 | - 'id' => $downloadResult['id'] | |
969 | - ); | |
970 | - | |
971 | - try { | |
972 | - $downloadResult = $this->requestManager->runIHMRequest($this->userID, $this->getIPclient(), FunctionTypeEnumClass::PROCESSDELETE, $obj); | |
973 | - } catch (Exception $e) { | |
974 | - //Nothing to do | |
975 | - } | |
976 | - | |
977 | - return array('success' => true, 'dataFileURLs' => $outputFile); | |
978 | - | |
979 | - } | |
980 | - | |
981 | - protected function timeIntervalToDuration($startTime,$stopTime) { | |
982 | - | |
983 | - $duration = strtotime($stopTime) - strtotime($startTime); | |
984 | - $durationDay = intval($duration/(86400)); | |
985 | - $duration = $duration - $durationDay*86400; | |
986 | - $durationHour = intval($duration/(3600)); | |
987 | - $duration = $duration - $durationHour*3600; | |
988 | - $durationMin = intval($duration/(60)); | |
989 | - $durationSec = $duration - $durationMin*60; | |
990 | - | |
991 | - return array("success" => true, "days" => sprintf("%04s", strval($durationDay)), | |
992 | - "hours" => sprintf("%02s", strval($durationHour)), | |
993 | - "mins" => sprintf("%02s", strval($durationMin)), | |
994 | - "secs" => sprintf("%02s", strval($durationSec)) | |
995 | - ); | |
996 | - } | |
997 | - | |
998 | - protected function getDataFileName($vars, $multiParam){ | |
999 | - if ($vars['startTime'] && $vars['stopTime'] && $vars['parameterID'] && !$multiParam){ | |
1000 | - $fileName = $vars['parameterID']."-".strtotime($vars['startTime'])."-".strtotime($vars['stopTime']); | |
1001 | - if (isset($vars['sampling']) && $vars['sampling'] != "" && $vars['sampling'] != 0) | |
1002 | - $fileName .= "-".$vars['sampling']; | |
1003 | - return array('success' => true, 'fileName' => $fileName); | |
1004 | - } | |
1005 | - else if ($vars['startTime'] && $vars['stopTime'] && $vars['datasetID'] && $multiParam){ | |
1006 | - $datasetName = strtr($vars["datasetID"], array(":" => "_")); | |
1007 | - $fileName = $datasetName."-".strtotime($vars['startTime'])."-".strtotime($vars['stopTime']); | |
1008 | - if (isset($vars['sampling']) && $vars['sampling'] != "" && $vars['sampling'] != 0) | |
1009 | - $fileName .= "-".$vars['sampling']; | |
1010 | - return array('success' => true, 'fileName' => $fileName); | |
1011 | - } | |
1012 | - else { | |
1013 | - if (!$vars['startTime']) | |
1014 | - $message="Start time not specified"; | |
1015 | - if (!$vars['stopTime']) | |
1016 | - $message="Stop time not specified"; | |
1017 | - if (!$vars['parameterID'] && !$multiParam) | |
1018 | - $message="Parameter not specified"; | |
1019 | - if (!$vars['datasetID'] && $multiParam) | |
1020 | - $message="DataSet not specified"; | |
1021 | - return array('success' => false, 'message' => $message); | |
1022 | - } | |
1023 | - } | |
1024 | - | |
1025 | - private function compress($srcName, $dstName) { | |
1026 | - | |
1027 | - $fp = fopen($srcName, "r"); | |
1028 | - $data = fread ($fp, filesize($srcName)); | |
1029 | - fclose($fp); | |
1030 | - | |
1031 | - $zp = gzopen($dstName, "w9"); | |
1032 | - gzwrite($zp, $data); | |
1033 | - gzclose($zp); | |
1034 | - } | |
1035 | - | |
1036 | -} | |
1037 | -?> | |
1038 | 0 | \ No newline at end of file |
php/config.php
1 | 1 | <?php |
2 | - /** | |
2 | +/** | |
3 | 3 | * @file config.php |
4 | 4 | * @version $Id: config.php 2368 2014-05-21 08:46:23Z elena $ |
5 | 5 | */ |
... | ... | @@ -35,6 +35,7 @@ if (!defined('PHP_VERSION_ID')) { |
35 | 35 | define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2])); |
36 | 36 | } |
37 | 37 | if (!defined('MAGIC_FILE')) define('MAGIC_FILE','/usr/share/misc/magic'); |
38 | + | |
38 | 39 | date_default_timezone_set('UTC'); |
39 | 40 | |
40 | 41 | // GUESTS LOGIN section |
... | ... | @@ -48,7 +49,7 @@ define('DISK_QUOTA_standard', 1024*1024*200); // 200MB |
48 | 49 | // max lines of uploaded ascii file to show |
49 | 50 | define('MAX_FILE_INDEX_TO_SHOW', 100); |
50 | 51 | // private key used to be considerate as a trust client for some functions of DD web service |
51 | -define('DDSERVICE_PRIVATEKEY','!%p856Dc'); | |
52 | +define('DDSERVICE_PRIVATEKEY', '!%p856Dc'); | |
52 | 53 | |
53 | 54 | |
54 | 55 | // BATCH JOBS section |
... | ... | @@ -58,12 +59,13 @@ define('DDSERVICE_PRIVATEKEY','!%p856Dc'); |
58 | 59 | //define('TIMEOUT', '100'); //TODO secs wait before job is killed OR 'max_execution_time' - kill automatic? |
59 | 60 | |
60 | 61 | // EPN-TAP services |
61 | -define('EPNTAP_APIS','http://voparis-tap.obspm.fr/__system__/tap/run/tap/sync'); | |
62 | -define('EPNTAP_AMDA','http://cdpp-epntap.irap.omp.eu/__system__/tap/run/tap/sync'); | |
62 | +define('EPNTAP_APIS', 'http://voparis-tap.obspm.fr/__system__/tap/run/tap/sync'); | |
63 | +define('EPNTAP_AMDA', 'http://cdpp-epntap.irap.omp.eu/__system__/tap/run/tap/sync'); | |
63 | 64 | |
64 | 65 | // PHP run-time settings |
65 | 66 | ini_set('memory_limit',128000000); |
66 | 67 | ini_set('max_execution_time',600); // max PHP execution |
68 | + | |
67 | 69 | ini_set('default_socket_timeout', 600); //TODO if this is needed ? IMPEX LONG DURATION WEBSERVICES |
68 | 70 | // to avoid 403 error while copying from URL |
69 | 71 | ini_set('user_agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:7.0) Gecko/201001012 Firefox/7.0'); |
... | ... | @@ -74,7 +76,6 @@ ini_set('user_agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:7.0) Gecko/201 |
74 | 76 | |
75 | 77 | // General Info dirs |
76 | 78 | define('DATAPATH', IHM_SRC_DIR.'/generic_data/'); |
77 | -//define('Param', DATAPATH.'Param/'); | |
78 | 79 | define('LocalData', DATAPATH.'/LocalData/'); |
79 | 80 | define('PARAMS_LOCALDB_DIR', LocalData.'/ParamDef/'); |
80 | 81 | define('PARAMS_LOCALINFO_DIR', LocalData.'/ParamInfo/'); |
... | ... | @@ -85,7 +86,6 @@ define('DataSetInfo', LocalData.'/DataSetInfo/'); |
85 | 86 | define('RemoteData', DATAPATH.'/RemoteData/'); |
86 | 87 | define('Functions', DATAPATH.'/Functions/'); |
87 | 88 | define('HelpAuto', DATAPATH.'/help/auto/'); |
88 | -//define('Plot', DATAPATH.'Plot/'); | |
89 | 89 | define('Hst', DATAPATH.'/Hst/'); |
90 | 90 | define('SpecialSettingsDir',DATAPATH.'/SpecialSettings/'); |
91 | 91 | |
... | ... | @@ -109,15 +109,9 @@ define('USERPATH', IHM_SRC_DIR.'/data/'); |
109 | 109 | // Shared dir |
110 | 110 | define('SHAREDPATH', IHM_SRC_DIR.'/shared_data/'); |
111 | 111 | |
112 | -// WEB SERVICES section | |
113 | -define('WSRESULT', USERPATH.'/WSRESULT/'); // Web Services result directory | |
114 | -define('wsResultsXml',WSRESULT.'/WSresults.xml'); // Web Service result file | |
115 | -define('plotsXml', IHM_SRC_DIR.'/public/WebServices/XML/AmdaPlots.xml'); // Web Service getPlot : list of parameters to plot | |
116 | - | |
117 | 112 | // Web Service servers WSDL : $_SERVER['SERVER_NAME'] (par apache) gethostname() (par command) |
118 | 113 | $SERVER_NAME = $_SERVER['SERVER_NAME'] ? $_SERVER['SERVER_NAME'] : gethostname(); |
119 | 114 | define('webAlias',"http://".$SERVER_NAME.APACHE_ALIAS); |
120 | -define('wsdl_AMDA', webAlias."/public/wsdl/Methods_AMDA.wsdl"); | |
121 | 115 | |
122 | 116 | define('DD_WSDL',DDSERVICE.'/dd.wsdl'); |
123 | 117 | |
... | ... | @@ -129,6 +123,7 @@ define('XMLPATH', IHM_SRC_DIR.'/php/XML/'); |
129 | 123 | |
130 | 124 | require_once(INTEGRATION_BASE_PATH.'/src/amdaintegration_autoload.php'); |
131 | 125 | |
126 | + | |
132 | 127 | global $API; |
133 | 128 | $API = array( |
134 | 129 | 'AmdaAction'=>array( |
... | ... |
php/makeOrbitsList.php
... | ... | @@ -43,7 +43,7 @@ |
43 | 43 | $instruments = $node->getElementsByTagName('instrument'); |
44 | 44 | foreach ($instruments as $ins) |
45 | 45 | { |
46 | - if ($ins->getAttribute('name') != 'Ephemeris') continue; | |
46 | + if (substr($ins->getAttribute('name'),0,9) != 'Ephemeris') continue; // Ephemeris: cruise | |
47 | 47 | $parameters = $ins->getElementsByTagName('parameter'); |
48 | 48 | foreach ($parameters as $parameter) |
49 | 49 | { |
... | ... | @@ -59,7 +59,12 @@ |
59 | 59 | $orbitNode->setAttribute('xml:id',$parameter->getAttribute('xml:id')); |
60 | 60 | $orbitNode->setAttribute('coordinate_system', $paramXml->info->coordinates_system); |
61 | 61 | $orbitNode->setAttribute('units', $paramXml->info->units); |
62 | - $orbitNode->setAttribute('mission', $node->getAttribute('name')); | |
62 | + | |
63 | + $name = strtolower($node->getAttribute('name')); | |
64 | + $name = preg_replace('/\s+/', '', $name); | |
65 | + $name = str_replace('-', '', $name); | |
66 | + | |
67 | + $orbitNode->setAttribute('mission', $name); | |
63 | 68 | |
64 | 69 | if ( $node->tagName == 'observatory' ) |
65 | 70 | $orbitNode->setAttribute('missionGroup',$node->parentNode->getAttribute('name')); |
... | ... |
... | ... | @@ -0,0 +1,22 @@ |
1 | +<?php | |
2 | + | |
3 | +/** | |
4 | + * @file getParameter.php | |
5 | + * @brief REST interface for service getParameter | |
6 | + * | |
7 | + * | |
8 | + * @version $Id: $ | |
9 | + */ | |
10 | + | |
11 | +require_once '../config.php'; | |
12 | + | |
13 | +$amda_ws = new WebServer(); | |
14 | +$result = $amda_ws->getNewToken($_GET); | |
15 | + | |
16 | +if ($result['success']) { | |
17 | + echo $result['token']; | |
18 | +} else { | |
19 | + echo $result['message']; | |
20 | +} | |
21 | + | |
22 | +?> | |
0 | 23 | \ No newline at end of file |
... | ... |
... | ... | @@ -0,0 +1,27 @@ |
1 | +<?php | |
2 | +/** | |
3 | + * @file getDataset.php | |
4 | + * @brief REST interface for service getDataset | |
5 | + */ | |
6 | + | |
7 | +//ini_set("allow_url_fopen", true); | |
8 | + require_once '../config.php'; | |
9 | + | |
10 | + if (!key_exists("token", $_GET)) | |
11 | + { | |
12 | + $result = array('success' => false, 'message' => "Authentication is required for this webservice."); | |
13 | + exit(json_encode($result)); | |
14 | + } | |
15 | + | |
16 | + $amda_ws = new WebServer(); | |
17 | + | |
18 | + if ($amda_ws->getNewToken()['token'] != $_GET["token"]) | |
19 | + { | |
20 | + $result = array('success' => false, 'status' => 'expired', 'message' => "Token expired. Please authenticate again."); | |
21 | + } else | |
22 | + { | |
23 | + $result = $amda_ws->getDataset($_GET); | |
24 | + } | |
25 | + | |
26 | + echo json_encode($result); | |
27 | +?> | |
... | ... |
php/rest/getDatasetData.php deleted
... | ... | @@ -1,38 +0,0 @@ |
1 | -<?php | |
2 | -/** | |
3 | -* @file getParameter.php | |
4 | -* @brief REST interface for service getParameter | |
5 | -* | |
6 | -* | |
7 | -* @version $Id: $ | |
8 | -*/ | |
9 | - ini_set("allow_url_fopen", true); | |
10 | - require_once '../config.php'; | |
11 | - | |
12 | - $amda_ws = new WebServer(); | |
13 | - $result = $amda_ws->getDataset($_GET); | |
14 | - | |
15 | - if ($result['success']){ | |
16 | - $file = str_replace("http://oberoi.cesr.fr/AMDA-WS/",BASE_PATH ,$result['dataFileURLs']); | |
17 | - | |
18 | - if ($file){ | |
19 | -// header('Content-type: text/xml'); | |
20 | -// $contenu = file_get_contents($file); | |
21 | -// error_log($contenu,3,'/home/natacha/TMP/tmp.xml'); | |
22 | -// echo $contenu; | |
23 | - | |
24 | -header('Content-type: text/xml'); | |
25 | -$doc = new DOMDocument(); | |
26 | -$doc->load($file); | |
27 | -echo $doc->saveXML(); | |
28 | - | |
29 | - | |
30 | - } | |
31 | - } | |
32 | - else { | |
33 | - $success = "false"; | |
34 | - echo '<?xml version="1.0" encoding="UTF-8"?><getParameterResponse>'; | |
35 | - echo '<success>'.$success.'</success>'; | |
36 | - echo '<message>'.$result['message'].'</message></getParameterResponse>'; | |
37 | - } | |
38 | -?> |
php/rest/getOrbites.php
1 | 1 | <?php |
2 | - | |
3 | -/** | |
4 | -* @file getParameter.php | |
5 | -* @brief REST interface for service getParameter | |
6 | -* | |
7 | -* | |
8 | -* @version $Id: $ | |
9 | -*/ | |
10 | 2 | |
11 | - require_once '../config.php'; | |
3 | +/** | |
4 | + * @file getOrbites.php | |
5 | + * @brief REST interface for service getOrbites | |
6 | + */ | |
12 | 7 | |
13 | - $amda_ws = new WebServer(); | |
14 | - $result = $amda_ws->getOrbites($_GET); | |
8 | + require_once '../config.php'; | |
15 | 9 | |
16 | - if ($result['success']){ | |
17 | - echo $result['dataFileURLs']; | |
18 | - } | |
19 | - else { | |
20 | - echo $result['message']; | |
21 | - } | |
10 | + if (!key_exists("token", $_GET)) | |
11 | + { | |
12 | + $result = array('success' => false, 'message' => "Authentication is required for this webservice."); | |
13 | + exit(json_encode($result)); | |
14 | + } | |
15 | + | |
16 | + $amda_ws = new WebServer(); | |
17 | + | |
18 | + if ($amda_ws->getNewToken()['token'] != $_GET["token"]) | |
19 | + { | |
20 | + $result = array('success' => false, 'status' => 'expired', 'message' => "Token expired. Please authenticate again."); | |
21 | + } else | |
22 | + { | |
23 | + $result = $amda_ws->getOrbites($_GET); | |
24 | + } | |
25 | + | |
26 | + echo json_encode($result); | |
22 | 27 | |
23 | 28 | ?> |
24 | 29 | \ No newline at end of file |
... | ... |
php/rest/getParameter.php
1 | 1 | <?php |
2 | - | |
3 | -/** | |
4 | -* @file getParameter.php | |
5 | -* @brief REST interface for service getParameter | |
6 | -* | |
7 | -* | |
8 | -* @version $Id: $ | |
9 | -*/ | |
10 | 2 | |
11 | - require_once '../config.php'; | |
3 | +/** | |
4 | + * @file getParameter.php | |
5 | + * @brief REST interface for service getParameter | |
6 | + */ | |
12 | 7 | |
13 | - $amda_ws = new WebServer(); | |
14 | - $result = $amda_ws->getParameter($_GET); | |
8 | + require_once '../config.php'; | |
15 | 9 | |
16 | - if ($result['success']){ | |
17 | - echo $result['dataFileURLs']; | |
18 | - } | |
19 | - else { | |
20 | - echo $result['message']; | |
21 | - } | |
10 | + if (!key_exists("token", $_GET)) | |
11 | + { | |
12 | + $result = array('success' => false, 'message' => "Authentication is required for this webservice."); | |
13 | + exit(json_encode($result)); | |
14 | + } | |
15 | + | |
16 | + $amda_ws = new WebServer(); | |
22 | 17 | |
18 | + if ($amda_ws->getNewToken()['token'] != $_GET["token"]) | |
19 | + { | |
20 | + $result = array('success' => false, 'status' => 'expired', 'message' => "Token expired. Please authenticate again."); | |
21 | + } else | |
22 | + { | |
23 | + $result = $amda_ws->getParameter($_GET); | |
24 | + } | |
25 | + | |
26 | + echo json_encode($result); | |
23 | 27 | ?> |
24 | 28 | \ No newline at end of file |
... | ... |
... | ... | @@ -0,0 +1,18 @@ |
1 | +<?php | |
2 | + | |
3 | +/** | |
4 | + * @file getStatus.php | |
5 | + * @brief REST interface for service getParameter | |
6 | + * | |
7 | + * @version $Id: $ | |
8 | + */ | |
9 | + | |
10 | +require_once '../config.php'; | |
11 | + | |
12 | +if (!key_exists("id", $_GET)) { | |
13 | + $result = array('success' => false, 'message' => "You must provide a job id"); | |
14 | +} else { | |
15 | + $amda_ws = new WebServer(); | |
16 | + $result = $amda_ws->getStatus($_GET); | |
17 | +} | |
18 | +echo json_encode($result); | |
0 | 19 | \ No newline at end of file |
... | ... |
php/rest/getTimeTablesList.php
... | ... | @@ -3,23 +3,20 @@ |
3 | 3 | /** |
4 | 4 | * @file getTimeTablesList.php |
5 | 5 | * @brief REST interface for service getTimeTablesList |
6 | -* | |
7 | -* | |
8 | -* @version $Id: $ | |
9 | 6 | */ |
10 | 7 | |
11 | - require_once '../config.php'; | |
8 | + require_once '../config.php'; | |
12 | 9 | |
13 | - $amda_ws = new WebServer(); | |
10 | + $amda_ws = new WebServer(); | |
14 | 11 | |
15 | - $result = $amda_ws->getTimeTablesList($_GET); | |
12 | + $result = $amda_ws->getTimeTablesList($_GET); | |
16 | 13 | |
17 | - if ($result['success']){ | |
18 | - echo $result['TimeTablesList']; | |
19 | - } | |
20 | - else { | |
21 | - echo $result['message']; | |
22 | - } | |
14 | + if ($result['success']) | |
15 | + { | |
16 | + echo $result['TimeTablesList']; | |
17 | + } | |
18 | + else | |
19 | + { | |
20 | + echo $result['message']; | |
21 | + } | |
23 | 22 | ?> |
24 | - | |
25 | - | |
... | ... |
public/WebServices/XML/AmdaPlots.xml deleted
... | ... | @@ -1,49 +0,0 @@ |
1 | -<?xml version="1.0" encoding="UTF-8"?> | |
2 | -<des> | |
3 | - <missions> | |
4 | - <mission xml:id='ACE' name='ACE'> | |
5 | - <param name='sw_vb' class="plasma" description="velocity_magnitude" instrument="SWEPAM"/> | |
6 | - <param name='sw_t' class="plasma" description="temperature_radial" instrument="SWEPAM"/> | |
7 | - <param name='sw_n' class="plasma" description="ion_density" instrument="SWEPAM"/> | |
8 | - <param name='imf' class="mag" description="magnetic_field_vector" instrument="MAG"/> | |
9 | - <param name='imf_mag' class="mag" description="magnetic_field_magnitude" instrument="MAG"/> | |
10 | - </mission> | |
11 | - <mission xml:id='WIND' name='WIND'> | |
12 | - <param name='wnd_swe_vmag' class="plasma" description="velocity_magnitude" instrument="SWE"/> | |
13 | - <param name='wnd_swe_vth' class="plasma" description="v_thermal" instrument="SWE"/> | |
14 | - <param name='wnd_swe_n' class="plasma" description="ion_density" instrument="SWE"/> | |
15 | - <param name='wnd_b' class="mag" description="magnetic_field_vector" instrument="MFI"/> | |
16 | - <param name='wnd_bmag' class="mag" description="magnetic_field_magnitude" instrument="MFI"/> | |
17 | - </mission> | |
18 | - <mission xml:id='STEREO-A' name='STA'> | |
19 | - <param name='vpbulk_sta' class="plasma" description="velocity_magnitude" instrument="PLASTIC"/> | |
20 | - <param name='vth_sta' class="plasma" description="v_thermal" instrument="PLASTIC"/> | |
21 | - <param name='np_sta' class="plasma" description="ion_density" instrument="PLASTIC"/> | |
22 | - <param name='sta_b' class="mag" description="magnetic_field_vector" instrument="MAG" /> | |
23 | - <param name='sta_btot' class="mag" description="magnetic_field_magnitude" instrument="MAG" /> | |
24 | - </mission> | |
25 | - <mission xml:id='STEREO-B' name='STB'> | |
26 | - <param name='vpbulk_stb' class="plasma" description="velocity_magnitude" instrument="PLASTIC"/> | |
27 | - <param name='vth_stb' class="plasma" description="v_thermal" instrument="PLASTIC"/> | |
28 | - <param name='np_stb' class="plasma" description="ion_density" instrument="PLASTIC"/> | |
29 | - <param name='stb_b' class="mag" description="magnetic_field_vector" instrument="MAG"/> | |
30 | - <param name='stb_btot' class="mag" description="magnetic_field_magnitude" instrument="MAG"/> | |
31 | - </mission> | |
32 | - <mission xml:id='VEX' name='VEX'> | |
33 | - <param name='vex_mag_4s' class="mag" description="magnetic_field_magnitude" instrument="MAG"/> | |
34 | - <param name='vex_mag_4s_tot' class="mag" description="magnetic_field_magnitude" instrument="MAG"/> | |
35 | - </mission> | |
36 | - <mission xml:id='OMNI' name='OMNI'> | |
37 | - <param name='omni_sw_v' class="plasma" description="velocity" instrument="imf/sw/indices"/> | |
38 | - <param name='omni_sw_t' class="plasma" description="temperature" instrument="imf/sw/indices"/> | |
39 | - <param name='omni_sw_n' class="plasma" description="density" instrument="imf/sw/indices"/> | |
40 | - <param name='omni_imf' class="mag" description="magnetic_field_magnitude" instrument="imf/sw/indices"/> | |
41 | - <param name='omni_imf_mag' class="mag" description="magnetic_field_magnitude" instrument="imf/sw/indices"/> | |
42 | - </mission> | |
43 | - <mission xml:id='GEOMAG' name='GEOMAG'> | |
44 | - <param name='omni_kp' class="mag" description="geomagnetic_indices" instrument="imf/sw/indices"/> | |
45 | - <param name='omni_dst' class="mag" description="geomagnetic_indices" instrument="imf/sw/indices"/> | |
46 | - <param name='omni_ae' class="mag" description="geomagnetic_indices" instrument="imf/sw/indices"/> | |
47 | - </mission> | |
48 | - </missions> | |
49 | -</des> |
public/wsdl/Methods_AMDA.wsdl
... | ... | @@ -30,34 +30,32 @@ |
30 | 30 | <xs:element name="getParameter" type="tns:getParameter"/> |
31 | 31 | <xs:element name="getParameterResponse" type="tns:getParameterResponse"/> |
32 | 32 | |
33 | - <xs:element name="getDataset" type="tns:getDataset"/> | |
33 | + <xs:element name="getDataset" type="tns:getDataset"/> | |
34 | 34 | <xs:element name="getDatasetResponse" type="tns:getDatasetResponse"/> |
35 | 35 | |
36 | - <xs:element name="getPlot" type="tns:getPlot"/> | |
36 | + <xs:element name="getPlot" type="tns:getPlot"/> | |
37 | 37 | <xs:element name="getPlotResponse" type="tns:getPlotResponse"/> |
38 | 38 | |
39 | - <xs:element name="getResultPlot" type="tns:getResultPlot"/> | |
40 | - <xs:element name="getResultPlotResponse" type="tns:getResultPlotResponse"/> | |
41 | - | |
42 | 39 | <xs:element name="getOrbites" type="tns:getOrbites"/> |
43 | 40 | <xs:element name="getOrbitesResponse" type="tns:getOrbitesResponse"/> |
44 | 41 | |
45 | 42 | <xs:element name="getObsDataTreeResponse" type="tns:getObsDataTreeResponse"/> |
46 | 43 | |
44 | + <xs:element name="getStatus" type="tns:getStatus"/> | |
45 | + <xs:element name="getStatusResponse" type="tns:getStatusResponse"/> | |
46 | + | |
47 | 47 | <xs:element name="alive" type="xs:boolean"/> |
48 | 48 | |
49 | 49 | <xs:complexType name="getObsDataTreeResponse"> |
50 | 50 | <xs:sequence> |
51 | 51 | <xs:element name="success" minOccurs="0" maxOccurs="1" type="xs:boolean"> |
52 | 52 | <xs:annotation> |
53 | - <xs:documentation>If methode is OK success = true, else success = false</xs:documentation> | |
53 | + <xs:documentation>If method is OK success = true, else success = false</xs:documentation> | |
54 | 54 | </xs:annotation> |
55 | 55 | </xs:element> |
56 | 56 | <xs:element name="WorkSpace" type="tns:WorkSpace" minOccurs="1" maxOccurs="1"> |
57 | 57 | <xs:annotation> |
58 | - <xs:documentation>Url's of AmdaUserTree file which must be generated | |
59 | - after connections. Contents: AMDA local parameters, Remote | |
60 | - Parameters, Shared Predefined Parameters. </xs:documentation> | |
58 | + <xs:documentation>Url's of AMDA local parameters </xs:documentation> | |
61 | 59 | </xs:annotation> |
62 | 60 | </xs:element> |
63 | 61 | </xs:sequence> |
... | ... | @@ -67,15 +65,12 @@ |
67 | 65 | <xs:sequence> |
68 | 66 | <xs:element name="userID" type="xs:string" minOccurs="0" maxOccurs="1"> |
69 | 67 | <xs:annotation> |
70 | - <xs:documentation>ID of AMDA user storing in the 3DView. Must TBD. If no | |
71 | - user ID, result is shared Timetables from IMPEX user. | |
72 | - </xs:documentation> | |
68 | + <xs:documentation>ID of AMDA user. If no user ID, user is IMPEX</xs:documentation> | |
73 | 69 | </xs:annotation> |
74 | 70 | </xs:element> |
75 | 71 | <xs:element name="password" type="xs:string" minOccurs="0" maxOccurs="1"> |
76 | 72 | <xs:annotation> |
77 | - <xs:documentation>Crypt Password of AMDA user storing in the 3DView. | |
78 | - Must TBD encryption types</xs:documentation> | |
73 | + <xs:documentation>Crypt Password of AMDA user </xs:documentation> | |
79 | 74 | </xs:annotation> |
80 | 75 | </xs:element> |
81 | 76 | </xs:sequence> |
... | ... | @@ -85,8 +80,7 @@ |
85 | 80 | <xs:sequence> |
86 | 81 | <xs:element name="success" minOccurs="0" maxOccurs="1" type="xs:boolean"> |
87 | 82 | <xs:annotation> |
88 | - <xs:documentation>Url of TimeTables storage file with TimeTables | |
89 | - ID's.</xs:documentation> | |
83 | + <xs:documentation>If method is OK success = true, else success = false</xs:documentation> | |
90 | 84 | </xs:annotation> |
91 | 85 | </xs:element> |
92 | 86 | <xs:element name="TimeTablesList" minOccurs="0" maxOccurs="1" type="xs:anyURI"> |
... | ... | @@ -102,13 +96,12 @@ |
102 | 96 | <xs:sequence> |
103 | 97 | <xs:element name="userID" type="xs:string" minOccurs="1" maxOccurs="1"> |
104 | 98 | <xs:annotation> |
105 | - <xs:documentation>ID of AMDA user</xs:documentation> | |
99 | + <xs:documentation>ID of AMDA user. If no user ID, user is IMPEX</xs:documentation> | |
106 | 100 | </xs:annotation> |
107 | 101 | </xs:element> |
108 | 102 | <xs:element name="password" type="xs:string" minOccurs="0" maxOccurs="1"> |
109 | 103 | <xs:annotation> |
110 | - <xs:documentation>Crypt Password of AMDA user storing in the 3DView. | |
111 | - Must TBD encryption types</xs:documentation> | |
104 | + <xs:documentation>Crypt Password of AMDA user</xs:documentation> | |
112 | 105 | </xs:annotation> |
113 | 106 | </xs:element> |
114 | 107 | </xs:sequence> |
... | ... | @@ -118,16 +111,14 @@ |
118 | 111 | <xs:sequence> |
119 | 112 | <xs:element name="success" minOccurs="0" maxOccurs="1" type="xs:boolean"> |
120 | 113 | <xs:annotation> |
121 | - <xs:documentation>Url of TimeTables storage file with TimeTables | |
122 | - ID's.</xs:documentation> | |
114 | + <xs:documentation>If method is OK success = true, else success = false</xs:documentation> | |
123 | 115 | </xs:annotation> |
124 | 116 | </xs:element> |
125 | 117 | <xs:element name="ParameterList" type="tns:ParameterList" minOccurs="1" |
126 | 118 | maxOccurs="1"> |
127 | 119 | <xs:annotation> |
128 | - <xs:documentation>Url of AmdaUserTree file which must be generated after | |
129 | - the user connections Contents: User groups local parameters, User | |
130 | - remote parameters, user predefined parameters. </xs:documentation> | |
120 | + <xs:documentation>Url of UserDefinedParameters, Url of AmdaLocalDataBaseParameters, | |
121 | + Url of RemoteDataBaseParameters ( not implemented ) </xs:documentation> | |
131 | 122 | </xs:annotation> |
132 | 123 | </xs:element> |
133 | 124 | </xs:sequence> |
... | ... | @@ -135,7 +126,7 @@ |
135 | 126 | |
136 | 127 | <xs:simpleType name="enumSpacecraft"> |
137 | 128 | <xs:restriction base="xs:string"> |
138 | - <xs:enumeration value="Cassini_Public"/> | |
129 | + <xs:enumeration value="Cassini"/> | |
139 | 130 | <xs:enumeration value="Galileo"/> |
140 | 131 | <xs:enumeration value="Voyager_1"/> |
141 | 132 | <xs:enumeration value="Voyager_2"/> |
... | ... | @@ -170,7 +161,19 @@ |
170 | 161 | <xs:enumeration value="ISEE-2"/> |
171 | 162 | </xs:restriction> |
172 | 163 | </xs:simpleType> |
173 | - | |
164 | + | |
165 | + <xs:simpleType name="enumMission"> | |
166 | + <xs:restriction base="xs:string"> | |
167 | + <xs:enumeration value="ACE"/> | |
168 | + <xs:enumeration value="STEREO-A"/> | |
169 | + <xs:enumeration value="STEREO-B"/> | |
170 | + <xs:enumeration value="WIND"/> | |
171 | + <xs:enumeration value="VEX"/> | |
172 | + <xs:enumeration value="OMNI"/> | |
173 | + <xs:enumeration value="GEOMAG"/> | |
174 | + </xs:restriction> | |
175 | + </xs:simpleType> | |
176 | + | |
174 | 177 | <xs:simpleType name="WorkSpaceValue"> |
175 | 178 | <xs:restriction base="xs:string"> |
176 | 179 | <xs:enumeration value="TimeTables"/> |
... | ... | @@ -673,21 +676,18 @@ of a set of typically orthogonal axes. |
673 | 676 | </xs:element> |
674 | 677 | <xs:element name="userID" type="xs:string" minOccurs="0" maxOccurs="1"> |
675 | 678 | <xs:annotation> |
676 | - <xs:documentation>ID of AMDA user storing in the 3DView. Must TBD For | |
677 | - public data is optional. </xs:documentation> | |
679 | + <xs:documentation>ID of AMDA user. If no user ID, user is IMPEX</xs:documentation> | |
678 | 680 | </xs:annotation> |
679 | 681 | </xs:element> |
680 | 682 | <xs:element name="password" type="xs:string" minOccurs="0" maxOccurs="1"> |
681 | 683 | <xs:annotation> |
682 | - <xs:documentation>Crypt Password of AMDA user storing in the 3DView. | |
683 | - Must TBD encryption types Required for predefined parameters. | |
684 | - </xs:documentation> | |
684 | + <xs:documentation>Crypt Password of AMDA user </xs:documentation> | |
685 | 685 | </xs:annotation> |
686 | 686 | </xs:element> |
687 | 687 | <xs:element name="outputFormat" minOccurs="0" maxOccurs="1"> |
688 | 688 | <xs:annotation> |
689 | - <xs:documentation> Choice is possible between the two formats: netCDF, | |
690 | - ASCII and VOTable. If the format is not specified it will be netCDF | |
689 | + <xs:documentation> Choice is possible between the four formats: netCDF, CDF, | |
690 | + ASCII and VOTable. If the format is not specified it will be ASCIIF | |
691 | 691 | by default</xs:documentation> |
692 | 692 | </xs:annotation> |
693 | 693 | <xs:simpleType> |
... | ... | @@ -695,6 +695,7 @@ of a set of typically orthogonal axes. |
695 | 695 | <xs:enumeration value="netCDF"/> |
696 | 696 | <xs:enumeration value="VOTable"/> |
697 | 697 | <xs:enumeration value="ASCII"/> |
698 | + <xs:enumeration value="CDF"/> | |
698 | 699 | </xs:restriction> |
699 | 700 | </xs:simpleType> |
700 | 701 | </xs:element> |
... | ... | @@ -724,20 +725,77 @@ of a set of typically orthogonal axes. |
724 | 725 | <xs:sequence> |
725 | 726 | <xs:element name="success" minOccurs="0" maxOccurs="1" type="xs:boolean"> |
726 | 727 | <xs:annotation> |
727 | - <xs:documentation>Url of TimeTables storage file with TimeTables | |
728 | - ID's.</xs:documentation> | |
728 | + <xs:documentation>If method is OK success = true, else success = false</xs:documentation> | |
729 | 729 | </xs:annotation> |
730 | 730 | </xs:element> |
731 | - <xs:element maxOccurs="unbounded" minOccurs="0" name="dataFileURLs" | |
732 | - type="xs:anyURI"> | |
731 | + <xs:element maxOccurs="unbounded" minOccurs="0" name="dataFileURLs" type="xs:anyURI"> | |
733 | 732 | <xs:annotation> |
734 | - <xs:documentation>URLs of results data files. If not URLs - not data for | |
733 | + <xs:documentation>URLs of results data files. If no URLs - no data for | |
735 | 734 | required parameters</xs:documentation> |
736 | 735 | </xs:annotation> |
737 | 736 | </xs:element> |
737 | + <xs:element maxOccurs="1" minOccurs="0" name="status"> | |
738 | + <xs:annotation> | |
739 | + <xs:documentation></xs:documentation> | |
740 | + </xs:annotation> | |
741 | + <xs:simpleType> | |
742 | + <xs:restriction base="xs:string"> | |
743 | + <xs:enumeration value="in progress"/> | |
744 | + <xs:enumeration value="error"/> | |
745 | + </xs:restriction> | |
746 | + </xs:simpleType> | |
747 | + </xs:element> | |
748 | + <xs:element maxOccurs="1" minOccurs="0" name="id" type="xs:string"> | |
749 | + <xs:annotation> | |
750 | + <xs:documentation>process ID</xs:documentation> | |
751 | + </xs:annotation> | |
752 | + </xs:element> | |
738 | 753 | </xs:sequence> |
739 | 754 | </xs:complexType> |
740 | - | |
755 | + | |
756 | + <xs:complexType name="getStatus"> | |
757 | + <xs:sequence> | |
758 | + <xs:element minOccurs="1" maxOccurs="1" name="id" type="xs:string"> | |
759 | + <xs:annotation> | |
760 | + <xs:documentation>process ID</xs:documentation> | |
761 | + </xs:annotation> | |
762 | + </xs:element> | |
763 | + </xs:sequence> | |
764 | + </xs:complexType> | |
765 | + | |
766 | + <xs:complexType name="getStatusResponse"> | |
767 | + <xs:sequence> | |
768 | + <xs:element name="success" minOccurs="0" maxOccurs="1" type="xs:boolean"> | |
769 | + <xs:annotation> | |
770 | + <xs:documentation></xs:documentation> | |
771 | + </xs:annotation> | |
772 | + </xs:element> | |
773 | + <xs:element maxOccurs="unbounded" minOccurs="0" name="dataFileURLs" type="xs:anyURI"> | |
774 | + <xs:annotation> | |
775 | + <xs:documentation>URLs of results data files. If no URLs - no data for | |
776 | + required parameters</xs:documentation> | |
777 | + </xs:annotation> | |
778 | + </xs:element> | |
779 | + <xs:element maxOccurs="1" minOccurs="0" name="plotURL" type="xs:anyURI"> | |
780 | + <xs:annotation> | |
781 | + <xs:documentation>URLs of results plot files. If no URLs - no data for | |
782 | + required parameters</xs:documentation> | |
783 | + </xs:annotation> | |
784 | + </xs:element> | |
785 | + <xs:element maxOccurs="1" minOccurs="0" name="status"> | |
786 | + <xs:annotation> | |
787 | + <xs:documentation></xs:documentation> | |
788 | + </xs:annotation> | |
789 | + <xs:simpleType> | |
790 | + <xs:restriction base="xs:string"> | |
791 | + <xs:enumeration value="in progress"/> | |
792 | + <xs:enumeration value="error"/> | |
793 | + </xs:restriction> | |
794 | + </xs:simpleType> | |
795 | + </xs:element> | |
796 | + </xs:sequence> | |
797 | + </xs:complexType> | |
798 | + | |
741 | 799 | <xs:complexType name="getDataset"> |
742 | 800 | <xs:sequence> |
743 | 801 | <xs:element name="startTime" type="xs:string" minOccurs="1" maxOccurs="1"> |
... | ... | @@ -763,21 +821,18 @@ of a set of typically orthogonal axes. |
763 | 821 | </xs:element> |
764 | 822 | <xs:element name="userID" type="xs:string" minOccurs="0" maxOccurs="1"> |
765 | 823 | <xs:annotation> |
766 | - <xs:documentation>ID of AMDA user. For | |
767 | - public data is optional. </xs:documentation> | |
824 | + <xs:documentation>ID of AMDA user. If no user ID, user is IMPEX</xs:documentation> | |
768 | 825 | </xs:annotation> |
769 | 826 | </xs:element> |
770 | 827 | <xs:element name="password" type="xs:string" minOccurs="0" maxOccurs="1"> |
771 | 828 | <xs:annotation> |
772 | - <xs:documentation>Crypt Password of AMDA user. | |
773 | - Must TBD encryption types Required for predefined parameters. | |
774 | - </xs:documentation> | |
829 | + <xs:documentation>Crypt Password of AMDA user </xs:documentation> | |
775 | 830 | </xs:annotation> |
776 | 831 | </xs:element> |
777 | 832 | <xs:element name="outputFormat" minOccurs="0" maxOccurs="1"> |
778 | 833 | <xs:annotation> |
779 | - <xs:documentation> Choice is possible between the 3 formats: netCDF, | |
780 | - ASCII and VOTable. If the format is not specified it will be netCDF | |
834 | + <xs:documentation> Choice is possible between the four formats: netCDF, CDF, | |
835 | + ASCII and VOTable. If the format is not specified it will be ASCII | |
781 | 836 | by default</xs:documentation> |
782 | 837 | </xs:annotation> |
783 | 838 | <xs:simpleType> |
... | ... | @@ -785,6 +840,7 @@ of a set of typically orthogonal axes. |
785 | 840 | <xs:enumeration value="netCDF"/> |
786 | 841 | <xs:enumeration value="VOTable"/> |
787 | 842 | <xs:enumeration value="ASCII"/> |
843 | + <xs:enumeration value="CDF"/> | |
788 | 844 | </xs:restriction> |
789 | 845 | </xs:simpleType> |
790 | 846 | </xs:element> |
... | ... | @@ -814,17 +870,32 @@ of a set of typically orthogonal axes. |
814 | 870 | <xs:sequence> |
815 | 871 | <xs:element name="success" minOccurs="0" maxOccurs="1" type="xs:boolean"> |
816 | 872 | <xs:annotation> |
817 | - <xs:documentation>Url of TimeTables storage file with TimeTables | |
818 | - ID's.</xs:documentation> | |
873 | + <xs:documentation></xs:documentation> | |
819 | 874 | </xs:annotation> |
820 | 875 | </xs:element> |
821 | 876 | <xs:element maxOccurs="unbounded" minOccurs="0" name="dataFileURLs" |
822 | 877 | type="xs:anyURI"> |
823 | 878 | <xs:annotation> |
824 | 879 | <xs:documentation>URLs of results data files. If not URLs - not data for |
825 | - required parameters</xs:documentation> | |
880 | + required datasets</xs:documentation> | |
826 | 881 | </xs:annotation> |
827 | 882 | </xs:element> |
883 | + <xs:element maxOccurs="1" minOccurs="0" name="status"> | |
884 | + <xs:annotation> | |
885 | + <xs:documentation></xs:documentation> | |
886 | + </xs:annotation> | |
887 | + <xs:simpleType> | |
888 | + <xs:restriction base="xs:string"> | |
889 | + <xs:enumeration value="in progress"/> | |
890 | + <xs:enumeration value="error"/> | |
891 | + </xs:restriction> | |
892 | + </xs:simpleType> | |
893 | + </xs:element> | |
894 | + <xs:element maxOccurs="1" minOccurs="0" name="id" type="xs:string"> | |
895 | + <xs:annotation> | |
896 | + <xs:documentation>process ID</xs:documentation> | |
897 | + </xs:annotation> | |
898 | + </xs:element> | |
828 | 899 | </xs:sequence> |
829 | 900 | </xs:complexType> |
830 | 901 | |
... | ... | @@ -840,7 +911,7 @@ of a set of typically orthogonal axes. |
840 | 911 | <xs:documentation>Stop time in ISO 8601 format</xs:documentation> |
841 | 912 | </xs:annotation> |
842 | 913 | </xs:element> |
843 | - <xs:element name="missionID" type="xs:string" minOccurs="1" maxOccurs="1"> | |
914 | + <xs:element name="missionID" type="tns:enumMission" minOccurs="1" maxOccurs="1"> | |
844 | 915 | <xs:annotation> |
845 | 916 | <xs:documentation>Id of mission defined in |
846 | 917 | Amda LocalParams.xml</xs:documentation> |
... | ... | @@ -853,7 +924,7 @@ of a set of typically orthogonal axes. |
853 | 924 | </xs:element> |
854 | 925 | <xs:element name="password" type="xs:string" minOccurs="0" maxOccurs="1"> |
855 | 926 | <xs:annotation> |
856 | - <xs:documentation>Password of AMDA</xs:documentation> | |
927 | + <xs:documentation>Password of AMDA user</xs:documentation> | |
857 | 928 | </xs:annotation> |
858 | 929 | </xs:element> |
859 | 930 | </xs:sequence> |
... | ... | @@ -866,32 +937,23 @@ of a set of typically orthogonal axes. |
866 | 937 | <xs:documentation>success or not</xs:documentation> |
867 | 938 | </xs:annotation> |
868 | 939 | </xs:element> |
869 | - <xs:element name="plotDirectoryURL" type="xs:string" minOccurs="1" maxOccurs="1"> | |
870 | - <xs:annotation> | |
871 | - <xs:documentation>URL of directory of png file</xs:documentation> | |
872 | - </xs:annotation> | |
873 | - </xs:element> | |
874 | - </xs:sequence> | |
875 | - </xs:complexType> | |
876 | - | |
877 | - <xs:complexType name="getResultPlot"> | |
878 | - <xs:sequence> | |
879 | - <xs:element name="plotDirectoryURL" type="xs:string" minOccurs="1" maxOccurs="1"> | |
940 | + <xs:element maxOccurs="1" minOccurs="0" name="status"> | |
880 | 941 | <xs:annotation> |
881 | - <xs:documentation>URL of directory of png file</xs:documentation> | |
942 | + <xs:documentation></xs:documentation> | |
882 | 943 | </xs:annotation> |
944 | + <xs:simpleType> | |
945 | + <xs:restriction base="xs:string"> | |
946 | + <xs:enumeration value="in progress"/> | |
947 | + <xs:enumeration value="error"/> | |
948 | + </xs:restriction> | |
949 | + </xs:simpleType> | |
883 | 950 | </xs:element> |
884 | - </xs:sequence> | |
885 | - </xs:complexType> | |
886 | - | |
887 | - <xs:complexType name="getResultPlotResponse"> | |
888 | - <xs:sequence> | |
889 | - <xs:element name="success" minOccurs="1" maxOccurs="1" type="xs:boolean"> | |
951 | + <xs:element maxOccurs="1" minOccurs="0" name="id" type="xs:string"> | |
890 | 952 | <xs:annotation> |
891 | - <xs:documentation>success=true if plot exists and else false </xs:documentation> | |
953 | + <xs:documentation>process ID</xs:documentation> | |
892 | 954 | </xs:annotation> |
893 | 955 | </xs:element> |
894 | - <xs:element name="plotFileURL" type="xs:anyURI" minOccurs="0" maxOccurs="1"> | |
956 | + <xs:element name="plotFileURL" type="xs:string" minOccurs="0" maxOccurs="1"> | |
895 | 957 | <xs:annotation> |
896 | 958 | <xs:documentation>URL of png file</xs:documentation> |
897 | 959 | </xs:annotation> |
... | ... | @@ -913,7 +975,7 @@ of a set of typically orthogonal axes. |
913 | 975 | </xs:element> |
914 | 976 | <xs:element name="spacecraft" type="tns:enumSpacecraft" maxOccurs="1" minOccurs="1"> |
915 | 977 | <xs:annotation> |
916 | - <xs:documentation>List of spavecrafts from AMDA</xs:documentation> | |
978 | + <xs:documentation>List of spacecraft from AMDA</xs:documentation> | |
917 | 979 | </xs:annotation> |
918 | 980 | </xs:element> |
919 | 981 | <xs:element name="coordinateSystem" type="tns:enumCoordinateSystemName" minOccurs="1" maxOccurs="1"> |
... | ... | @@ -948,21 +1010,18 @@ of a set of typically orthogonal axes. |
948 | 1010 | </xs:element> |
949 | 1011 | <xs:element name="userID" type="xs:string" minOccurs="0" maxOccurs="1"> |
950 | 1012 | <xs:annotation> |
951 | - <xs:documentation>ID of AMDA user storing in the 3DView. Must TBD For | |
952 | - public data is optional. </xs:documentation> | |
1013 | + <xs:documentation>ID of AMDA user. If no user ID, user is IMPEX</xs:documentation> | |
953 | 1014 | </xs:annotation> |
954 | 1015 | </xs:element> |
955 | 1016 | <xs:element name="password" type="xs:string" minOccurs="0" maxOccurs="1"> |
956 | 1017 | <xs:annotation> |
957 | - <xs:documentation>Crypt Password of AMDA user storing in the 3DView. | |
958 | - Must TBD encryption types Required for predefined parameters. | |
959 | - </xs:documentation> | |
1018 | + <xs:documentation>Crypt Password of AMDA user </xs:documentation> | |
960 | 1019 | </xs:annotation> |
961 | 1020 | </xs:element> |
962 | 1021 | <xs:element name="outputFormat" minOccurs="0" maxOccurs="1"> |
963 | 1022 | <xs:annotation> |
964 | - <xs:documentation> Choice is possible between the two formats: netCDF, | |
965 | - ASCII and VOTable. If the format is not specified it will be netCDF | |
1023 | + <xs:documentation> Choice is possible between the four formats: netCDF, CDF, | |
1024 | + ASCII and VOTable. If the format is not specified it will be ASCII | |
966 | 1025 | by default</xs:documentation> |
967 | 1026 | </xs:annotation> |
968 | 1027 | <xs:simpleType> |
... | ... | @@ -970,6 +1029,7 @@ of a set of typically orthogonal axes. |
970 | 1029 | <xs:enumeration value="netCDF"/> |
971 | 1030 | <xs:enumeration value="VOTable"/> |
972 | 1031 | <xs:enumeration value="ASCII"/> |
1032 | + <xs:enumeration value="CDF"/> | |
973 | 1033 | </xs:restriction> |
974 | 1034 | </xs:simpleType> |
975 | 1035 | </xs:element> |
... | ... | @@ -999,8 +1059,7 @@ of a set of typically orthogonal axes. |
999 | 1059 | <xs:sequence> |
1000 | 1060 | <xs:element name="success" minOccurs="0" maxOccurs="1" type="xs:boolean"> |
1001 | 1061 | <xs:annotation> |
1002 | - <xs:documentation>Url of TimeTables storage file with TimeTables | |
1003 | - ID's.</xs:documentation> | |
1062 | + <xs:documentation></xs:documentation> | |
1004 | 1063 | </xs:annotation> |
1005 | 1064 | </xs:element> |
1006 | 1065 | <xs:element maxOccurs="unbounded" minOccurs="0" name="dataFileURLs" |
... | ... | @@ -1010,6 +1069,22 @@ of a set of typically orthogonal axes. |
1010 | 1069 | required parameters</xs:documentation> |
1011 | 1070 | </xs:annotation> |
1012 | 1071 | </xs:element> |
1072 | + <xs:element maxOccurs="1" minOccurs="0" name="status"> | |
1073 | + <xs:annotation> | |
1074 | + <xs:documentation></xs:documentation> | |
1075 | + </xs:annotation> | |
1076 | + <xs:simpleType> | |
1077 | + <xs:restriction base="xs:string"> | |
1078 | + <xs:enumeration value="in progress"/> | |
1079 | + <xs:enumeration value="error"/> | |
1080 | + </xs:restriction> | |
1081 | + </xs:simpleType> | |
1082 | + </xs:element> | |
1083 | + <xs:element maxOccurs="1" minOccurs="0" name="id" type="xs:string"> | |
1084 | + <xs:annotation> | |
1085 | + <xs:documentation>process ID</xs:documentation> | |
1086 | + </xs:annotation> | |
1087 | + </xs:element> | |
1013 | 1088 | </xs:sequence> |
1014 | 1089 | </xs:complexType> |
1015 | 1090 | |
... | ... | @@ -1017,21 +1092,17 @@ of a set of typically orthogonal axes. |
1017 | 1092 | <xs:sequence> |
1018 | 1093 | <xs:element name="userID" type="xs:string" minOccurs="0" maxOccurs="1"> |
1019 | 1094 | <xs:annotation> |
1020 | - <xs:documentation>ID of AMDA user storing in the 3DView. Must | |
1021 | - TBD</xs:documentation> | |
1095 | + <xs:documentation>ID of AMDA user. If no user ID, user is IMPEX</xs:documentation> | |
1022 | 1096 | </xs:annotation> |
1023 | 1097 | </xs:element> |
1024 | 1098 | <xs:element name="password" type="xs:string" minOccurs="0" maxOccurs="1"> |
1025 | 1099 | <xs:annotation> |
1026 | - <xs:documentation>Crypt Password of AMDA user storing in the 3DView. | |
1027 | - Must TBD encryption types Required for predefined parameters. | |
1028 | - </xs:documentation> | |
1100 | + <xs:documentation>Crypt Password of AMDA user </xs:documentation> | |
1029 | 1101 | </xs:annotation> |
1030 | 1102 | </xs:element> |
1031 | 1103 | <xs:element name="ttID" type="xs:string" minOccurs="1" maxOccurs="1"> |
1032 | 1104 | <xs:annotation> |
1033 | - <xs:documentation>Id of time tables(TT) defined in | |
1034 | - AmdaUserTree.xml</xs:documentation> | |
1105 | + <xs:documentation>Id of time table</xs:documentation> | |
1035 | 1106 | </xs:annotation> |
1036 | 1107 | </xs:element> |
1037 | 1108 | </xs:sequence> |
... | ... | @@ -1040,8 +1111,7 @@ of a set of typically orthogonal axes. |
1040 | 1111 | <xs:sequence> |
1041 | 1112 | <xs:element name="success" minOccurs="0" maxOccurs="1" type="xs:boolean"> |
1042 | 1113 | <xs:annotation> |
1043 | - <xs:documentation>Url of TimeTables storage file with TimeTables | |
1044 | - ID's.</xs:documentation> | |
1114 | + <xs:documentation></xs:documentation> | |
1045 | 1115 | </xs:annotation> |
1046 | 1116 | </xs:element> |
1047 | 1117 | <xs:element name="ttFileURL" type="xs:anyURI" minOccurs="1" maxOccurs="1"> |
... | ... | @@ -1071,7 +1141,7 @@ of a set of typically orthogonal axes. |
1071 | 1141 | </wsdl:message> |
1072 | 1142 | |
1073 | 1143 | <wsdl:message name="getObsDataTree"> |
1074 | - <wsdl:part name="parameters" element="tns:emptyElement"> </wsdl:part> | |
1144 | + <wsdl:part name="parameters" element="tns:emptyElement"></wsdl:part> | |
1075 | 1145 | </wsdl:message> |
1076 | 1146 | |
1077 | 1147 | <wsdl:message name="getObsDataTreeResponse"> |
... | ... | @@ -1103,7 +1173,7 @@ of a set of typically orthogonal axes. |
1103 | 1173 | </wsdl:message> |
1104 | 1174 | |
1105 | 1175 | <wsdl:message name="getDataset"> |
1106 | - <wsdl:part name="parameters" element="tns:getDataset"> </wsdl:part> | |
1176 | + <wsdl:part name="parameters" element="tns:getDataset"></wsdl:part> | |
1107 | 1177 | </wsdl:message> |
1108 | 1178 | |
1109 | 1179 | <wsdl:message name="getDatasetResponse"> |
... | ... | @@ -1118,15 +1188,14 @@ of a set of typically orthogonal axes. |
1118 | 1188 | <wsdl:part name="parameters" element="tns:getPlotResponse"> </wsdl:part> |
1119 | 1189 | </wsdl:message> |
1120 | 1190 | |
1121 | - <wsdl:message name="getResultPlot"> | |
1122 | - <wsdl:part name="parameters" element="tns:getResultPlot"> </wsdl:part> | |
1191 | + <wsdl:message name="getStatus"> | |
1192 | + <wsdl:part name="parameters" element="tns:getStatus"></wsdl:part> | |
1123 | 1193 | </wsdl:message> |
1124 | 1194 | |
1125 | - <wsdl:message name="getResultPlotResponse"> | |
1126 | - <wsdl:part name="parameters" element="tns:getResultPlotResponse"> </wsdl:part> | |
1195 | + <wsdl:message name="getStatusResponse"> | |
1196 | + <wsdl:part name="parameters" element="tns:getStatusResponse"> </wsdl:part> | |
1127 | 1197 | </wsdl:message> |
1128 | - | |
1129 | - | |
1198 | + | |
1130 | 1199 | <wsdl:message name="getOrbites"> |
1131 | 1200 | <wsdl:part name="parameters" element="tns:getOrbites"> </wsdl:part> |
1132 | 1201 | </wsdl:message> |
... | ... | @@ -1171,7 +1240,12 @@ of a set of typically orthogonal axes. |
1171 | 1240 | <wsdl:input message="tns:getParameter"> </wsdl:input> |
1172 | 1241 | <wsdl:output message="tns:getParameterResponse"> </wsdl:output> |
1173 | 1242 | </wsdl:operation> |
1174 | - | |
1243 | + | |
1244 | + <wsdl:operation name="getStatus"> | |
1245 | + <wsdl:input message="tns:getStatus"> </wsdl:input> | |
1246 | + <wsdl:output message="tns:getStatusResponse"> </wsdl:output> | |
1247 | + </wsdl:operation> | |
1248 | + | |
1175 | 1249 | <wsdl:operation name="getDataset"> |
1176 | 1250 | <wsdl:input message="tns:getDataset"> </wsdl:input> |
1177 | 1251 | <wsdl:output message="tns:getDatasetResponse"> </wsdl:output> |
... | ... | @@ -1182,11 +1256,6 @@ of a set of typically orthogonal axes. |
1182 | 1256 | <wsdl:output message="tns:getPlotResponse"> </wsdl:output> |
1183 | 1257 | </wsdl:operation> |
1184 | 1258 | |
1185 | - <wsdl:operation name="getResultPlot"> | |
1186 | - <wsdl:input message="tns:getResultPlot"> </wsdl:input> | |
1187 | - <wsdl:output message="tns:getResultPlotResponse"> </wsdl:output> | |
1188 | - </wsdl:operation> | |
1189 | - | |
1190 | 1259 | <wsdl:operation name="getOrbites"> |
1191 | 1260 | <wsdl:input message="tns:getOrbites"> </wsdl:input> |
1192 | 1261 | <wsdl:output message="tns:getOrbitesResponse"> </wsdl:output> |
... | ... | @@ -1253,8 +1322,8 @@ of a set of typically orthogonal axes. |
1253 | 1322 | <soap:body use="literal"/> |
1254 | 1323 | </wsdl:output> |
1255 | 1324 | </wsdl:operation> |
1256 | - | |
1257 | - <wsdl:operation name="getDataset"> | |
1325 | + | |
1326 | + <wsdl:operation name="getStatus"> | |
1258 | 1327 | <soap:operation soapAction="" style="document"/> |
1259 | 1328 | <wsdl:input> |
1260 | 1329 | <soap:body use="literal"/> |
... | ... | @@ -1263,8 +1332,8 @@ of a set of typically orthogonal axes. |
1263 | 1332 | <soap:body use="literal"/> |
1264 | 1333 | </wsdl:output> |
1265 | 1334 | </wsdl:operation> |
1266 | - | |
1267 | - <wsdl:operation name="getPlot"> | |
1335 | + | |
1336 | + <wsdl:operation name="getDataset"> | |
1268 | 1337 | <soap:operation soapAction="" style="document"/> |
1269 | 1338 | <wsdl:input> |
1270 | 1339 | <soap:body use="literal"/> |
... | ... | @@ -1274,7 +1343,7 @@ of a set of typically orthogonal axes. |
1274 | 1343 | </wsdl:output> |
1275 | 1344 | </wsdl:operation> |
1276 | 1345 | |
1277 | - <wsdl:operation name="getResultPlot"> | |
1346 | + <wsdl:operation name="getPlot"> | |
1278 | 1347 | <soap:operation soapAction="" style="document"/> |
1279 | 1348 | <wsdl:input> |
1280 | 1349 | <soap:body use="literal"/> |
... | ... | @@ -1309,7 +1378,7 @@ of a set of typically orthogonal axes. |
1309 | 1378 | |
1310 | 1379 | <wsdl:service name="Methods_AMDA"> |
1311 | 1380 | <wsdl:port name="Methods_AMDAPort" binding="tns:Methods_AMDASoapBinding"> |
1312 | - <soap:address location="http://apus.cesr.fr/AMDA-TEST/php/AMDA_METHODS_WSDL.php"/> | |
1381 | + <soap:address location="http://amdadev.irap.omp.eu/php/AMDA_METHODS_WSDL.php"/> | |
1313 | 1382 | </wsdl:port> |
1314 | 1383 | </wsdl:service> |
1315 | 1384 | </wsdl:definitions> |
... | ... |