46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
from DataVaultGenerator.Components import ErrorCollection, GeneratorEntity, DBEntity
|
|
|
|
|
|
class GenericTask(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 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 Task", "<" + 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 Task", "<" + self.name + ">"),
|
|
f'target <{e}> not found')
|
|
|
|
return errors
|
|
|
|
def get_source_entities(self):
|
|
"""returns a list of linked entities."""
|
|
return [self.model.get_entity(e) for e in self._definition['sources']]
|
|
|
|
def get_target_entities(self):
|
|
"""returns a list of linked entities."""
|
|
return [self.model.get_entity(e) for e in self._definition['targets']]
|
|
|
|
def get_component_entities(self):
|
|
return [{'entity': self, 'component': c, 'type': c.type} for c in self.get_source_entities()]
|