/adei/ui

To get this branch, use:
bzr branch http://darksoft.org/webbzr/adei/ui

« back to all changes in this revision

Viewing changes to classes/readers/vgreader.php

  • Committer: Aram Yeghikyan
  • Date: 2008-10-24 16:09:04 UTC
  • Revision ID: eghikyan@gmail.com-20081024160904-x6h9i29d0iuiqo03
Added virtual group concept, made refactoring of the code.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
$props["login"] = "0";
 
3
global $ADEI_ROOTDIR;
 
4
require_once($ADEI_ROOTDIR."/adei_ui.php");
1
5
class VGReader extends READER{
 
6
 var $settings;
 
7
 var $msakInfoArray;
 
8
 var $login;
2
9
 
3
10
 function __construct(&$props){
4
 
   parent::__construct($props);
 
11
    global $ADEI_ROOTDIR;
 
12
    parent::__construct($props);
 
13
    $pathToConfigFile = $ADEI_ROOTDIR."/config.xml";
 
14
    if(!file_exists($pathToConfigFile)){
 
15
        die("Configurtion file does not exists: ".$pathToConfigFile);
 
16
    }
 
17
    $this->settings = simplexml_load_file($pathToConfigFile);
 
18
    if(!is_object($this->settings)){
 
19
        die("Error while loading configuration file: ".$pathToConfigFile);
 
20
    }
 
21
    $this->validateUserInProps();
5
22
 }
6
 
/*
7
23
 function GetGroupInfo(LOGGROUP $grp = NULL, $flags = 0){
8
 
    //$userId = 
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?";
15
 
 
16
 
    if($flags&REQUEST::NEED_INFO){
17
 
        $groups[$gid]['first'] - timestamp of first available value
18
 
        $groups[$gid]['last'] - timestamp of last available value
19
 
 
20
 
        if ($flags&REQUEST::NEED_COUNT) {
21
 
            $groups[$gid]['records'] - number of stored records (approximation is allowed)
22
 
        }
23
 
    }
24
 
 
25
 
    if ($flags&REQUEST::NEED_ITEMINFO) {
26
 
        $groups[$gid]['items'] = $this->GetItemList($grzeus);
27
 
    }
 
24
    $groups = array();
 
25
    $maskManager = new MaskManagerClass($this->settings);
 
26
    $maskArray = $maskManager->getMaskStructureAsArray($this->dbname, $this->login);
 
27
    $groups = array();
 
28
    while(list($prefix, $info) = each($maskArray["postfixes"])){
 
29
        if($grp && ($prefix != $grp->gid)){
 
30
            continue;
 
31
        }
 
32
        $gid = $info["path"];
 
33
        $groups[$gid]["gid"] = $prefix;
 
34
        $groups[$gid]["name"] = "Group Title: ".$info["pathArray"][0]." - ".$info["pathArray"][1]." - ".$info["pathArray"][2];
 
35
        $sngArray = array(
 
36
            "db_server" => $info["pathArray"][0],
 
37
            "db_name" => $info["pathArray"][1],
 
38
            "db_group" => $info["pathArray"][2]
 
39
        );
 
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();
 
48
            }
 
49
        }
 
50
    }
 
51
    return $grp?$groups[$grp->gid]:$groups;
28
52
 }
29
 
*/
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);
 
55
    $groups = array();
 
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)){
 
63
        $axisProps = array(
 
64
            "axis_id" => $value["ID"],
 
65
            "axis_name" => $value["Name"],
 
66
            "axis_unit" => $value["Unit"],
 
67
            "axis_logarithmic_mode" => $value["Log"]
 
68
        );
 
69
        $axisArrayObject[$axisId] = new ADEI_AXIS($axisProps);
 
70
    }
 
71
    // get names of available ids
 
72
    $sngArray = array(
 
73
        'db_server' => $gIDArray[0],
 
74
        'db_name' => $gIDArray[1],
 
75
        'db_group' => $gIDArray[2]
 
76
    );
 
77
 
 
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){
 
84
            array_push(
 
85
                $fullItemsArray,
 
86
                array(
 
87
                    "id" => $item["id"],
 
88
                    "name" => $item["name"],
 
89
                    "axis" => $axisArrayObject[$maskArray["postfixes"][$grp->gid]["axisIds"][$offset]]
 
90
                )
 
91
            );
 
92
        }
 
93
    }
32
94
    if($mask->ids){
33
 
        if(sizeof($mask->ids)){
34
 
            nothing
 
95
        if(!sizeof($mask->ids)){
 
96
            return array();
35
97
        }else{
36
 
            only the array ellements
 
98
            reset($fullItemsArray);
 
99
            $items = array();
 
100
            for($i=0; $i<sizeof($fullItemsArray); $i++){
 
101
                if(array_key_exists($i, $mask->ids)){
 
102
                    array_push($items, $fullItemsArray[$i]);
 
103
                }
 
104
            }
37
105
        }
38
106
    }else{
39
 
        // get all the elements
 
107
        $items = $fullItemsArray;
40
108
    }
41
 
    //return items ordered by mask or sequentialy if mask is not specifified.
42
 
    $items = array(
43
 
        array(
44
 
            'id' => 
45
 
            'name' => 
46
 
        )
47
 
    );
48
109
    return $items;
49
110
 }
50
 
/*
 
111
 
51
112
 function GetRawData(LOGGROUP $grp = NULL, $from = 0, $to = 0, DATAFilter $filter = NULL, &$filter_data = NULL) {
52
 
   should prepare and interface "Iterator".
53
 
 
54
 
   $filter = could contain information on:
55
 
       a) required sampling rate
56
 
       b) item mask
57
 
       c) vector limit
58
 
 }
59
 
 
60
 
 function HaveData(LOGGROUP $grp = NULL, $from = 0, $to = 0) {
61
 
   should return boolen if there is data points in specified time interval
62
 
   available or not
63
 
 }
64
 
*/
 
113
    $grp = $this->CheckGroup($grp);
 
114
    $gID = $grp->gid;
 
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);
 
126
 }
 
127
 function HaveData(LOGGROUP $grp = NULL, $from = 0, $to = 0){
 
128
    $grp = $this->CheckGroup($grp);
 
129
    $gID = $grp->gid;
 
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);
 
140
 
 
141
    return $rdr->HaveData($myGrp, $from, $to);
 
142
 }
 
143
 function GetDatabaseList($flags = 0){
 
144
    $maskManager = new MaskManagerClass($this->settings);
 
145
    $userMasks = $maskManager->getListOfUserMasks($this->login);
 
146
    $retArray = array();
 
147
    foreach($userMasks as $maskName){
 
148
            $retArray[$maskName] = array(
 
149
                "name" => $maskName
 
150
            );
 
151
    }
 
152
    return $retArray;
 
153
 }
 
154
 function validateUserInProps(){
 
155
//    if(!isset($this->req->login)){
 
156
        $this->login = "0";
 
157
//    }
 
158
 }
65
159
}
 
160
?>
 
 
b'\\ No newline at end of file'