summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/domainadaptor.h30
-rw-r--r--examples/dummyresource/domainadaptor.cpp3
-rw-r--r--examples/dummyresource/domainadaptor.h8
-rw-r--r--tests/domainadaptortest.cpp8
-rw-r--r--tests/testimplementations.h4
5 files changed, 13 insertions, 40 deletions
diff --git a/common/domainadaptor.h b/common/domainadaptor.h
index 3fbb95f..1db43ca 100644
--- a/common/domainadaptor.h
+++ b/common/domainadaptor.h
@@ -29,11 +29,9 @@
29#include "domain/typeimplementations.h" 29#include "domain/typeimplementations.h"
30#include "bufferadaptor.h" 30#include "bufferadaptor.h"
31#include "entity_generated.h" 31#include "entity_generated.h"
32#include "metadata_generated.h"
33#include "entitybuffer.h" 32#include "entitybuffer.h"
34#include "propertymapper.h" 33#include "propertymapper.h"
35#include "log.h" 34#include "log.h"
36#include "dummy_generated.h"
37 35
38/** 36/**
39 * Create a buffer from a domain object using the provided mappings 37 * Create a buffer from a domain object using the provided mappings
@@ -136,9 +134,7 @@ public:
136 134
137 virtual QVariant getProperty(const QByteArray &key) const Q_DECL_OVERRIDE 135 virtual QVariant getProperty(const QByteArray &key) const Q_DECL_OVERRIDE
138 { 136 {
139 if (mResourceBuffer && mResourceMapper->hasMapping(key)) { 137 if (mLocalBuffer && mLocalMapper->hasMapping(key)) {
140 return mResourceMapper->getProperty(key, mResourceBuffer);
141 } else if (mLocalBuffer && mLocalMapper->hasMapping(key)) {
142 return mLocalMapper->getProperty(key, mLocalBuffer); 138 return mLocalMapper->getProperty(key, mLocalBuffer);
143 } else if (mIndex && mIndexMapper->hasMapping(key)) { 139 } else if (mIndex && mIndexMapper->hasMapping(key)) {
144 return mIndexMapper->getProperty(key, *mIndex, *this); 140 return mIndexMapper->getProperty(key, *mIndex, *this);
@@ -151,23 +147,21 @@ public:
151 */ 147 */
152 virtual QList<QByteArray> availableProperties() const Q_DECL_OVERRIDE 148 virtual QList<QByteArray> availableProperties() const Q_DECL_OVERRIDE
153 { 149 {
154 return mResourceMapper->availableProperties() + mLocalMapper->availableProperties() + mIndexMapper->availableProperties(); 150 return mLocalMapper->availableProperties() + mIndexMapper->availableProperties();
155 } 151 }
156 152
157 void const *mLocalBuffer; 153 void const *mLocalBuffer;
158 void const *mResourceBuffer;
159 QSharedPointer<ReadPropertyMapper> mLocalMapper; 154 QSharedPointer<ReadPropertyMapper> mLocalMapper;
160 QSharedPointer<ReadPropertyMapper> mResourceMapper;
161 QSharedPointer<IndexPropertyMapper> mIndexMapper; 155 QSharedPointer<IndexPropertyMapper> mIndexMapper;
162 TypeIndex *mIndex; 156 TypeIndex *mIndex;
163}; 157};
164 158
165/** 159/**
166 * The factory should define how to go from an entitybuffer (local + resource buffer), to a domain type adapter. 160 * The factory should define how to go from an entitybuffer (local buffer), to a domain type adapter.
167 * It defines how values are split accross local and resource buffer. 161 * It defines how values are split accross local and resource buffer.
168 * This is required by the facade the read the value, and by the pipeline preprocessors to access the domain values in a generic way. 162 * This is required by the facade the read the value, and by the pipeline preprocessors to access the domain values in a generic way.
169 */ 163 */
170template <typename DomainType, typename ResourceBuffer = Sink::ApplicationDomain::Buffer::Dummy, typename ResourceBuilder = Sink::ApplicationDomain::Buffer::DummyBuilder> 164template <typename DomainType>
171class SINK_EXPORT DomainTypeAdaptorFactory : public DomainTypeAdaptorFactoryInterface 165class SINK_EXPORT DomainTypeAdaptorFactory : public DomainTypeAdaptorFactoryInterface
172{ 166{
173 typedef typename Sink::ApplicationDomain::TypeImplementation<DomainType>::Buffer LocalBuffer; 167 typedef typename Sink::ApplicationDomain::TypeImplementation<DomainType>::Buffer LocalBuffer;
@@ -176,9 +170,7 @@ class SINK_EXPORT DomainTypeAdaptorFactory : public DomainTypeAdaptorFactoryInte
176public: 170public:
177 DomainTypeAdaptorFactory() 171 DomainTypeAdaptorFactory()
178 : mLocalMapper(QSharedPointer<ReadPropertyMapper>::create()), 172 : mLocalMapper(QSharedPointer<ReadPropertyMapper>::create()),
179 mResourceMapper(QSharedPointer<ReadPropertyMapper>::create()),
180 mLocalWriteMapper(QSharedPointer<WritePropertyMapper>::create()), 173 mLocalWriteMapper(QSharedPointer<WritePropertyMapper>::create()),
181 mResourceWriteMapper(QSharedPointer<WritePropertyMapper>::create()),
182 mIndexMapper(QSharedPointer<IndexPropertyMapper>::create()) 174 mIndexMapper(QSharedPointer<IndexPropertyMapper>::create())
183 { 175 {
184 Sink::ApplicationDomain::TypeImplementation<DomainType>::configure(*mLocalMapper); 176 Sink::ApplicationDomain::TypeImplementation<DomainType>::configure(*mLocalMapper);
@@ -189,7 +181,7 @@ public:
189 virtual ~DomainTypeAdaptorFactory(){}; 181 virtual ~DomainTypeAdaptorFactory(){};
190 182
191 /** 183 /**
192 * Creates an adaptor for the given domain and resource types. 184 * Creates an adaptor for the given domain types.
193 * 185 *
194 * This returns by default a DatastoreBufferAdaptor initialized with the corresponding property mappers. 186 * This returns by default a DatastoreBufferAdaptor initialized with the corresponding property mappers.
195 */ 187 */
@@ -198,8 +190,6 @@ public:
198 auto adaptor = QSharedPointer<DatastoreBufferAdaptor>::create(); 190 auto adaptor = QSharedPointer<DatastoreBufferAdaptor>::create();
199 adaptor->mLocalBuffer = Sink::EntityBuffer::readBuffer<LocalBuffer>(entity.local()); 191 adaptor->mLocalBuffer = Sink::EntityBuffer::readBuffer<LocalBuffer>(entity.local());
200 adaptor->mLocalMapper = mLocalMapper; 192 adaptor->mLocalMapper = mLocalMapper;
201 adaptor->mResourceBuffer = Sink::EntityBuffer::readBuffer<ResourceBuffer>(entity.resource());
202 adaptor->mResourceMapper = mResourceMapper;
203 adaptor->mIndexMapper = mIndexMapper; 193 adaptor->mIndexMapper = mIndexMapper;
204 adaptor->mIndex = index; 194 adaptor->mIndex = index;
205 return adaptor; 195 return adaptor;
@@ -214,13 +204,7 @@ public:
214 createBufferPartBuffer<LocalBuffer, LocalBuilder>(domainObject, localFbb, *mLocalWriteMapper); 204 createBufferPartBuffer<LocalBuffer, LocalBuilder>(domainObject, localFbb, *mLocalWriteMapper);
215 } 205 }
216 206
217 flatbuffers::FlatBufferBuilder resFbb; 207 Sink::EntityBuffer::assembleEntityBuffer(fbb, metadataData, metadataSize, 0, 0, localFbb.GetBufferPointer(), localFbb.GetSize());
218 if (mResourceWriteMapper) {
219 // SinkTrace() << "Creating resouce buffer part";
220 createBufferPartBuffer<ResourceBuffer, ResourceBuilder>(domainObject, resFbb, *mResourceWriteMapper);
221 }
222
223 Sink::EntityBuffer::assembleEntityBuffer(fbb, metadataData, metadataSize, resFbb.GetBufferPointer(), resFbb.GetSize(), localFbb.GetBufferPointer(), localFbb.GetSize());
224 return true; 208 return true;
225 } 209 }
226 210
@@ -236,9 +220,7 @@ public:
236 220
237protected: 221protected:
238 QSharedPointer<ReadPropertyMapper> mLocalMapper; 222 QSharedPointer<ReadPropertyMapper> mLocalMapper;
239 QSharedPointer<ReadPropertyMapper> mResourceMapper;
240 QSharedPointer<WritePropertyMapper> mLocalWriteMapper; 223 QSharedPointer<WritePropertyMapper> mLocalWriteMapper;
241 QSharedPointer<WritePropertyMapper> mResourceWriteMapper;
242 QSharedPointer<IndexPropertyMapper> mIndexMapper; 224 QSharedPointer<IndexPropertyMapper> mIndexMapper;
243}; 225};
244 226
diff --git a/examples/dummyresource/domainadaptor.cpp b/examples/dummyresource/domainadaptor.cpp
index dcc08c7..e7a20da 100644
--- a/examples/dummyresource/domainadaptor.cpp
+++ b/examples/dummyresource/domainadaptor.cpp
@@ -28,9 +28,6 @@ using namespace flatbuffers;
28DummyEventAdaptorFactory::DummyEventAdaptorFactory() 28DummyEventAdaptorFactory::DummyEventAdaptorFactory()
29 : DomainTypeAdaptorFactory() 29 : DomainTypeAdaptorFactory()
30{ 30{
31 //TODO turn this into initializeReadPropertyMapper as well?
32 mResourceMapper->addMapping<Sink::ApplicationDomain::Event::Summary, DummyEvent>(&DummyEvent::summary);
33 mResourceWriteMapper->addMapping<Sink::ApplicationDomain::Event::Summary>(&DummyEventBuilder::add_summary);
34} 31}
35 32
36DummyMailAdaptorFactory::DummyMailAdaptorFactory() 33DummyMailAdaptorFactory::DummyMailAdaptorFactory()
diff --git a/examples/dummyresource/domainadaptor.h b/examples/dummyresource/domainadaptor.h
index e7098e9..3faaa63 100644
--- a/examples/dummyresource/domainadaptor.h
+++ b/examples/dummyresource/domainadaptor.h
@@ -22,25 +22,23 @@
22#include "event_generated.h" 22#include "event_generated.h"
23#include "mail_generated.h" 23#include "mail_generated.h"
24#include "folder_generated.h" 24#include "folder_generated.h"
25#include "dummy_generated.h"
26#include "dummycalendar_generated.h"
27#include "entity_generated.h" 25#include "entity_generated.h"
28 26
29class DummyEventAdaptorFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Event, DummyCalendar::DummyEvent, DummyCalendar::DummyEventBuilder> 27class DummyEventAdaptorFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Event>
30{ 28{
31public: 29public:
32 DummyEventAdaptorFactory(); 30 DummyEventAdaptorFactory();
33 virtual ~DummyEventAdaptorFactory() {}; 31 virtual ~DummyEventAdaptorFactory() {};
34}; 32};
35 33
36class DummyMailAdaptorFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Mail, Sink::ApplicationDomain::Buffer::Dummy, Sink::ApplicationDomain::Buffer::DummyBuilder> 34class DummyMailAdaptorFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Mail>
37{ 35{
38public: 36public:
39 DummyMailAdaptorFactory(); 37 DummyMailAdaptorFactory();
40 virtual ~DummyMailAdaptorFactory() {}; 38 virtual ~DummyMailAdaptorFactory() {};
41}; 39};
42 40
43class DummyFolderAdaptorFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Folder, Sink::ApplicationDomain::Buffer::Dummy, Sink::ApplicationDomain::Buffer::DummyBuilder> 41class DummyFolderAdaptorFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Folder>
44{ 42{
45public: 43public:
46 DummyFolderAdaptorFactory(); 44 DummyFolderAdaptorFactory();
diff --git a/tests/domainadaptortest.cpp b/tests/domainadaptortest.cpp
index c5f6e3b..2b7455a 100644
--- a/tests/domainadaptortest.cpp
+++ b/tests/domainadaptortest.cpp
@@ -14,23 +14,19 @@
14#include "metadata_generated.h" 14#include "metadata_generated.h"
15#include "entity_generated.h" 15#include "entity_generated.h"
16 16
17class TestFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Event, Sink::ApplicationDomain::Buffer::Event, Sink::ApplicationDomain::Buffer::EventBuilder> 17class TestFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Event>
18{ 18{
19public: 19public:
20 TestFactory() 20 TestFactory()
21 { 21 {
22 mResourceWriteMapper = QSharedPointer<WritePropertyMapper>::create();
23 Sink::ApplicationDomain::TypeImplementation<Sink::ApplicationDomain::Event>::configure(*mResourceWriteMapper);
24 } 22 }
25}; 23};
26 24
27class TestMailFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Mail, Sink::ApplicationDomain::Buffer::Mail, Sink::ApplicationDomain::Buffer::MailBuilder> 25class TestMailFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Mail>
28{ 26{
29public: 27public:
30 TestMailFactory() 28 TestMailFactory()
31 { 29 {
32 mResourceWriteMapper = QSharedPointer<WritePropertyMapper>::create();
33 Sink::ApplicationDomain::TypeImplementation<Sink::ApplicationDomain::Mail>::configure(*mResourceWriteMapper);
34 } 30 }
35}; 31};
36 32
diff --git a/tests/testimplementations.h b/tests/testimplementations.h
index a145265..ff9d9b8 100644
--- a/tests/testimplementations.h
+++ b/tests/testimplementations.h
@@ -33,7 +33,7 @@
33#include "mail_generated.h" 33#include "mail_generated.h"
34#include "createentity_generated.h" 34#include "createentity_generated.h"
35 35
36class TestEventAdaptorFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Event, Sink::ApplicationDomain::Buffer::Event, Sink::ApplicationDomain::Buffer::EventBuilder> 36class TestEventAdaptorFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Event>
37{ 37{
38public: 38public:
39 TestEventAdaptorFactory() : DomainTypeAdaptorFactory() 39 TestEventAdaptorFactory() : DomainTypeAdaptorFactory()
@@ -43,7 +43,7 @@ public:
43 virtual ~TestEventAdaptorFactory(){}; 43 virtual ~TestEventAdaptorFactory(){};
44}; 44};
45 45
46class TestMailAdaptorFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Mail, Sink::ApplicationDomain::Buffer::Mail, Sink::ApplicationDomain::Buffer::MailBuilder> 46class TestMailAdaptorFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Mail>
47{ 47{
48public: 48public:
49 TestMailAdaptorFactory() : DomainTypeAdaptorFactory() 49 TestMailAdaptorFactory() : DomainTypeAdaptorFactory()