summaryrefslogtreecommitdiffstats
path: root/common/domain
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-04-28 15:29:18 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-04-28 15:30:15 +0200
commitca5020095abfb76e63bd801e9722c07193eb05f5 (patch)
tree34d6344e982adcea4652a3ccb6bfb43b118a5189 /common/domain
parenta08984c450b1cd2584272b0d57a2f95ae3d074c3 (diff)
downloadsink-ca5020095abfb76e63bd801e9722c07193eb05f5.tar.gz
sink-ca5020095abfb76e63bd801e9722c07193eb05f5.zip
A single propertymapper for both directions
Diffstat (limited to 'common/domain')
-rw-r--r--common/domain/typeimplementations.cpp137
-rw-r--r--common/domain/typeimplementations.h18
2 files changed, 49 insertions, 106 deletions
diff --git a/common/domain/typeimplementations.cpp b/common/domain/typeimplementations.cpp
index 598e5a7..a87e73d 100644
--- a/common/domain/typeimplementations.cpp
+++ b/common/domain/typeimplementations.cpp
@@ -32,6 +32,10 @@
32using namespace Sink; 32using namespace Sink;
33using namespace Sink::ApplicationDomain; 33using namespace Sink::ApplicationDomain;
34 34
35#define SINK_REGISTER_SERIALIZER(MAPPER, ENTITYTYPE, PROPERTY, LOWERCASEPROPERTY) \
36 MAPPER.addMapping<ENTITYTYPE::PROPERTY, Sink::ApplicationDomain::Buffer::ENTITYTYPE, Sink::ApplicationDomain::Buffer::ENTITYTYPE##Builder>(&Sink::ApplicationDomain::Buffer::ENTITYTYPE::LOWERCASEPROPERTY, &Sink::ApplicationDomain::Buffer::ENTITYTYPE##Builder::add_##LOWERCASEPROPERTY);
37
38
35void TypeImplementation<Mail>::configure(TypeIndex &index) 39void TypeImplementation<Mail>::configure(TypeIndex &index)
36{ 40{
37 // index.addProperty<Mail::Sender>(); 41 // index.addProperty<Mail::Sender>();
@@ -61,69 +65,39 @@ void TypeImplementation<Mail>::configure(IndexPropertyMapper &indexPropertyMappe
61 }); 65 });
62} 66}
63 67
64void TypeImplementation<Mail>::configure(ReadPropertyMapper &propertyMapper) 68void TypeImplementation<Mail>::configure(PropertyMapper &propertyMapper)
65{
66 propertyMapper.addMapping<Mail::Sender, Buffer>(&Buffer::sender);
67 propertyMapper.addMapping<Mail::To, Buffer>(&Buffer::to);
68 propertyMapper.addMapping<Mail::Cc, Buffer>(&Buffer::cc);
69 propertyMapper.addMapping<Mail::Bcc, Buffer>(&Buffer::bcc);
70 propertyMapper.addMapping<Mail::Subject, Buffer>(&Buffer::subject);
71 propertyMapper.addMapping<Mail::Date, Buffer>(&Buffer::date);
72 propertyMapper.addMapping<Mail::Unread, Buffer>(&Buffer::unread);
73 propertyMapper.addMapping<Mail::Important, Buffer>(&Buffer::important);
74 propertyMapper.addMapping<Mail::Folder, Buffer>(&Buffer::folder);
75 propertyMapper.addMapping<Mail::MimeMessage, Buffer>(&Buffer::mimeMessage);
76 propertyMapper.addMapping<Mail::FullPayloadAvailable, Buffer>(&Buffer::fullPayloadAvailable);
77 propertyMapper.addMapping<Mail::Draft, Buffer>(&Buffer::draft);
78 propertyMapper.addMapping<Mail::Trash, Buffer>(&Buffer::trash);
79 propertyMapper.addMapping<Mail::Sent, Buffer>(&Buffer::sent);
80 propertyMapper.addMapping<Mail::MessageId, Buffer>(&Buffer::messageId);
81 propertyMapper.addMapping<Mail::ParentMessageId, Buffer>(&Buffer::parentMessageId);
82}
83
84void TypeImplementation<Mail>::configure(WritePropertyMapper &propertyMapper)
85{ 69{
86 propertyMapper.addMapping<Mail::Sender, BufferBuilder>(&BufferBuilder::add_sender); 70 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Sender, sender);
87 propertyMapper.addMapping<Mail::To, BufferBuilder>(&BufferBuilder::add_to); 71 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, To, to);
88 propertyMapper.addMapping<Mail::Cc, BufferBuilder>(&BufferBuilder::add_cc); 72 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Cc, cc);
89 propertyMapper.addMapping<Mail::Bcc, BufferBuilder>(&BufferBuilder::add_bcc); 73 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Bcc, bcc);
90 propertyMapper.addMapping<Mail::Subject, BufferBuilder>(&BufferBuilder::add_subject); 74 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Subject, subject);
91 propertyMapper.addMapping<Mail::Date, BufferBuilder>(&BufferBuilder::add_date); 75 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Date, date);
92 propertyMapper.addMapping<Mail::Unread, BufferBuilder>(&BufferBuilder::add_unread); 76 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Unread, unread);
93 propertyMapper.addMapping<Mail::Important, BufferBuilder>(&BufferBuilder::add_important); 77 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Important, important);
94 propertyMapper.addMapping<Mail::Folder, BufferBuilder>(&BufferBuilder::add_folder); 78 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Folder, folder);
95 propertyMapper.addMapping<Mail::MimeMessage, BufferBuilder>(&BufferBuilder::add_mimeMessage); 79 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, MimeMessage, mimeMessage);
96 propertyMapper.addMapping<Mail::FullPayloadAvailable, BufferBuilder>(&BufferBuilder::add_fullPayloadAvailable); 80 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, FullPayloadAvailable, fullPayloadAvailable);
97 propertyMapper.addMapping<Mail::Draft, BufferBuilder>(&BufferBuilder::add_draft); 81 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Draft, draft);
98 propertyMapper.addMapping<Mail::Trash, BufferBuilder>(&BufferBuilder::add_trash); 82 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Trash, trash);
99 propertyMapper.addMapping<Mail::Sent, BufferBuilder>(&BufferBuilder::add_sent); 83 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Sent, sent);
100 propertyMapper.addMapping<Mail::MessageId, BufferBuilder>(&BufferBuilder::add_messageId); 84 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, MessageId, messageId);
101 propertyMapper.addMapping<Mail::ParentMessageId, BufferBuilder>(&BufferBuilder::add_parentMessageId); 85 SINK_REGISTER_SERIALIZER(propertyMapper, Mail, ParentMessageId, parentMessageId);
102} 86}
103 87
104
105void TypeImplementation<Folder>::configure(TypeIndex &index) 88void TypeImplementation<Folder>::configure(TypeIndex &index)
106{ 89{
107 index.addProperty<QByteArray>(Folder::Parent::name); 90 index.addProperty<QByteArray>(Folder::Parent::name);
108 index.addProperty<QString>(Folder::Name::name); 91 index.addProperty<QString>(Folder::Name::name);
109} 92}
110 93
111void TypeImplementation<Folder>::configure(ReadPropertyMapper &propertyMapper) 94void TypeImplementation<Folder>::configure(PropertyMapper &propertyMapper)
112{
113 propertyMapper.addMapping<Folder::Parent, Buffer>(&Buffer::parent);
114 propertyMapper.addMapping<Folder::Name, Buffer>(&Buffer::name);
115 propertyMapper.addMapping<Folder::Icon, Buffer>(&Buffer::icon);
116 propertyMapper.addMapping<Folder::SpecialPurpose, Buffer>(&Buffer::specialpurpose);
117 propertyMapper.addMapping<Folder::Enabled, Buffer>(&Buffer::enabled);
118}
119
120void TypeImplementation<Folder>::configure(WritePropertyMapper &propertyMapper)
121{ 95{
122 propertyMapper.addMapping<Folder::Parent, BufferBuilder>(&BufferBuilder::add_parent); 96 SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Parent, parent);
123 propertyMapper.addMapping<Folder::Name, BufferBuilder>(&BufferBuilder::add_name); 97 SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Name, name);
124 propertyMapper.addMapping<Folder::Icon, BufferBuilder>(&BufferBuilder::add_icon); 98 SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Icon, icon);
125 propertyMapper.addMapping<Folder::SpecialPurpose, BufferBuilder>(&BufferBuilder::add_specialpurpose); 99 SINK_REGISTER_SERIALIZER(propertyMapper, Folder, SpecialPurpose, specialpurpose);
126 propertyMapper.addMapping<Folder::Enabled, BufferBuilder>(&BufferBuilder::add_enabled); 100 SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Enabled, enabled);
127} 101}
128 102
129void TypeImplementation<Folder>::configure(IndexPropertyMapper &) 103void TypeImplementation<Folder>::configure(IndexPropertyMapper &)
@@ -137,26 +111,15 @@ void TypeImplementation<Contact>::configure(TypeIndex &index)
137 index.addProperty<QByteArray>(Contact::Uid::name); 111 index.addProperty<QByteArray>(Contact::Uid::name);
138} 112}
139 113
140void TypeImplementation<Contact>::configure(ReadPropertyMapper &propertyMapper) 114void TypeImplementation<Contact>::configure(PropertyMapper &propertyMapper)
141{ 115{
142 propertyMapper.addMapping<Contact::Uid, Buffer>(&Buffer::uid); 116 SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Uid, uid);
143 propertyMapper.addMapping<Contact::Fn, Buffer>(&Buffer::fn); 117 SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Fn, fn);
144 propertyMapper.addMapping<Contact::Emails, Buffer>(&Buffer::emails); 118 SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Emails, emails);
145 propertyMapper.addMapping<Contact::Vcard, Buffer>(&Buffer::vcard); 119 SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Vcard, vcard);
146 propertyMapper.addMapping<Contact::Addressbook, Buffer>(&Buffer::addressbook); 120 SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Addressbook, addressbook);
147 propertyMapper.addMapping<Contact::Firstname, Buffer>(&Buffer::firstname); 121 SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Firstname, firstname);
148 propertyMapper.addMapping<Contact::Lastname, Buffer>(&Buffer::lastname); 122 SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Lastname, lastname);
149}
150
151void TypeImplementation<Contact>::configure(WritePropertyMapper &propertyMapper)
152{
153 propertyMapper.addMapping<Contact::Uid, BufferBuilder>(&BufferBuilder::add_uid);
154 propertyMapper.addMapping<Contact::Fn, BufferBuilder>(&BufferBuilder::add_fn);
155 propertyMapper.addMapping<Contact::Emails, BufferBuilder>(&BufferBuilder::add_emails);
156 propertyMapper.addMapping<Contact::Vcard, BufferBuilder>(&BufferBuilder::add_vcard);
157 propertyMapper.addMapping<Contact::Addressbook, BufferBuilder>(&BufferBuilder::add_addressbook);
158 propertyMapper.addMapping<Contact::Firstname, BufferBuilder>(&BufferBuilder::add_firstname);
159 propertyMapper.addMapping<Contact::Lastname, BufferBuilder>(&BufferBuilder::add_lastname);
160} 123}
161 124
162void TypeImplementation<Contact>::configure(IndexPropertyMapper &) 125void TypeImplementation<Contact>::configure(IndexPropertyMapper &)
@@ -171,16 +134,10 @@ void TypeImplementation<Addressbook>::configure(TypeIndex &index)
171 index.addProperty<QString>(Addressbook::Name::name); 134 index.addProperty<QString>(Addressbook::Name::name);
172} 135}
173 136
174void TypeImplementation<Addressbook>::configure(ReadPropertyMapper &propertyMapper) 137void TypeImplementation<Addressbook>::configure(PropertyMapper &propertyMapper)
175{ 138{
176 propertyMapper.addMapping<Addressbook::Parent, Buffer>(&Buffer::parent); 139 SINK_REGISTER_SERIALIZER(propertyMapper, Addressbook, Parent, parent);
177 propertyMapper.addMapping<Addressbook::Name, Buffer>(&Buffer::name); 140 SINK_REGISTER_SERIALIZER(propertyMapper, Addressbook, Name, name);
178}
179
180void TypeImplementation<Addressbook>::configure(WritePropertyMapper &propertyMapper)
181{
182 propertyMapper.addMapping<Addressbook::Parent, BufferBuilder>(&BufferBuilder::add_parent);
183 propertyMapper.addMapping<Addressbook::Name, BufferBuilder>(&BufferBuilder::add_name);
184} 141}
185 142
186void TypeImplementation<Addressbook>::configure(IndexPropertyMapper &) 143void TypeImplementation<Addressbook>::configure(IndexPropertyMapper &)
@@ -194,20 +151,12 @@ void TypeImplementation<Event>::configure(TypeIndex &index)
194 index.addProperty<QByteArray>(Event::Uid::name); 151 index.addProperty<QByteArray>(Event::Uid::name);
195} 152}
196 153
197void TypeImplementation<Event>::configure(ReadPropertyMapper &propertyMapper) 154void TypeImplementation<Event>::configure(PropertyMapper &propertyMapper)
198{
199 propertyMapper.addMapping<Event::Summary, Buffer>(&Buffer::summary);
200 propertyMapper.addMapping<Event::Description, Buffer>(&Buffer::description);
201 propertyMapper.addMapping<Event::Uid, Buffer>(&Buffer::uid);
202 propertyMapper.addMapping<Event::Attachment, Buffer>(&Buffer::attachment);
203}
204
205void TypeImplementation<Event>::configure(WritePropertyMapper &propertyMapper)
206{ 155{
207 propertyMapper.addMapping<Event::Summary, BufferBuilder>(&BufferBuilder::add_summary); 156 SINK_REGISTER_SERIALIZER(propertyMapper, Event, Summary, summary);
208 propertyMapper.addMapping<Event::Description, BufferBuilder>(&BufferBuilder::add_description); 157 SINK_REGISTER_SERIALIZER(propertyMapper, Event, Description, description);
209 propertyMapper.addMapping<Event::Uid, BufferBuilder>(&BufferBuilder::add_uid); 158 SINK_REGISTER_SERIALIZER(propertyMapper, Event, Uid, uid);
210 propertyMapper.addMapping<Event::Attachment, BufferBuilder>(&BufferBuilder::add_attachment); 159 SINK_REGISTER_SERIALIZER(propertyMapper, Event, Attachment, attachment);
211} 160}
212 161
213void TypeImplementation<Event>::configure(IndexPropertyMapper &) 162void TypeImplementation<Event>::configure(IndexPropertyMapper &)
diff --git a/common/domain/typeimplementations.h b/common/domain/typeimplementations.h
index 8acea58..7e4608c 100644
--- a/common/domain/typeimplementations.h
+++ b/common/domain/typeimplementations.h
@@ -26,8 +26,7 @@
26#include "contact_generated.h" 26#include "contact_generated.h"
27#include "addressbook_generated.h" 27#include "addressbook_generated.h"
28 28
29class ReadPropertyMapper; 29class PropertyMapper;
30class WritePropertyMapper;
31class IndexPropertyMapper; 30class IndexPropertyMapper;
32 31
33class TypeIndex; 32class TypeIndex;
@@ -46,8 +45,7 @@ public:
46 typedef Sink::ApplicationDomain::Buffer::Mail Buffer; 45 typedef Sink::ApplicationDomain::Buffer::Mail Buffer;
47 typedef Sink::ApplicationDomain::Buffer::MailBuilder BufferBuilder; 46 typedef Sink::ApplicationDomain::Buffer::MailBuilder BufferBuilder;
48 static void configure(TypeIndex &index); 47 static void configure(TypeIndex &index);
49 static void configure(ReadPropertyMapper &propertyMapper); 48 static void configure(PropertyMapper &propertyMapper);
50 static void configure(WritePropertyMapper &propertyMapper);
51 static void configure(IndexPropertyMapper &indexPropertyMapper); 49 static void configure(IndexPropertyMapper &indexPropertyMapper);
52}; 50};
53 51
@@ -57,8 +55,7 @@ public:
57 typedef Sink::ApplicationDomain::Buffer::Folder Buffer; 55 typedef Sink::ApplicationDomain::Buffer::Folder Buffer;
58 typedef Sink::ApplicationDomain::Buffer::FolderBuilder BufferBuilder; 56 typedef Sink::ApplicationDomain::Buffer::FolderBuilder BufferBuilder;
59 static void configure(TypeIndex &); 57 static void configure(TypeIndex &);
60 static void configure(ReadPropertyMapper &); 58 static void configure(PropertyMapper &);
61 static void configure(WritePropertyMapper &);
62 static void configure(IndexPropertyMapper &indexPropertyMapper); 59 static void configure(IndexPropertyMapper &indexPropertyMapper);
63}; 60};
64 61
@@ -68,8 +65,7 @@ public:
68 typedef Sink::ApplicationDomain::Buffer::Contact Buffer; 65 typedef Sink::ApplicationDomain::Buffer::Contact Buffer;
69 typedef Sink::ApplicationDomain::Buffer::ContactBuilder BufferBuilder; 66 typedef Sink::ApplicationDomain::Buffer::ContactBuilder BufferBuilder;
70 static void configure(TypeIndex &); 67 static void configure(TypeIndex &);
71 static void configure(ReadPropertyMapper &); 68 static void configure(PropertyMapper &);
72 static void configure(WritePropertyMapper &);
73 static void configure(IndexPropertyMapper &indexPropertyMapper); 69 static void configure(IndexPropertyMapper &indexPropertyMapper);
74}; 70};
75 71
@@ -79,8 +75,7 @@ public:
79 typedef Sink::ApplicationDomain::Buffer::Addressbook Buffer; 75 typedef Sink::ApplicationDomain::Buffer::Addressbook Buffer;
80 typedef Sink::ApplicationDomain::Buffer::AddressbookBuilder BufferBuilder; 76 typedef Sink::ApplicationDomain::Buffer::AddressbookBuilder BufferBuilder;
81 static void configure(TypeIndex &); 77 static void configure(TypeIndex &);
82 static void configure(ReadPropertyMapper &); 78 static void configure(PropertyMapper &);
83 static void configure(WritePropertyMapper &);
84 static void configure(IndexPropertyMapper &indexPropertyMapper); 79 static void configure(IndexPropertyMapper &indexPropertyMapper);
85}; 80};
86 81
@@ -90,8 +85,7 @@ public:
90 typedef Sink::ApplicationDomain::Buffer::Event Buffer; 85 typedef Sink::ApplicationDomain::Buffer::Event Buffer;
91 typedef Sink::ApplicationDomain::Buffer::EventBuilder BufferBuilder; 86 typedef Sink::ApplicationDomain::Buffer::EventBuilder BufferBuilder;
92 static void configure(TypeIndex &); 87 static void configure(TypeIndex &);
93 static void configure(ReadPropertyMapper &); 88 static void configure(PropertyMapper &);
94 static void configure(WritePropertyMapper &);
95 static void configure(IndexPropertyMapper &indexPropertyMapper); 89 static void configure(IndexPropertyMapper &indexPropertyMapper);
96}; 90};
97 91