Commit 78b305f11943028c5829e97c1b2190acd7be9bc5

Authored by Furkan
1 parent b3ed6bd4
Exists in SpeasyGet

For now

php/RemoteDataCenter/SPEASY_CDAWEB.php
@@ -20,12 +20,78 @@ class SPEASY_CDAWEB extends RemoteDataCenterClientClass @@ -20,12 +20,78 @@ class SPEASY_CDAWEB extends RemoteDataCenterClientClass
20 20
21 protected function makeInternalParamXml($param) 21 protected function makeInternalParamXml($param)
22 { 22 {
23 - return true;  
24 - } 23 + $xml = new DomDocument("1.0");
  24 + $paramNode = $xml->createElement("param");
  25 + $xml->appendChild($paramNode);
  26 +
  27 + $paramId = $param->getAttribute('xml:id');
  28 + $paramNode->setAttribute("xml:id", $paramId);
  29 +
  30 + $ViId = substr($param->parentNode->getAttribute('xml:id'), strlen($this->baseID)+1);
  31 +
  32 + $infoNode = $xml->createElement("info");
  33 + $infoNode->appendChild($xml->createElement("name",$paramId));
  34 + $infoNode->appendChild($xml->createElement("short_name",$param->getAttribute('name')));
  35 +
  36 + // $size = $param->getAttribute('size');
  37 +
  38 + // //TODO spectra components
  39 + // if ($size > 1 && $param->hasAttribute('labels'))
  40 + // {
  41 + // $components = $param->getAttribute('labels');
  42 + // }
  43 + // else {
  44 + // $components = null;
  45 + // }
  46 +
  47 + // $infoNode->appendChild($xml->createElement("components",$components));
  48 + // $infoNode->appendChild($xml->createElement("units",$param->getAttribute('units')));
  49 + // $infoNode->appendChild($xml->createElement("coordinates_system"));
  50 + // $infoNode->appendChild($xml->createElement("tensor_order"));
  51 + // $infoNode->appendChild($xml->createElement("si_conversion"));
  52 + // $infoNode->appendChild($xml->createElement("fill_value", $this->fillValue));
  53 + // $infoNode->appendChild($xml->createElement("ucd"));
  54 + // $infoNode->appendChild($xml->createElement("dataset_id",strtolower($ViId)));
  55 + // $infoNode->appendChild($xml->createElement("instrument_id",strtolower($this->baseID." ".$ViId)));
  56 +
  57 + $getNode = $xml->createElement("get");
  58 + $speasyNode = $xml->createElement("speasy_proxy");
  59 + $baseParamNode = $xml->createElement("param");
  60 +
  61 + $baseParamNode->setAttribute("speasyUID", $param->getAttribute('speasyUID'));
  62 + $baseParamNode->setAttribute("minSampling", $param->getAttribute('minSampling'));
  63 + $baseParamNode->setAttribute("dim1", $param->getAttribute('dim1'));
  64 + $baseParamNode->setAttribute("dim2", $param->getAttribute('dim2'));
  65 + $baseParamNode->setAttribute("type", $param->getAttribute('type'));
  66 + // $baseParamNode->setAttribute("name", $baseParamName);
  67 + // $viNode->setAttribute("name", strtolower(strtr($ViId,"_", ":")));
  68 + $speasyNode->appendChild($baseParamNode);
  69 + $getNode->appendChild($speasyNode);
  70 +
  71 + $paramNode->appendChild($infoNode);
  72 + $paramNode->appendChild($getNode);
  73 + $paramNode->appendChild($xml->createElement("process"));
  74 + $paramNode->appendChild($xml->createElement("output"));
  75 +
  76 + $xmlNameRemote = RemoteData."/PARAMS/".$paramId.".xml";
  77 +
  78 + if (!is_dir(RemoteData."/PARAMS"))
  79 + mkdir(RemoteData."/PARAMS", 0775, true);
  80 + chmod(RemoteData."/PARAMS", 0775);
  81 +
  82 + return $xml->save($xmlNameRemote);
  83 + }
