snapshot current state before gitea sync
This commit is contained in:
77
DataVaultGenerator/Entities/GenericTransformation.py
Normal file
77
DataVaultGenerator/Entities/GenericTransformation.py
Normal file
@@ -0,0 +1,77 @@
|
||||
from DataVaultGenerator.Components import ErrorCollection, GeneratorEntity, DBEntity
|
||||
|
||||
|
||||
class GenericTransformation(GeneratorEntity):
|
||||
def __init__(self, model, filename, definition: dict = None):
|
||||
GeneratorEntity.__init__(self, model, filename, definition)
|
||||
|
||||
self._layername = definition.get('layer', self.model.config.entitydefaults[self.type]['layer'])
|
||||
|
||||
@property
|
||||
def dbentity(self):
|
||||
return DBEntity(self.name,
|
||||
self,
|
||||
self.model.config.layer.get(self._layername).get('defaultdatabaseobject'),
|
||||
self._definition.get('dbentity'))
|
||||
|
||||
@property
|
||||
def layer(self):
|
||||
"""Returns the entity layer."""
|
||||
return self.model.get_layer(self._layername)
|
||||
|
||||
def validate(self):
|
||||
|
||||
errors = ErrorCollection()
|
||||
|
||||
# Validating entity references:
|
||||
|
||||
for e in self._definition.get('sources'):
|
||||
if self.model.get_entity(e) is None:
|
||||
errors.add("VALIDATION ERROR",
|
||||
(self.filename, "Generic Transformation", "<" + self.name + ">"),
|
||||
f'source <{e}> not found')
|
||||
|
||||
for e in self._definition.get('targets'):
|
||||
if self.model.get_entity(e) is None:
|
||||
errors.add("VALIDATION ERROR",
|
||||
(self.filename, "Generic Transformation", "<" + self.name + ">"),
|
||||
f'target <{e}> not found')
|
||||
|
||||
for name, e in self.get_query_entities().items():
|
||||
if e is None:
|
||||
errors.add("VALIDATION ERROR",
|
||||
(self.filename, "Generic Transformation", "<" + self.name + ">"),
|
||||
f'query-entity <{name}> not found.')
|
||||
|
||||
for name, e in self.get_query_entities().items():
|
||||
if name not in self._definition.get('sources') and name not in self._definition.get('targets'):
|
||||
errors.add("VALIDATION ERROR",
|
||||
(self.filename, "Generic Transformation", "<" + self.name + ">"),
|
||||
f'query-entity <{name}> not specified as source or target.')
|
||||
|
||||
return errors
|
||||
|
||||
def get_source_entities(self):
|
||||
"""returns a list of linked entities."""
|
||||
return [self.model.get_entity(h) for h in self._definition['sources']]
|
||||
|
||||
def get_target_entities(self):
|
||||
"""returns a list of linked entities."""
|
||||
return [self.model.get_entity(h) for h in self._definition['targets']]
|
||||
|
||||
@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):
|
||||
return [{'entity': self, 'component': c, 'type': c.type} for c in self.get_source_entities()]
|
||||
|
||||
def get_attributes(self, roles=(), exclude=()):
|
||||
return []
|
||||
Reference in New Issue
Block a user