Source code for oldman.client.mediation.default

from logging import getLogger

from oldman.client.mediation.store_proxy import DefaultStoreProxy
from oldman.client.model.manager import ClientModelManager
from oldman.storage.model.conversion.converter import EquivalentModelConverter
from oldman.storage.model.conversion.manager import ModelConversionManager
from oldman.client.mediation.store_selector import StoreSelector
from oldman.client.mediation.mediator import Mediator
from oldman.client.session import DefaultClientSession

DEFAULT_MODEL_NAME = "Default_Client"


[docs]class DefaultMediator(Mediator): def __init__(self, data_stores, oper_extractor, schema_graph=None, attr_extractor=None): self._logger = getLogger(__name__) self._store_selector = StoreSelector(data_stores) self._model_manager = ClientModelManager(oper_extractor, schema_graph=schema_graph, attr_extractor=attr_extractor) # Default model self._model_manager.create_model(DEFAULT_MODEL_NAME, {u"@context": {}}, untyped=True,is_default=True, accept_new_blank_nodes=True) self._conversion_manager = ModelConversionManager() self._store_proxy = DefaultStoreProxy(self._store_selector, self._conversion_manager)
[docs] def declare_method(self, method, name, class_iri): """ TODO: point this comment to the definition. """ models = self._model_manager.find_descendant_models(class_iri) for model in models: if model.class_iri is None: continue model.declare_method(method, name, class_iri)
[docs] def import_store_model(self, class_iri, data_store=None): raise NotImplementedError("TODO: implement me here")
[docs] def import_store_models(self, store=None): """TODO: check possible conflicts with local models.""" stores = [store] if store is not None else self._store_selector.stores for store in stores: for store_model in store.model_manager.models: is_default = (store_model.class_iri is None) client_model = self._model_manager.import_model(store_model, is_default=is_default, store_schema_graph=store.model_manager.schema_graph) # Converter converter = EquivalentModelConverter(client_model, store_model) self._conversion_manager.register_model_converter(client_model, store_model, store, converter)
[docs] def get_client_model(self, class_name_or_iri): return self._model_manager.get_model(class_name_or_iri)
[docs] def create_session(self): """TODO: explain it """ return DefaultClientSession(self._model_manager, self._store_proxy)