25 84
26 public function makeAllParams() 85 public function makeAllParams()
27 { 86 {
  87 + $xpath = new DOMXPath($this->baseDom);
  88 + $params = $xpath->query("//parameter");//$this->baseDom->getElementsByTagName('parameter');
28 89
  90 + foreach ($params as $param)
  91 + {
  92 + if (!$this->makeInternalParamXml($param))
  93 + echo 'Error while making '.$param->getAttribute('xml:id').PHP_EOL;
  94 + }
29 } 95 }
30 96
31 // make components description from base.xml 97 // make components description from base.xml
php/RemoteDataCenter/getRemoteDDBaseProxies.php
@@ -54,6 +54,7 @@ @@ -54,6 +54,7 @@
54 54
55 // add remote base if it doesn't exist 55 // add remote base if it doesn't exist
56 if (!$basesDom->getElementById($baseId)) { 56 if (!$basesDom->getElementById($baseId)) {
  57 + echo $baseDir;
57 if (!is_dir($baseDir)) mkdir($baseDir, 0775, true); 58 if (!is_dir($baseDir)) mkdir($baseDir, 0775, true);
58 chmod($baseDir,0775); 59 chmod($baseDir,0775);
59 if (!copy("$baseDirRemote/base.xml", "$baseDir/base.xml")) { 60 if (!copy("$baseDirRemote/base.xml", "$baseDir/base.xml")) {
@@ -63,8 +64,8 @@ @@ -63,8 +64,8 @@
63 $baseClone = $basesDom->importNode($baseRemote); 64 $baseClone = $basesDom->importNode($baseRemote);
64 $basesDom->documentElement->appendChild($baseClone); 65 $basesDom->documentElement->appendChild($baseClone);
65 echo "Added $baseId".PHP_EOL; 66 echo "Added $baseId".PHP_EOL;
66 - if ($baseId == "THEMIS") {  
67 - $center = new THEMIS(); 67 + if ($baseId == "THEMIS" || $baseId == "SPEASY_CDAWEB") {
  68 + $center = new $baseId();
68 $center->makeAllParams(); 69 $center->makeAllParams();
69 } 70 }
70 } 71 }
scripts/get_speasy_invetories.py
@@ -5,9 +5,9 @@ from xml.dom import minidom @@ -5,9 +5,9 @@ from xml.dom import minidom
5 def create_element_with_id(tag, name, uid, parent_uid=None): 5 def create_element_with_id(tag, name, uid, parent_uid=None):
6 """Create an XML element with a specific id and name.""" 6 """Create an XML element with a specific id and name."""
7 if parent_uid: 7 if parent_uid:
8 - uid = f"{parent_uid}:{uid}" 8 + uid = f"{parent_uid}_{uid}"
9 elem = ET.Element(tag) 9 elem = ET.Element(tag)
10 - elem.set('xml:id', f"SPEASY_CDAWEB:{uid}") 10 + elem.set('xml:id', f"SPEASY_CDAWEB_{uid}")
11 elem.set('name', name) 11 elem.set('name', name)
12 return elem 12 return elem
13 13
@@ -24,8 +24,10 @@ def parse_dimensions(shape): @@ -24,8 +24,10 @@ def parse_dimensions(shape):
24 24
25 return dim1, dim2 25 return dim1, dim2
26 26
27 -def getParamInfo(parameter, shape): 27 +def getParamInfo(parameter, paramInfo):
28 """Get dims and type info from the json to the XML element.""" 28 """Get dims and type info from the json to the XML element."""
  29 + shape = paramInfo.get('spz_shape', '')
  30 + speasyUID = paramInfo.get('__spz_provider__','') + "/" + paramInfo.get('__spz_uid__','')
29 dim1, dim2 = parse_dimensions(shape) 31 dim1, dim2 = parse_dimensions(shape)
30 if not dim1 == None: 32 if not dim1 == None:
31 parameter.set('dim1', str(dim1)) 33 parameter.set('dim1', str(dim1))
@@ -35,6 +37,7 @@ def getParamInfo(parameter, shape): @@ -35,6 +37,7 @@ def getParamInfo(parameter, shape):
35 parameter.set('dim2', str(dim2)) 37 parameter.set('dim2', str(dim2))
36 parameter.set('type', 'double') 38 parameter.set('type', 'double')
37 parameter.set('minSampling', '4') 39 parameter.set('minSampling', '4')
  40 + parameter.set('speasyUID', speasyUID)
38 41
39 def count_levels(data): 42 def count_levels(data):
40 """Recursively count the levels of nested dictionaries.""" 43 """Recursively count the levels of nested dictionaries."""
@@ -59,13 +62,13 @@ def add_instrument(observatory, observatory_data, mission_observatory_key): @@ -59,13 +62,13 @@ def add_instrument(observatory, observatory_data, mission_observatory_key):
59 62
60 for dataset_key, dataset_data in instrument_data.items(): 63 for dataset_key, dataset_data in instrument_data.items():
61 if isinstance(dataset_data, dict) and '__spz_name__' in dataset_data: 64 if isinstance(dataset_data, dict) and '__spz_name__' in dataset_data:
62 - dataset = create_element_with_id('dataset', dataset_data.get('__spz_name__', ''), dataset_key, f"{mission_observatory_key}:{instrument_key}") 65 + dataset = create_element_with_id('dataset', dataset_data.get('__spz_name__', ''), dataset_key, f"{mission_observatory_key}_{instrument_key}")
63 instrument.append(dataset) 66 instrument.append(dataset)
64 67
65 for param_key, param_data in dataset_data.items(): 68 for param_key, param_data in dataset_data.items():
66 if isinstance(param_data, dict) and param_data.get('__spz_type__') == 'ParameterIndex': 69 if isinstance(param_data, dict) and param_data.get('__spz_type__') == 'ParameterIndex':
67 - parameter = create_element_with_id('parameter', param_data.get('__spz_name__', ''), param_key, f"{mission_observatory_key}:{instrument_key}:{dataset_key}")  
68 - getParamInfo(parameter, param_data.get('spz_shape', '')) 70 + parameter = create_element_with_id('parameter', param_data.get('__spz_name__', ''), param_key, f"{mission_observatory_key}_{instrument_key}_{dataset_key}")
  71 + getParamInfo(parameter, param_data)
69 dataset.append(parameter) 72 dataset.append(parameter)
70 73
71 74
@@ -95,11 +98,10 @@ def json_to_custom_xml(json_obj, levels): @@ -95,11 +98,10 @@ def json_to_custom_xml(json_obj, levels):
95 if isinstance(data, dict): 98 if isinstance(data, dict):
96 observatory = create_element_with_id('observatory', data.get('__spz_name__', ''), observatory_key, mission_key) 99 observatory = create_element_with_id('observatory', data.get('__spz_name__', ''), observatory_key, mission_key)
97 observatory_data = data 100 observatory_data = data
98 - mission_observatory_key = f"{mission_key}:{observatory_key}" 101 + mission_observatory_key = f"{mission_key}_{observatory_key}"
99 mission.append(observatory) 102 mission.append(observatory)
100 103
101 - add_instrument(observatory, observatory_data, mission_observatory_key)  
102 - break 104 + add_instrument(observatory, observatory_data, mission_observatory_key)
103 105
104 return ET.tostring(dataRoot, encoding='unicode') 106 return ET.tostring(dataRoot, encoding='unicode')
105 107
@@ -120,4 +122,4 @@ def convert_json_file_to_xml(json_file_path, xml_file_path): @@ -120,4 +122,4 @@ def convert_json_file_to_xml(json_file_path, xml_file_path):
120 with open(xml_file_path, 'w') as xml_file: 122 with open(xml_file_path, 'w') as xml_file:
121 xml_file.write(pretty_xml) 123 xml_file.write(pretty_xml)
122 124
123 -convert_json_file_to_xml('data.json', 'base.xml')  
124 \ No newline at end of file 125 \ No newline at end of file
  126 +convert_json_file_to_xml('data.json', 'base.xml')