79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
import json
|
|
from numpy import array
|
|
|
|
|
|
class CalculatedDataRepository(object):
|
|
summary_values_key = 'summary_values'
|
|
computed_csv_columns_key = 'computed_csv_columns'
|
|
compute_bom_key = 'compute_bom'
|
|
subarray_summary_key = 'subarray_summary'
|
|
|
|
def __init__(self, store, calculator):
|
|
self.store = store
|
|
self.calculator = calculator
|
|
|
|
def reset_data(self):
|
|
pass
|
|
|
|
def reset_site_data(self):
|
|
pass
|
|
|
|
def reset_panel_data(self):
|
|
pass
|
|
|
|
def reset_subarray_data(self):
|
|
self.store.delete(self.summary_values_key)
|
|
self.store.delete(self.subarray_summary_key)
|
|
|
|
def reset_ebom_data(self):
|
|
self.store.delete(self.compute_bom_key)
|
|
|
|
def k_z(self):
|
|
return self.calculator.k_z()
|
|
|
|
def L_B(self):
|
|
return self.calculator.L_B()
|
|
|
|
def summary_table(self):
|
|
return self.calculator.summary_table()
|
|
|
|
def minimum_array_sizes(self):
|
|
return self.calculator.minimum_array_sizes()
|
|
|
|
def summary_values(self):
|
|
key = self.summary_values_key
|
|
if self.store.exists(key):
|
|
summary_values_json = self.store.get(key).decode('utf-8)')
|
|
return array(json.loads(summary_values_json))
|
|
summary_values = self.calculator.summary_values()
|
|
self.store.set(key, json.dumps(list(summary_values)))
|
|
return summary_values
|
|
|
|
def get_computed_csv_columns(self):
|
|
return self.calculator.get_computed_csv_columns() # TODO: revisit after getting rid of DataMatrix
|
|
# key = self.computed_csv_columns_key
|
|
# if self.store.exists(key):
|
|
# computed_csv_columns_json = self.store.get(key).decode('utf-8')
|
|
# return jsonpickle.decode(computed_csv_columns_json)
|
|
# computed_csv_columns = self.calculator.get_computed_csv_columns()
|
|
# self.store.set(key, jsonpickle.encode(computed_csv_columns))
|
|
# return computed_csv_columns
|
|
|
|
def compute_bom(self):
|
|
key = self.compute_bom_key
|
|
if self.store.exists(key):
|
|
compute_bom_json = self.store.get(key).decode('utf-8')
|
|
return array(json.loads(compute_bom_json))
|
|
computed_bom = self.calculator.compute_bom()
|
|
self.store.set(key, json.dumps(computed_bom.tolist()))
|
|
return computed_bom
|
|
|
|
def subarray_summary(self):
|
|
key = self.subarray_summary_key
|
|
if self.store.exists(key):
|
|
received_json = self.store.get(key).decode('utf-8')
|
|
return array(json.loads(received_json))
|
|
data = self.calculator.subarray_summary()
|
|
self.store.set(key, json.dumps(data.tolist()))
|
|
return data
|