summaryrefslogtreecommitdiffstats
path: root/common/resourcefacade.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/resourcefacade.h')
-rw-r--r--common/resourcefacade.h29
1 files changed, 25 insertions, 4 deletions
diff --git a/common/resourcefacade.h b/common/resourcefacade.h
index 989375d..23c453a 100644
--- a/common/resourcefacade.h
+++ b/common/resourcefacade.h
@@ -56,6 +56,24 @@ signals:
56}; 56};
57 57
58template <typename DomainType> 58template <typename DomainType>
59class LocalStorageQueryRunner
60{
61public:
62 LocalStorageQueryRunner(const Sink::Query &query, const QByteArray &identifier, ConfigNotifier &configNotifier);
63 typename Sink::ResultEmitter<typename DomainType::Ptr>::Ptr emitter();
64 void setStatusUpdater(const std::function<void(DomainType &)> &);
65 void statusChanged(const QByteArray &identifier);
66 QObject *guard() const;
67
68private:
69 void updateStatus(DomainType &entity);
70 std::function<void(DomainType &)> mStatusUpdater;
71 QSharedPointer<Sink::ResultProvider<typename DomainType::Ptr>> mResultProvider;
72 ConfigStore mConfigStore;
73 std::unique_ptr<QObject> mGuard;
74};
75
76template <typename DomainType>
59class LocalStorageFacade : public Sink::StoreFacade<DomainType> 77class LocalStorageFacade : public Sink::StoreFacade<DomainType>
60{ 78{
61public: 79public:
@@ -65,13 +83,14 @@ public:
65 virtual KAsync::Job<void> modify(const DomainType &resource) Q_DECL_OVERRIDE; 83 virtual KAsync::Job<void> modify(const DomainType &resource) Q_DECL_OVERRIDE;
66 virtual KAsync::Job<void> remove(const DomainType &resource) Q_DECL_OVERRIDE; 84 virtual KAsync::Job<void> remove(const DomainType &resource) Q_DECL_OVERRIDE;
67 virtual QPair<KAsync::Job<void>, typename Sink::ResultEmitter<typename DomainType::Ptr>::Ptr> load(const Sink::Query &query) Q_DECL_OVERRIDE; 85 virtual QPair<KAsync::Job<void>, typename Sink::ResultEmitter<typename DomainType::Ptr>::Ptr> load(const Sink::Query &query) Q_DECL_OVERRIDE;
86
87protected:
88 QByteArray mIdentifier;
89 static ConfigNotifier sConfigNotifier;
90
68private: 91private:
69 typename DomainType::Ptr readFromConfig(const QByteArray &id, const QByteArray &type); 92 typename DomainType::Ptr readFromConfig(const QByteArray &id, const QByteArray &type);
70 static typename DomainType::Ptr readFromConfig(ConfigStore &store, const QByteArray &id, const QByteArray &type);
71
72 ConfigStore mConfigStore; 93 ConfigStore mConfigStore;
73 static ConfigNotifier sConfigNotifier;
74 QByteArray mResourceInstanceIdentifier;
75}; 94};
76 95
77class ResourceFacade : public LocalStorageFacade<Sink::ApplicationDomain::SinkResource> 96class ResourceFacade : public LocalStorageFacade<Sink::ApplicationDomain::SinkResource>
@@ -80,6 +99,7 @@ public:
80 ResourceFacade(); 99 ResourceFacade();
81 virtual ~ResourceFacade(); 100 virtual ~ResourceFacade();
82 virtual KAsync::Job<void> remove(const Sink::ApplicationDomain::SinkResource &resource) Q_DECL_OVERRIDE; 101 virtual KAsync::Job<void> remove(const Sink::ApplicationDomain::SinkResource &resource) Q_DECL_OVERRIDE;
102 virtual QPair<KAsync::Job<void>, typename Sink::ResultEmitter<typename Sink::ApplicationDomain::SinkResource::Ptr>::Ptr> load(const Sink::Query &query) Q_DECL_OVERRIDE;
83}; 103};
84 104
85class AccountFacade : public LocalStorageFacade<Sink::ApplicationDomain::SinkAccount> 105class AccountFacade : public LocalStorageFacade<Sink::ApplicationDomain::SinkAccount>
@@ -87,6 +107,7 @@ class AccountFacade : public LocalStorageFacade<Sink::ApplicationDomain::SinkAcc
87public: 107public:
88 AccountFacade(); 108 AccountFacade();
89 virtual ~AccountFacade(); 109 virtual ~AccountFacade();
110 virtual QPair<KAsync::Job<void>, typename Sink::ResultEmitter<typename Sink::ApplicationDomain::SinkAccount::Ptr>::Ptr> load(const Sink::Query &query) Q_DECL_OVERRIDE;
90}; 111};
91 112
92class IdentityFacade : public LocalStorageFacade<Sink::ApplicationDomain::Identity> 113class IdentityFacade : public LocalStorageFacade<Sink::ApplicationDomain::Identity>