diff options
Diffstat (limited to 'Monitoring/MonitoringService/DataProcessing/LinearCombination.py')
-rw-r--r-- | Monitoring/MonitoringService/DataProcessing/LinearCombination.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Monitoring/MonitoringService/DataProcessing/LinearCombination.py b/Monitoring/MonitoringService/DataProcessing/LinearCombination.py new file mode 100644 index 0000000..5174b58 --- /dev/null +++ b/Monitoring/MonitoringService/DataProcessing/LinearCombination.py @@ -0,0 +1,42 @@ +''' +Created on Mar 21, 2013 + +@author: steger +''' +from DataProcessing.DataSource import DataSource +from DataProcessing.Aggregator import Aggregator +from DataProcessing.DataError import DataError + +class LinearCombination(DataSource): + ''' + classdocs + ''' + + def __init__(self): + ''' + Constructor + ''' + DataSource.__init__(self, dependency = None) + self._terms = [] + self._value = None + + def addTerm(self, factor, aggregate): + if not isinstance(aggregate, Aggregator): + raise DataError("Wrong type of term") + self._terms.append((factor, aggregate)) + + @property + def name(self): + return "BLA" + + @property + def value(self): + self.process() + return self._value + + def process(self): + result = 0 + for factor, aggregate in self._terms: + term = aggregate.aggregate + result += factor * term + self._value = result
\ No newline at end of file |