Implementing RDF/XML serialisation using meta-data attributes.
[PyCIM.git] / schemata / CIM14 / IEC61970 / Meas / AnalogValue.py
blob8af7947a477fdd2ac0df7cbb8906c8bc0d08ca86
1 # Copyright (C) 2010 Richard Lincoln
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA, USA
17 from CIM14.IEC61970.Meas.MeasurementValue import MeasurementValue
19 class AnalogValue(MeasurementValue):
20 """AnalogValue represents an analog MeasurementValue.
21 """
23 def __init__(self, value=0.0, AltTieMeas=None, Analog=None, AltGeneratingUnit=None, *args, **kw_args):
24 """Initialises a new 'AnalogValue' instance.
26 @param value: The value to supervise.
27 @param AltTieMeas: The usage of the measurement within the control area specification.
28 @param Analog: Measurement to which this value is connected.
29 @param AltGeneratingUnit: The alternate generating unit for which this measurement value applies.
30 """
31 #: The value to supervise.
32 self.value = value
34 self._AltTieMeas = []
35 self.AltTieMeas = [] if AltTieMeas is None else AltTieMeas
37 self._Analog = None
38 self.Analog = Analog
40 self._AltGeneratingUnit = []
41 self.AltGeneratingUnit = [] if AltGeneratingUnit is None else AltGeneratingUnit
43 super(AnalogValue, self).__init__(*args, **kw_args)
45 _attrs = ["value"]
46 _attr_types = {"value": float}
47 _defaults = {"value": 0.0}
48 _enums = {}
49 _refs = ["AltTieMeas", "Analog", "AltGeneratingUnit"]
50 _many_refs = ["AltTieMeas", "AltGeneratingUnit"]
52 def getAltTieMeas(self):
53 """The usage of the measurement within the control area specification.
54 """
55 return self._AltTieMeas
57 def setAltTieMeas(self, value):
58 for x in self._AltTieMeas:
59 x._AnalogValue = None
60 for y in value:
61 y._AnalogValue = self
62 self._AltTieMeas = value
64 AltTieMeas = property(getAltTieMeas, setAltTieMeas)
66 def addAltTieMeas(self, *AltTieMeas):
67 for obj in AltTieMeas:
68 obj._AnalogValue = self
69 self._AltTieMeas.append(obj)
71 def removeAltTieMeas(self, *AltTieMeas):
72 for obj in AltTieMeas:
73 obj._AnalogValue = None
74 self._AltTieMeas.remove(obj)
76 def getAnalog(self):
77 """Measurement to which this value is connected.
78 """
79 return self._Analog
81 def setAnalog(self, value):
82 if self._Analog is not None:
83 filtered = [x for x in self.Analog.AnalogValues if x != self]
84 self._Analog._AnalogValues = filtered
86 self._Analog = value
87 if self._Analog is not None:
88 self._Analog._AnalogValues.append(self)
90 Analog = property(getAnalog, setAnalog)
92 def getAltGeneratingUnit(self):
93 """The alternate generating unit for which this measurement value applies.
94 """
95 return self._AltGeneratingUnit
97 def setAltGeneratingUnit(self, value):
98 for x in self._AltGeneratingUnit:
99 x._AnalogValue = None
100 for y in value:
101 y._AnalogValue = self
102 self._AltGeneratingUnit = value
104 AltGeneratingUnit = property(getAltGeneratingUnit, setAltGeneratingUnit)
106 def addAltGeneratingUnit(self, *AltGeneratingUnit):
107 for obj in AltGeneratingUnit:
108 obj._AnalogValue = self
109 self._AltGeneratingUnit.append(obj)
111 def removeAltGeneratingUnit(self, *AltGeneratingUnit):
112 for obj in AltGeneratingUnit:
113 obj._AnalogValue = None
114 self._AltGeneratingUnit.remove(obj)