30 lines
989 B
Python
30 lines
989 B
Python
from DataVaultGenerator.Components import DataVaultEntity, ErrorCollection, MappingSource
|
|
|
|
|
|
class Composite(DataVaultEntity, MappingSource):
|
|
def __init__(self, model, filename, definition: dict = None):
|
|
DataVaultEntity.__init__(self, model, filename, definition)
|
|
MappingSource.__init__(self, model, self)
|
|
|
|
@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_query_entities().values()]
|
|
|
|
def validate(self):
|
|
|
|
errors = ErrorCollection()
|
|
for attr in self.attributes.values():
|
|
spec = self.layer.sys_specification
|
|
errors.append(attr.validate(spec))
|
|
|
|
return errors |