summaryrefslogtreecommitdiffstats
path: root/common/resourcefacade.h
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-04-12 22:03:27 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-04-12 22:03:27 +0200
commit2cbbdaca7c6e96e40b17b6af4672af2b6735bf8e (patch)
tree1ecd446af60b78ac788f7873c8926ee283178d68 /common/resourcefacade.h
parent68fcd3e123e9c0e345d95728d0c8742e53be940a (diff)
downloadsink-2cbbdaca7c6e96e40b17b6af4672af2b6735bf8e.tar.gz
sink-2cbbdaca7c6e96e40b17b6af4672af2b6735bf8e.zip
Generalized LocalStorageFacade
Diffstat (limited to 'common/resourcefacade.h')
-rw-r--r--common/resourcefacade.h71
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;
31class Inspection; 31class Inspection;
32} 32}
33 33
34class ConfigNotifier : public QObject
35{
36 Q_OBJECT
37public:
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 }
52signals:
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
58template <typename DomainType>
59class LocalStorageFacade : public Sink::StoreFacade<DomainType>
60{
61public:
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;
68private:
69 typename DomainType::Ptr readFromConfig(const QByteArray &id, const QByteArray &type);
70
71 ConfigStore mConfigStore;
72 static ConfigNotifier sConfigNotifier;
73};
74
34class ResourceFacade : public Sink::StoreFacade<Sink::ApplicationDomain::SinkResource> 75class ResourceFacade : public Sink::StoreFacade<Sink::ApplicationDomain::SinkResource>
35{ 76{
36public: 77public:
@@ -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
45class AccountFacade : public Sink::StoreFacade<Sink::ApplicationDomain::SinkAccount> 86class AccountFacade : public LocalStorageFacade<Sink::ApplicationDomain::SinkAccount>
46{ 87{
47public: 88public:
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;
54private:
55 ConfigStore mConfigStore;
56}; 91};
57 92
58class ConfigNotifier : public QObject
59{
60 Q_OBJECT
61public:
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 }
76signals:
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};