From 61ab9866fa8ea5e26e5ce7d7cc265f5d8d65b277 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 7 Jul 2015 03:22:23 +0200 Subject: Pass instanceIdentifier to facade --- common/clientapi.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'common') diff --git a/common/clientapi.h b/common/clientapi.h index 748baa6..2d926fd 100644 --- a/common/clientapi.h +++ b/common/clientapi.h @@ -108,7 +108,7 @@ public: class FacadeFactory { public: - typedef std::function()> FactoryFunction; + typedef std::function(const QByteArray &)> FactoryFunction; //FIXME: proper singleton implementation static FacadeFactory &instance() @@ -126,7 +126,7 @@ public: void registerFacade(const QByteArray &resource) { const QByteArray typeName = ApplicationDomain::getTypeName(); - mFacadeRegistry.insert(key(resource, typeName), [](){ return std::shared_ptr(new Facade); }); + mFacadeRegistry.insert(key(resource, typeName), [](const QByteArray &instanceIdentifier){ return std::make_shared(instanceIdentifier); }); } /* @@ -152,11 +152,11 @@ public: } template - std::shared_ptr > getFacade(const QByteArray &resource) + std::shared_ptr > getFacade(const QByteArray &resource, const QByteArray &instanceIdentifier) { const QByteArray typeName = ApplicationDomain::getTypeName(); if (auto factoryFunction = mFacadeRegistry.value(key(resource, typeName))) { - return std::static_pointer_cast >(factoryFunction()); + return std::static_pointer_cast >(factoryFunction(instanceIdentifier)); } qWarning() << "Failed to find facade for resource: " << resource << " and type: " << typeName; return std::shared_ptr >(); @@ -199,7 +199,7 @@ public: KAsync::iterate(query.resources) .template each([query, resultSet](const QByteArray &resource, KAsync::Future &future) { //TODO pass resource identifier to factory - auto facade = FacadeFactory::instance().getFacade(resourceName(resource)); + auto facade = FacadeFactory::instance().getFacade(resourceName(resource), resource); if (facade) { facade->load(query, resultSet).template then([&future](){future.setFinished();}).exec(); //Keep the facade alive for the lifetime of the resultSet. @@ -244,7 +244,7 @@ public: template static void create(const DomainType &domainObject, const QByteArray &resourceIdentifier) { //Potentially move to separate thread as well - auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier)); + auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier), resourceIdentifier); facade->create(domainObject).exec().waitForFinished(); //TODO return job? } @@ -257,7 +257,7 @@ public: template static void modify(const DomainType &domainObject, const QByteArray &resourceIdentifier) { //Potentially move to separate thread as well - auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier)); + auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier), resourceIdentifier); facade->modify(domainObject).exec().waitForFinished(); //TODO return job? } @@ -268,7 +268,7 @@ public: template static void remove(const DomainType &domainObject, const QByteArray &resourceIdentifier) { //Potentially move to separate thread as well - auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier)); + auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier), resourceIdentifier); facade->remove(domainObject).exec().waitForFinished(); //TODO return job? } -- cgit v1.2.3