39 lines
1.7 KiB
Python
39 lines
1.7 KiB
Python
from DataVaultGenerator.Components import DataVaultEntity
|
|
|
|
#TODO: um Möglichkeit, einen Satellite dranzuhängen erweitern sowie Laden über Mapping ermöglichen
|
|
class Reference(DataVaultEntity):
|
|
def __init__(self, model, filename, definition: dict = None):
|
|
DataVaultEntity.__init__(self, model, filename, definition)
|
|
|
|
@property
|
|
def key_attribute(self): #FIXME: nur EIN Key-Attribute könnte bei Referenz-Daten zu wenig sein.
|
|
return self.get_role_attribute('key')
|
|
#FIXME: Analag zu dem keyattribute (hk) müsste es für reference Daten einen globalen typ geben mit NOT NULL - Sonst gibt es Probleme beim PK-Index der NICHT NULL sein darf. Workarround: am key-attribue mandatory: true definieren
|
|
|
|
def get_satellites(self):
|
|
return [e for e in self.model.get_entities_by_type('satellite') if e.get_parent_entity() == self]
|
|
|
|
@property
|
|
def data(self):
|
|
return self._definition.get('data', {})
|
|
|
|
@property
|
|
def query(self):
|
|
return self.model.get_parsed_query(self, self.rawquery)
|
|
|
|
def get_query_entities(self):
|
|
return self.model.get_query_entities(self.rawquery)
|
|
|
|
@property
|
|
def rawquery(self):
|
|
return self._definition.get('query', '')
|
|
|
|
def get_component_entities(self):
|
|
c = [{'entity': self, 'component': c, 'type': c.type} for c in
|
|
self.get_source_entities().values()] # holt derzeit nur die Deliveries über die Mappings
|
|
|
|
c.extend([{'entity': self, 'component': c, 'type': c.type}
|
|
for c in self.model.get_entities_by_type('generictransformation') if self in c.get_target_entities()
|
|
])
|
|
#FIXME: um generictask erweitern
|
|
return c |