Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
63.16% covered (warning)
63.16%
24 / 38
63.64% covered (warning)
63.64%
7 / 11
CRAP
0.00% covered (danger)
0.00%
0 / 1
Base
63.16% covered (warning)
63.16%
24 / 38
63.64% covered (warning)
63.64%
7 / 11
46.20
0.00% covered (danger)
0.00%
0 / 1
 parseData
n/a
0 / 0
n/a
0 / 0
0
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 readDataFile
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
4
 getDataAsArray
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 getHash
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 getData
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 loadData
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 getItemList
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 setItemList
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 fetchId
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
4
 setAccessInstance
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 access
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3/**
4 * @package 115Mandant
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
6 **/
7
8namespace BO\Zmsdldb\File;
9
10use BO\Zmsdldb\Exception;
11
12/**
13  * Common methods shared by access classes
14  *
15  */
16abstract class Base
17{
18    protected $data = [];
19    /**
20     * lazy loaded item list, use getItemList() to access this
21     *
22     * @var \BO\Zmsdldb\Collection\Base $itemList
23     */
24    private $itemList = null;
25
26    /**
27     * @var String $dataFile
28     */
29    protected $dataFile = '';
30
31    /**
32     * @var String $locale Format like 'en'
33     *
34     */
35    protected $locale = 'de';
36
37    /**
38     * @var \BO\Zmsdldb\AbstractAccess $accessInstance
39     */
40    private $accessInstance = null;
41
42    abstract protected function parseData($data);
43
44    public function __construct($dataFile, $locale = "de")
45    {
46        $this->dataFile = $dataFile;
47        $this->locale = $locale;
48    }
49
50    public function readDataFile()
51    {
52        if (empty($this->data)) {
53            $jsonFile = $this->dataFile;
54            if (!is_readable($jsonFile)) {
55                throw new Exception("Cannot read $jsonFile");
56            }
57            $data = json_decode(file_get_contents($jsonFile), true);
58            if (!$data) {
59                throw new Exception("Could not decide $jsonFile");
60            }
61            $this->data = $data;
62        }
63        return $this->data;
64    }
65
66    public function getDataAsArray()
67    {
68        try {
69            $data = $this->readDataFile();
70
71            return $data['data'];
72        } catch (\Exception $e) {
73            throw $e;
74        }
75    }
76
77    public function getHash()
78    {
79        try {
80            $data = $this->readDataFile();
81
82            return $data['hash'];
83        } catch (\Exception $e) {
84            throw $e;
85        }
86    }
87
88    public function getData()
89    {
90        try {
91            $data = $this->readDataFile();
92
93            return $data;
94        } catch (\Exception $e) {
95            throw $e;
96        }
97    }
98
99    public function loadData()
100    {
101        try {
102            $data = $this->readDataFile();
103            $this->itemList = $this->parseData($data);
104        } catch (\Exception $e) {
105            throw $e;
106        }
107    }
108
109    public function getItemList()
110    {
111        if (null === $this->itemList) {
112            $this->loadData();
113        }
114        return $this->itemList;
115    }
116
117    protected function setItemList($list)
118    {
119        $this->itemList = $list;
120        return $this;
121    }
122
123    public function fetchId($itemId)
124    {
125        $itemList = $this->getItemList();
126
127        if (! $itemId || !$itemList instanceof \BO\Zmsdldb\Collection\Base || !$itemList->offsetExists($itemId)) {
128            return false;
129        }
130
131        return $itemList[$itemId];
132    }
133
134    public function setAccessInstance(\BO\Zmsdldb\AbstractAccess $accessInstance)
135    {
136        $this->accessInstance = $accessInstance;
137    }
138
139    public function access()
140    {
141        return $this->accessInstance;
142    }
143}