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()]