diff options
Diffstat (limited to 'common/resourcefacade.h')
-rw-r--r-- | common/resourcefacade.h | 29 |
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 | ||
58 | template <typename DomainType> | 58 | template <typename DomainType> |
59 | class LocalStorageQueryRunner | ||
60 | { | ||
61 | public: | ||
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 | |||
68 | private: | ||
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 | |||
76 | template <typename DomainType> | ||
59 | class LocalStorageFacade : public Sink::StoreFacade<DomainType> | 77 | class LocalStorageFacade : public Sink::StoreFacade<DomainType> |
60 | { | 78 | { |
61 | public: | 79 | public: |
@@ -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 | |||
87 | protected: | ||
88 | QByteArray mIdentifier; | ||
89 | static ConfigNotifier sConfigNotifier; | ||
90 | |||
68 | private: | 91 | private: |
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 | ||
77 | class ResourceFacade : public LocalStorageFacade<Sink::ApplicationDomain::SinkResource> | 96 | class 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 | ||
85 | class AccountFacade : public LocalStorageFacade<Sink::ApplicationDomain::SinkAccount> | 105 | class AccountFacade : public LocalStorageFacade<Sink::ApplicationDomain::SinkAccount> |
@@ -87,6 +107,7 @@ class AccountFacade : public LocalStorageFacade<Sink::ApplicationDomain::SinkAcc | |||
87 | public: | 107 | public: |
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 | ||
92 | class IdentityFacade : public LocalStorageFacade<Sink::ApplicationDomain::Identity> | 113 | class IdentityFacade : public LocalStorageFacade<Sink::ApplicationDomain::Identity> |