1<?php
2
3/**
4 * @brief Holds Metadata for the data set (name, unit, type etc.)
5 *
6 * The data description assumes we have X and Y axes, which isn't
7 * necessarily the case (e.g. if we are generating a pie chart). This
8 * is probably a design flaw.
9 */
10class DataDescription {
11    public function __construct($position, $xFormat, $yFormat, $xUnit, $yUnit) {
12        $this->position = $position;
13        $this->xFormat  = $xFormat;
14        $this->yFormat  = $yFormat;
15        $this->xUnit    = $xUnit;
16        $this->yUnit    = $yUnit;
17
18        $this->xAxisName = '';
19        $this->yAxisName = '';
20    }
21
22    /**
23     * @todo I don't know exactly what the Position does
24     */
25    public function setPosition($position) {
26        if(!is_string($position)) {
27            throw new InvalidArgumentException("Non-string argument passed to setPosition");
28        }
29
30        $this->position = $position;
31    }
32
33    public function getPosition() {
34        return $this->position;
35    }
36
37    public function setXAxisName($name) {
38        if(!is_string($name)) {
39            throw new InvalidArgumentException("Non-string argument passed to DataDescription::setXAxisName()");
40        }
41
42        $this->xAxisName = $name;
43    }
44
45    public function getXAxisName() {
46        return $this->xAxisName;
47    }
48
49    public function setYAxisName($name) {
50        if(!is_string($name)) {
51            throw new InvalidArgumentException("Non-string argument passed to DataDescription::setYAxisName()");
52        }
53        $this->yAxisName = $name;
54    }
55
56    public function getYAxisName() {
57        return $this->yAxisName;
58    }
59
60    /**
61     * @todo Not sure I'm happy with the name of this - should it be
62     * setXAxisFormat()?
63     */
64    public function setXFormat($format) {
65        /** @todo Check that $format is a recognised format value here */
66        $this->xFormat = $format;
67    }
68
69    public function getXFormat() {
70        return $this->xFormat;
71    }
72
73    public function setYFormat($format) {
74        $this->yFormat = $format;
75    }
76
77    public function getYFormat() {
78        return $this->yFormat;
79    }
80
81    public function setXUnit($unit) {
82        $this->xUnit = $unit;
83    }
84
85    public function getXUnit() {
86        return $this->xUnit;
87    }
88
89    public function setYUnit($unit) {
90        $this->yUnit = $unit;
91    }
92
93    public function getYUnit() {
94        return $this->yUnit;
95    }
96
97    public function getColumnIndex($columnName) {
98        $ID = 0;
99        foreach(array_keys($this->description) as $keyI) {
100            if($keyI == $columnName) {
101                return $ID;
102            }
103
104            $ID++;
105        }
106    }
107
108    private $position;
109    private $xFormat;
110    private $yFormat;
111    private $xUnit;
112    private $yUnit;
113    private $xAxisName;
114    private $yAxisName;
115
116    /**
117     * @todo This shouldn't be a public member, this is a transitional
118     * step while refactoring
119     */
120    public $values = array();
121
122    public $description;
123
124    public $seriesSymbols = array();
125}