diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-06-11 11:12:54 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-06-11 11:12:54 +0200 |
commit | b50832042416fb4a37a7d31f3b133f73a3b15ebb (patch) | |
tree | d1ecdc8ac19619111362302bb19e4f42e1b46071 /common/pipeline.h | |
parent | d8fcc65cac69fdbaad79289458a25c300ebdc212 (diff) | |
download | sink-b50832042416fb4a37a7d31f3b133f73a3b15ebb.tar.gz sink-b50832042416fb4a37a7d31f3b133f73a3b15ebb.zip |
A more convenient preprocessor API
Diffstat (limited to 'common/pipeline.h')
-rw-r--r-- | common/pipeline.h | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/common/pipeline.h b/common/pipeline.h index c3abcf6..1afda21 100644 --- a/common/pipeline.h +++ b/common/pipeline.h | |||
@@ -82,10 +82,10 @@ public: | |||
82 | virtual ~Preprocessor(); | 82 | virtual ~Preprocessor(); |
83 | 83 | ||
84 | virtual void startBatch(); | 84 | virtual void startBatch(); |
85 | virtual void newEntity(const QByteArray &key, qint64 revision, Sink::ApplicationDomain::BufferAdaptor &newEntity, Sink::Storage::Transaction &transaction) {}; | 85 | virtual void newEntity(const QByteArray &uid, qint64 revision, Sink::ApplicationDomain::BufferAdaptor &newEntity, Sink::Storage::Transaction &transaction) {}; |
86 | virtual void modifiedEntity(const QByteArray &key, qint64 revision, const Sink::ApplicationDomain::BufferAdaptor &oldEntity, | 86 | virtual void modifiedEntity(const QByteArray &uid, qint64 revision, const Sink::ApplicationDomain::BufferAdaptor &oldEntity, |
87 | Sink::ApplicationDomain::BufferAdaptor &newEntity, Sink::Storage::Transaction &transaction) {}; | 87 | Sink::ApplicationDomain::BufferAdaptor &newEntity, Sink::Storage::Transaction &transaction) {}; |
88 | virtual void deletedEntity(const QByteArray &key, qint64 revision, const Sink::ApplicationDomain::BufferAdaptor &oldEntity, Sink::Storage::Transaction &transaction) {}; | 88 | virtual void deletedEntity(const QByteArray &uid, qint64 revision, const Sink::ApplicationDomain::BufferAdaptor &oldEntity, Sink::Storage::Transaction &transaction) {}; |
89 | virtual void finalize(); | 89 | virtual void finalize(); |
90 | 90 | ||
91 | protected: | 91 | protected: |
@@ -104,4 +104,32 @@ private: | |||
104 | QByteArray resourceType; | 104 | QByteArray resourceType; |
105 | }; | 105 | }; |
106 | 106 | ||
107 | template<typename DomainType> | ||
108 | class SINK_EXPORT EntityPreprocessor: public Preprocessor | ||
109 | { | ||
110 | public: | ||
111 | virtual void newEntity(DomainType &, Sink::Storage::Transaction &transaction) {}; | ||
112 | virtual void modifiedEntity(const DomainType &oldEntity, DomainType &newEntity, Sink::Storage::Transaction &transaction) {}; | ||
113 | virtual void deletedEntity(const DomainType &oldEntity, Sink::Storage::Transaction &transaction) {}; | ||
114 | |||
115 | private: | ||
116 | static void nullDeleter(Sink::ApplicationDomain::BufferAdaptor *) {} | ||
117 | virtual void newEntity(const QByteArray &uid, qint64 revision, Sink::ApplicationDomain::BufferAdaptor &bufferAdaptor, Sink::Storage::Transaction &transaction) Q_DECL_OVERRIDE | ||
118 | { | ||
119 | auto o = DomainType("", uid, revision, QSharedPointer<Sink::ApplicationDomain::BufferAdaptor>(&bufferAdaptor, nullDeleter)); | ||
120 | newEntity(o, transaction); | ||
121 | } | ||
122 | |||
123 | virtual void modifiedEntity(const QByteArray &uid, qint64 revision, const Sink::ApplicationDomain::BufferAdaptor &oldEntity, | ||
124 | Sink::ApplicationDomain::BufferAdaptor &bufferAdaptor, Sink::Storage::Transaction &transaction) Q_DECL_OVERRIDE | ||
125 | { | ||
126 | auto o = DomainType("", uid, revision, QSharedPointer<Sink::ApplicationDomain::BufferAdaptor>(&bufferAdaptor, nullDeleter)); | ||
127 | modifiedEntity(DomainType("", uid, 0, QSharedPointer<Sink::ApplicationDomain::BufferAdaptor>(const_cast<Sink::ApplicationDomain::BufferAdaptor*>(&oldEntity), nullDeleter)), o, transaction); | ||
128 | } | ||
129 | virtual void deletedEntity(const QByteArray &uid, qint64 revision, const Sink::ApplicationDomain::BufferAdaptor &bufferAdaptor, Sink::Storage::Transaction &transaction) Q_DECL_OVERRIDE | ||
130 | { | ||
131 | deletedEntity(DomainType("", uid, revision, QSharedPointer<Sink::ApplicationDomain::BufferAdaptor>(const_cast<Sink::ApplicationDomain::BufferAdaptor*>(&bufferAdaptor), nullDeleter)), transaction); | ||
132 | } | ||
133 | }; | ||
134 | |||
107 | } // namespace Sink | 135 | } // namespace Sink |