diff options
Diffstat (limited to 'common/domain/typeimplementations.cpp')
-rw-r--r-- | common/domain/typeimplementations.cpp | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/common/domain/typeimplementations.cpp b/common/domain/typeimplementations.cpp new file mode 100644 index 0000000..38422f4 --- /dev/null +++ b/common/domain/typeimplementations.cpp | |||
@@ -0,0 +1,218 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2015 Christian Mollekopf <chrigi_1@fastmail.fm> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the | ||
16 | * Free Software Foundation, Inc., | ||
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
18 | */ | ||
19 | #include "typeimplementations.h" | ||
20 | |||
21 | #include <QVector> | ||
22 | #include <QByteArray> | ||
23 | #include <QString> | ||
24 | |||
25 | #include "../propertymapper.h" | ||
26 | #include "../typeindex.h" | ||
27 | #include "entitybuffer.h" | ||
28 | #include "entity_generated.h" | ||
29 | #include "mail/threadindexer.h" | ||
30 | #include "domainadaptor.h" | ||
31 | |||
32 | #include "mail_generated.h" | ||
33 | #include "folder_generated.h" | ||
34 | #include "event_generated.h" | ||
35 | #include "contact_generated.h" | ||
36 | #include "addressbook_generated.h" | ||
37 | |||
38 | using namespace Sink; | ||
39 | using namespace Sink::ApplicationDomain; | ||
40 | |||
41 | void TypeImplementation<Mail>::configure(TypeIndex &index) | ||
42 | { | ||
43 | // index.addProperty<Mail::Sender>(); | ||
44 | /* index.addProperty<QByteArray>(Mail::SenderName::name); */ | ||
45 | /* index->addProperty<QString>(Mail::Subject::name); */ | ||
46 | /* index->addFulltextProperty<QString>(Mail::Subject::name); */ | ||
47 | index.addProperty<Mail::Date>(); | ||
48 | index.addProperty<Mail::Folder>(); | ||
49 | index.addPropertyWithSorting<Mail::Folder, Mail::Date>(); | ||
50 | index.addProperty<Mail::ParentMessageId>(); | ||
51 | index.addProperty<Mail::MessageId>(); | ||
52 | |||
53 | index.addSecondaryPropertyIndexer<Mail::MessageId, Mail::ThreadId, ThreadIndexer>(); | ||
54 | index.addSecondaryProperty<Mail::MessageId, Mail::ThreadId>(); | ||
55 | index.addSecondaryProperty<Mail::ThreadId, Mail::MessageId>(); | ||
56 | } | ||
57 | |||
58 | void TypeImplementation<Mail>::configure(IndexPropertyMapper &indexPropertyMapper) | ||
59 | { | ||
60 | indexPropertyMapper.addIndexLookupProperty<Mail::ThreadId>([](TypeIndex &index, const ApplicationDomain::BufferAdaptor &entity) { | ||
61 | auto messageId = entity.getProperty(Mail::MessageId::name); | ||
62 | auto thread = index.secondaryLookup<Mail::MessageId, Mail::ThreadId>(messageId); | ||
63 | if (!thread.isEmpty()) { | ||
64 | return thread.first(); | ||
65 | } | ||
66 | return QByteArray{}; | ||
67 | }); | ||
68 | } | ||
69 | |||
70 | void TypeImplementation<Mail>::configure(ReadPropertyMapper<Buffer> &propertyMapper) | ||
71 | { | ||
72 | propertyMapper.addMapping<Mail::Sender, Buffer>(&Buffer::sender); | ||
73 | propertyMapper.addMapping<Mail::To, Buffer>(&Buffer::to); | ||
74 | propertyMapper.addMapping<Mail::Cc, Buffer>(&Buffer::cc); | ||
75 | propertyMapper.addMapping<Mail::Bcc, Buffer>(&Buffer::bcc); | ||
76 | propertyMapper.addMapping<Mail::Subject, Buffer>(&Buffer::subject); | ||
77 | propertyMapper.addMapping<Mail::Date, Buffer>(&Buffer::date); | ||
78 | propertyMapper.addMapping<Mail::Unread, Buffer>(&Buffer::unread); | ||
79 | propertyMapper.addMapping<Mail::Important, Buffer>(&Buffer::important); | ||
80 | propertyMapper.addMapping<Mail::Folder, Buffer>(&Buffer::folder); | ||
81 | propertyMapper.addMapping<Mail::MimeMessage, Buffer>(&Buffer::mimeMessage); | ||
82 | propertyMapper.addMapping<Mail::FullPayloadAvailable, Buffer>(&Buffer::fullPayloadAvailable); | ||
83 | propertyMapper.addMapping<Mail::Draft, Buffer>(&Buffer::draft); | ||
84 | propertyMapper.addMapping<Mail::Trash, Buffer>(&Buffer::trash); | ||
85 | propertyMapper.addMapping<Mail::Sent, Buffer>(&Buffer::sent); | ||
86 | propertyMapper.addMapping<Mail::MessageId, Buffer>(&Buffer::messageId); | ||
87 | propertyMapper.addMapping<Mail::ParentMessageId, Buffer>(&Buffer::parentMessageId); | ||
88 | } | ||
89 | |||
90 | void TypeImplementation<Mail>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | ||
91 | { | ||
92 | propertyMapper.addMapping<Mail::Sender>(&BufferBuilder::add_sender); | ||
93 | propertyMapper.addMapping<Mail::To>(&BufferBuilder::add_to); | ||
94 | propertyMapper.addMapping<Mail::Cc>(&BufferBuilder::add_cc); | ||
95 | propertyMapper.addMapping<Mail::Bcc>(&BufferBuilder::add_bcc); | ||
96 | propertyMapper.addMapping<Mail::Subject>(&BufferBuilder::add_subject); | ||
97 | propertyMapper.addMapping<Mail::Date>(&BufferBuilder::add_date); | ||
98 | propertyMapper.addMapping<Mail::Unread>(&BufferBuilder::add_unread); | ||
99 | propertyMapper.addMapping<Mail::Important>(&BufferBuilder::add_important); | ||
100 | propertyMapper.addMapping<Mail::Folder>(&BufferBuilder::add_folder); | ||
101 | propertyMapper.addMapping<Mail::MimeMessage>(&BufferBuilder::add_mimeMessage); | ||
102 | propertyMapper.addMapping<Mail::FullPayloadAvailable>(&BufferBuilder::add_fullPayloadAvailable); | ||
103 | propertyMapper.addMapping<Mail::Draft>(&BufferBuilder::add_draft); | ||
104 | propertyMapper.addMapping<Mail::Trash>(&BufferBuilder::add_trash); | ||
105 | propertyMapper.addMapping<Mail::Sent>(&BufferBuilder::add_sent); | ||
106 | propertyMapper.addMapping<Mail::MessageId>(&BufferBuilder::add_messageId); | ||
107 | propertyMapper.addMapping<Mail::ParentMessageId>(&BufferBuilder::add_parentMessageId); | ||
108 | } | ||
109 | |||
110 | |||
111 | void TypeImplementation<Folder>::configure(TypeIndex &index) | ||
112 | { | ||
113 | index.addProperty<QByteArray>(Folder::Parent::name); | ||
114 | index.addProperty<QString>(Folder::Name::name); | ||
115 | } | ||
116 | |||
117 | void TypeImplementation<Folder>::configure(ReadPropertyMapper<Buffer> &propertyMapper) | ||
118 | { | ||
119 | propertyMapper.addMapping<Folder::Parent, Buffer>(&Buffer::parent); | ||
120 | propertyMapper.addMapping<Folder::Name, Buffer>(&Buffer::name); | ||
121 | propertyMapper.addMapping<Folder::Icon, Buffer>(&Buffer::icon); | ||
122 | propertyMapper.addMapping<Folder::SpecialPurpose, Buffer>(&Buffer::specialpurpose); | ||
123 | propertyMapper.addMapping<Folder::Enabled, Buffer>(&Buffer::enabled); | ||
124 | } | ||
125 | |||
126 | void TypeImplementation<Folder>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | ||
127 | { | ||
128 | propertyMapper.addMapping<Folder::Parent>(&BufferBuilder::add_parent); | ||
129 | propertyMapper.addMapping<Folder::Name>(&BufferBuilder::add_name); | ||
130 | propertyMapper.addMapping<Folder::Icon>(&BufferBuilder::add_icon); | ||
131 | propertyMapper.addMapping<Folder::SpecialPurpose>(&BufferBuilder::add_specialpurpose); | ||
132 | propertyMapper.addMapping<Folder::Enabled>(&BufferBuilder::add_enabled); | ||
133 | } | ||
134 | |||
135 | void TypeImplementation<Folder>::configure(IndexPropertyMapper &) | ||
136 | { | ||
137 | |||
138 | } | ||
139 | |||
140 | |||
141 | void TypeImplementation<Contact>::configure(TypeIndex &index) | ||
142 | { | ||
143 | index.addProperty<QByteArray>(Contact::Uid::name); | ||
144 | } | ||
145 | |||
146 | void TypeImplementation<Contact>::configure(ReadPropertyMapper<Buffer> &propertyMapper) | ||
147 | { | ||
148 | propertyMapper.addMapping<Contact::Uid, Buffer>(&Buffer::uid); | ||
149 | propertyMapper.addMapping<Contact::Fn, Buffer>(&Buffer::fn); | ||
150 | propertyMapper.addMapping<Contact::Emails, Buffer>(&Buffer::emails); | ||
151 | propertyMapper.addMapping<Contact::Vcard, Buffer>(&Buffer::vcard); | ||
152 | propertyMapper.addMapping<Contact::Addressbook, Buffer>(&Buffer::addressbook); | ||
153 | } | ||
154 | |||
155 | void TypeImplementation<Contact>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | ||
156 | { | ||
157 | propertyMapper.addMapping<Contact::Uid>(&BufferBuilder::add_uid); | ||
158 | propertyMapper.addMapping<Contact::Fn>(&BufferBuilder::add_fn); | ||
159 | propertyMapper.addMapping<Contact::Emails>(&BufferBuilder::add_emails); | ||
160 | propertyMapper.addMapping<Contact::Vcard>(&BufferBuilder::add_vcard); | ||
161 | propertyMapper.addMapping<Contact::Addressbook>(&BufferBuilder::add_addressbook); | ||
162 | } | ||
163 | |||
164 | void TypeImplementation<Contact>::configure(IndexPropertyMapper &) | ||
165 | { | ||
166 | |||
167 | } | ||
168 | |||
169 | |||
170 | void TypeImplementation<Addressbook>::configure(TypeIndex &index) | ||
171 | { | ||
172 | index.addProperty<QByteArray>(Addressbook::Parent::name); | ||
173 | index.addProperty<QString>(Addressbook::Name::name); | ||
174 | } | ||
175 | |||
176 | void TypeImplementation<Addressbook>::configure(ReadPropertyMapper<Buffer> &propertyMapper) | ||
177 | { | ||
178 | propertyMapper.addMapping<Addressbook::Parent, Buffer>(&Buffer::parent); | ||
179 | propertyMapper.addMapping<Addressbook::Name, Buffer>(&Buffer::name); | ||
180 | } | ||
181 | |||
182 | void TypeImplementation<Addressbook>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | ||
183 | { | ||
184 | propertyMapper.addMapping<Addressbook::Parent>(&BufferBuilder::add_parent); | ||
185 | propertyMapper.addMapping<Addressbook::Name>(&BufferBuilder::add_name); | ||
186 | } | ||
187 | |||
188 | void TypeImplementation<Addressbook>::configure(IndexPropertyMapper &) | ||
189 | { | ||
190 | |||
191 | } | ||
192 | |||
193 | |||
194 | void TypeImplementation<Event>::configure(TypeIndex &index) | ||
195 | { | ||
196 | index.addProperty<QByteArray>(Event::Uid::name); | ||
197 | } | ||
198 | |||
199 | void TypeImplementation<Event>::configure(ReadPropertyMapper<Buffer> &propertyMapper) | ||
200 | { | ||
201 | propertyMapper.addMapping<Event::Summary, Buffer>(&Buffer::summary); | ||
202 | propertyMapper.addMapping<Event::Description, Buffer>(&Buffer::description); | ||
203 | propertyMapper.addMapping<Event::Uid, Buffer>(&Buffer::uid); | ||
204 | propertyMapper.addMapping<Event::Attachment, Buffer>(&Buffer::attachment); | ||
205 | } | ||
206 | |||
207 | void TypeImplementation<Event>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | ||
208 | { | ||
209 | propertyMapper.addMapping<Event::Summary>(&BufferBuilder::add_summary); | ||
210 | propertyMapper.addMapping<Event::Description>(&BufferBuilder::add_description); | ||
211 | propertyMapper.addMapping<Event::Uid>(&BufferBuilder::add_uid); | ||
212 | propertyMapper.addMapping<Event::Attachment>(&BufferBuilder::add_attachment); | ||
213 | } | ||
214 | |||
215 | void TypeImplementation<Event>::configure(IndexPropertyMapper &) | ||
216 | { | ||
217 | |||
218 | } | ||