RemoteDataCenterClass.php
2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
/**
* @class RemoteDataCenterClass
* @brief
* @details
*/
abstract class RemoteDataCenterClass
{
protected $url = null, $treeXML = null;
protected $needsArgs = false;
protected $hasAccessUrl = false;
public $domAmda = null, $dataCenter = null;
public $domAmdaName = "base.xml";
public $additionalArgs = null;
public $templateFile, $plotSettings;
public $baseID = null;
public $tree = null;
/*
* @brief Constructor
*/
function __construct()
{
$this->baseID = get_class($this);
$this->templateFile = $this->baseID."_Templates.xml";
$this->plotSettings = $this->baseID."_PlotSettings.xml";
}
public function param2dd($paramID)
{
$pairs = array(" " => "_","-" => "_","/" => "_","%" => "_","\\" => "_","$" => "_",":" => "_","+" =>"_","#" => "_","@" => "_","." => "_", ">" => "_", "<" => "_", "," => "_", ")" => "", "(" => "_");
return strtr($paramID,$pairs);
}
public function saveProxy()
{
$this->domAmda->save(RemoteData.$this->baseID."/".$this->domAmdaName);
}
abstract public function init();
abstract protected function getRemoteTree();
abstract protected function setDataCenterAttributes();
abstract protected function createMissionNodes();
abstract protected function makeArgumentsList();
// abstract protected function createDatasetNodes();
// abstract protected function createParameterNodes();
// abstract protected function createDatasetGroupNodes($data);
public function initProxy()
{
if (!is_dir(RemoteData.$this->baseID))
mkdir(RemoteData.$this->baseID);
chmod(RemoteData.$this->baseID,0775);
$this->getRemoteTree();
}
public function makeProxy()
{
$this->domAmda = new DOMDocument('1.0', 'utf-8');
$this->domAmda->formatOutput = TRUE;
$this->domAmda->preserveWhiteSpace = FALSE;
$dataRoot = $this->domAmda->createElement('dataRoot');
$dataRoot->setAttribute('xml:id', 'myRemoteData-treeRootNode');
$this->domAmda->appendChild($dataRoot);
$this->dataCenter=$this->domAmda->createElement('dataCenter');
$this->dataCenter->setAttribute('xml:id', $this->baseID);
$this->dataCenter->setAttribute('name', $this->baseID);
$dataRoot->appendChild($this->dataCenter);
$this->setDataCenterAttributes();
$missionNodes = $this->createMissionNodes();
foreach ($missionNodes as $missionNode)
$this->dataCenter->appendChild($missionNode);
}
}
?>