diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-04-12 22:03:27 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-04-12 22:03:27 +0200 |
commit | 2cbbdaca7c6e96e40b17b6af4672af2b6735bf8e (patch) | |
tree | 1ecd446af60b78ac788f7873c8926ee283178d68 /common/resourcefacade.h | |
parent | 68fcd3e123e9c0e345d95728d0c8742e53be940a (diff) | |
download | sink-2cbbdaca7c6e96e40b17b6af4672af2b6735bf8e.tar.gz sink-2cbbdaca7c6e96e40b17b6af4672af2b6735bf8e.zip |
Generalized LocalStorageFacade
Diffstat (limited to 'common/resourcefacade.h')
-rw-r--r-- | common/resourcefacade.h | 71 |
1 files changed, 42 insertions, 29 deletions
diff --git a/common/resourcefacade.h b/common/resourcefacade.h index 0deb017..e7e39d3 100644 --- a/common/resourcefacade.h +++ b/common/resourcefacade.h | |||
@@ -31,6 +31,47 @@ class Query; | |||
31 | class Inspection; | 31 | class Inspection; |
32 | } | 32 | } |
33 | 33 | ||
34 | class ConfigNotifier : public QObject | ||
35 | { | ||
36 | Q_OBJECT | ||
37 | public: | ||
38 | void add(const Sink::ApplicationDomain::ApplicationDomainType::Ptr &account) | ||
39 | { | ||
40 | emit added(account); | ||
41 | } | ||
42 | |||
43 | void remove(const Sink::ApplicationDomain::ApplicationDomainType::Ptr &account) | ||
44 | { | ||
45 | emit removed(account); | ||
46 | } | ||
47 | |||
48 | void modify(const Sink::ApplicationDomain::ApplicationDomainType::Ptr &account) | ||
49 | { | ||
50 | emit modified(account); | ||
51 | } | ||
52 | signals: | ||
53 | void added(const Sink::ApplicationDomain::ApplicationDomainType::Ptr &account); | ||
54 | void removed(const Sink::ApplicationDomain::ApplicationDomainType::Ptr &account); | ||
55 | void modified(const Sink::ApplicationDomain::ApplicationDomainType::Ptr &account); | ||
56 | }; | ||
57 | |||
58 | template <typename DomainType> | ||
59 | class LocalStorageFacade : public Sink::StoreFacade<DomainType> | ||
60 | { | ||
61 | public: | ||
62 | LocalStorageFacade(const QByteArray &instanceIdentifier); | ||
63 | virtual ~LocalStorageFacade(); | ||
64 | virtual KAsync::Job<void> create(const DomainType &resource) Q_DECL_OVERRIDE; | ||
65 | virtual KAsync::Job<void> modify(const DomainType &resource) Q_DECL_OVERRIDE; | ||
66 | 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; | ||
68 | private: | ||
69 | typename DomainType::Ptr readFromConfig(const QByteArray &id, const QByteArray &type); | ||
70 | |||
71 | ConfigStore mConfigStore; | ||
72 | static ConfigNotifier sConfigNotifier; | ||
73 | }; | ||
74 | |||
34 | class ResourceFacade : public Sink::StoreFacade<Sink::ApplicationDomain::SinkResource> | 75 | class ResourceFacade : public Sink::StoreFacade<Sink::ApplicationDomain::SinkResource> |
35 | { | 76 | { |
36 | public: | 77 | public: |
@@ -42,39 +83,11 @@ public: | |||
42 | QPair<KAsync::Job<void>, typename Sink::ResultEmitter<Sink::ApplicationDomain::SinkResource::Ptr>::Ptr> load(const Sink::Query &query) Q_DECL_OVERRIDE; | 83 | QPair<KAsync::Job<void>, typename Sink::ResultEmitter<Sink::ApplicationDomain::SinkResource::Ptr>::Ptr> load(const Sink::Query &query) Q_DECL_OVERRIDE; |
43 | }; | 84 | }; |
44 | 85 | ||
45 | class AccountFacade : public Sink::StoreFacade<Sink::ApplicationDomain::SinkAccount> | 86 | class AccountFacade : public LocalStorageFacade<Sink::ApplicationDomain::SinkAccount> |
46 | { | 87 | { |
47 | public: | 88 | public: |
48 | AccountFacade(const QByteArray &instanceIdentifier); | 89 | AccountFacade(const QByteArray &instanceIdentifier); |
49 | virtual ~AccountFacade(); | 90 | virtual ~AccountFacade(); |
50 | KAsync::Job<void> create(const Sink::ApplicationDomain::SinkAccount &resource) Q_DECL_OVERRIDE; | ||
51 | KAsync::Job<void> modify(const Sink::ApplicationDomain::SinkAccount &resource) Q_DECL_OVERRIDE; | ||
52 | KAsync::Job<void> remove(const Sink::ApplicationDomain::SinkAccount &resource) Q_DECL_OVERRIDE; | ||
53 | QPair<KAsync::Job<void>, typename Sink::ResultEmitter<Sink::ApplicationDomain::SinkAccount::Ptr>::Ptr> load(const Sink::Query &query) Q_DECL_OVERRIDE; | ||
54 | private: | ||
55 | ConfigStore mConfigStore; | ||
56 | }; | 91 | }; |
57 | 92 | ||
58 | class ConfigNotifier : public QObject | ||
59 | { | ||
60 | Q_OBJECT | ||
61 | public: | ||
62 | void add(const Sink::ApplicationDomain::SinkAccount::Ptr &account) | ||
63 | { | ||
64 | emit added(account); | ||
65 | } | ||
66 | |||
67 | void remove(const Sink::ApplicationDomain::SinkAccount::Ptr &account) | ||
68 | { | ||
69 | emit removed(account); | ||
70 | } | ||
71 | 93 | ||
72 | void modify(const Sink::ApplicationDomain::SinkAccount::Ptr &account) | ||
73 | { | ||
74 | emit modified(account); | ||
75 | } | ||
76 | signals: | ||
77 | void added(const Sink::ApplicationDomain::SinkAccount::Ptr &account); | ||
78 | void removed(const Sink::ApplicationDomain::SinkAccount::Ptr &account); | ||
79 | void modified(const Sink::ApplicationDomain::SinkAccount::Ptr &account); | ||
80 | }; | ||