4
require_once($ADEI_ROOTDIR."/adei_ui.php");
1
5
class VGReader extends READER{
3
10
function __construct(&$props){
4
parent::__construct($props);
12
parent::__construct($props);
13
$pathToConfigFile = $ADEI_ROOTDIR."/config.xml";
14
if(!file_exists($pathToConfigFile)){
15
die("Configurtion file does not exists: ".$pathToConfigFile);
17
$this->settings = simplexml_load_file($pathToConfigFile);
18
if(!is_object($this->settings)){
19
die("Error while loading configuration file: ".$pathToConfigFile);
21
$this->validateUserInProps();
7
23
function GetGroupInfo(LOGGROUP $grp = NULL, $flags = 0){
9
// if the group is not specified, return all subgroups of VirtualGroup,
10
// otherwise return just specified group. If wrong group is specified
11
// throw ADEIException.
12
$groups[$gid] = array()
13
$groups[$gid]['gid'] = <postfix>;
14
$groups[$gid]['name'] = "Group Title: Server - Database - Group?";
16
if($flags&REQUEST::NEED_INFO){
17
$groups[$gid]['first'] - timestamp of first available value
18
$groups[$gid]['last'] - timestamp of last available value
20
if ($flags&REQUEST::NEED_COUNT) {
21
$groups[$gid]['records'] - number of stored records (approximation is allowed)
25
if ($flags&REQUEST::NEED_ITEMINFO) {
26
$groups[$gid]['items'] = $this->GetItemList($grzeus);
25
$maskManager = new MaskManagerClass($this->settings);
26
$maskArray = $maskManager->getMaskStructureAsArray($this->dbname, $this->login);
28
while(list($prefix, $info) = each($maskArray["postfixes"])){
29
if($grp && ($prefix != $grp->gid)){
33
$groups[$gid]["gid"] = $prefix;
34
$groups[$gid]["name"] = "Group Title: ".$info["pathArray"][0]." - ".$info["pathArray"][1]." - ".$info["pathArray"][2];
36
"db_server" => $info["pathArray"][0],
37
"db_name" => $info["pathArray"][1],
38
"db_group" => $info["pathArray"][2]
40
$req = new GROUPRequest($sngArray);
41
if($flags&REQUEST::NEED_INFO){
42
$rdr = $req->CreateReader();
43
$myGrp = $this->CreateGroup($sngArray);
44
$grpInfo = $rdr->GetGroupInfo($myGrp, $flags&~REQUEST::NEED_ITEMINFO);
45
$groups[$gid] = $groInfo;
46
if(!($flags&REQUEST::NEED_ITEMINFO)){
47
$groups[$gid]['items'] = $this->GetItemList();
51
return $grp?$groups[$grp->gid]:$groups;
30
53
function GetItemList(LOGGROUP $grp = NULL, MASK $mask = NULL, $flags = 0){
31
$grp->gid; // name of real group in vgroup
54
$grp = $this->CheckGroup($grp);
56
$gIDArray = split("__", $grp->gid);
57
$maskManager = new MaskManagerClass($this->settings);
58
$maskArray = $maskManager->getMaskStructureAsArray($this->dbname, $this->login);
59
$axisManager = new AxisManagerClass($this->settings);
60
$axisArray = $axisManager->getAxisOfUser($this->login);
61
$axisArrayObject = array();
62
while(list($axisId, $value) = each($axisArray)){
64
"axis_id" => $value["ID"],
65
"axis_name" => $value["Name"],
66
"axis_unit" => $value["Unit"],
67
"axis_logarithmic_mode" => $value["Log"]
69
$axisArrayObject[$axisId] = new ADEI_AXIS($axisProps);
71
// get names of available ids
73
'db_server' => $gIDArray[0],
74
'db_name' => $gIDArray[1],
75
'db_group' => $gIDArray[2]
78
$fullItemsArray = array();
79
$dbreq = new GROUPRequest($sngArray);
80
$itemsList = $dbreq->GetItemList();
81
foreach($itemsList as $item){
82
$offset = array_search($item["id"], $maskArray["postfixes"][$grp->gid]["itemIds"]);
83
if($offset !== FALSE){
88
"name" => $item["name"],
89
"axis" => $axisArrayObject[$maskArray["postfixes"][$grp->gid]["axisIds"][$offset]]
33
if(sizeof($mask->ids)){
95
if(!sizeof($mask->ids)){
36
only the array ellements
98
reset($fullItemsArray);
100
for($i=0; $i<sizeof($fullItemsArray); $i++){
101
if(array_key_exists($i, $mask->ids)){
102
array_push($items, $fullItemsArray[$i]);
39
// get all the elements
107
$items = $fullItemsArray;
41
//return items ordered by mask or sequentialy if mask is not specifified.
51
112
function GetRawData(LOGGROUP $grp = NULL, $from = 0, $to = 0, DATAFilter $filter = NULL, &$filter_data = NULL) {
52
should prepare and interface "Iterator".
54
$filter = could contain information on:
55
a) required sampling rate
60
function HaveData(LOGGROUP $grp = NULL, $from = 0, $to = 0) {
61
should return boolen if there is data points in specified time interval
113
$grp = $this->CheckGroup($grp);
115
$maskManager = new MaskManagerClass($this->settings);
116
$maskArray = $maskManager->getMaskStructureAsArray($this->dbname, $this->login);
117
$realGroup = $maskArray["postfixes"][$grp->gid];
118
$sngArray = $this->req->props;
119
$sngArray["db_server"] = $realGroup["pathArray"][0];
120
$sngArray["db_name"] = $realGroup["pathArray"][1];
121
$sngArray["db_group"] = $realGroup["pathArray"][2];
122
$req = new GROUPRequest($sngArray);
123
$rdr = $req->CreateReader();
124
$myGrp = $this->CreateGroup($sngArray);
125
return $rdr->GetRawData($myGrp, $from, $to, $filter, $filter_data);
127
function HaveData(LOGGROUP $grp = NULL, $from = 0, $to = 0){
128
$grp = $this->CheckGroup($grp);
130
$maskManager = new MaskManagerClass($this->settings);
131
$maskArray = $maskManager->getMaskStructureAsArray($this->dbname, $this->login);
132
$realGroup = $maskArray["postfixes"][$grp->gid];
133
$sngArray = $this->req->props;
134
$sngArray["db_server"] = $realGroup["pathArray"][0];
135
$sngArray["db_name"] = $realGroup["pathArray"][1];
136
$sngArray["db_group"] = $realGroup["pathArray"][2];
137
$req = new GROUPRequest($sngArray);
138
$rdr = $req->CreateReader();
139
$myGrp = $this->CreateGroup($sngArray);
141
return $rdr->HaveData($myGrp, $from, $to);
143
function GetDatabaseList($flags = 0){
144
$maskManager = new MaskManagerClass($this->settings);
145
$userMasks = $maskManager->getListOfUserMasks($this->login);
147
foreach($userMasks as $maskName){
148
$retArray[$maskName] = array(
154
function validateUserInProps(){
155
// if(!isset($this->req->login)){
b'\\ No newline at end of file'