summaryrefslogtreecommitdiffstats
path: root/common/domain/mail.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/domain/mail.cpp')
-rw-r--r--common/domain/mail.cpp94
1 files changed, 33 insertions, 61 deletions
diff --git a/common/domain/mail.cpp b/common/domain/mail.cpp
index 4b33f06..8abe259 100644
--- a/common/domain/mail.cpp
+++ b/common/domain/mail.cpp
@@ -21,32 +21,19 @@
21#include <QVector> 21#include <QVector>
22#include <QByteArray> 22#include <QByteArray>
23#include <QString> 23#include <QString>
24#include <QMutex>
25#include <QMutexLocker>
26 24
27#include "../resultset.h"
28#include "../index.h"
29#include "../storage.h"
30#include "../log.h"
31#include "../propertymapper.h" 25#include "../propertymapper.h"
32#include "../query.h"
33#include "../definitions.h"
34#include "../typeindex.h" 26#include "../typeindex.h"
35#include "entitybuffer.h" 27#include "entitybuffer.h"
36#include "datastorequery.h"
37#include "entity_generated.h" 28#include "entity_generated.h"
38#include "mail/threadindexer.h" 29#include "mail/threadindexer.h"
39 30
40#include "mail_generated.h" 31#include "mail_generated.h"
41 32
42SINK_DEBUG_AREA("mail");
43
44static QMutex sMutex;
45
46using namespace Sink; 33using namespace Sink;
47using namespace Sink::ApplicationDomain; 34using namespace Sink::ApplicationDomain;
48 35
49void TypeImplementation<Mail>::configureIndex(TypeIndex &index) 36void TypeImplementation<Mail>::configure(TypeIndex &index)
50{ 37{
51 index.addProperty<QByteArray>(Mail::Uid::name); 38 index.addProperty<QByteArray>(Mail::Uid::name);
52 index.addProperty<QByteArray>(Mail::Sender::name); 39 index.addProperty<QByteArray>(Mail::Sender::name);
@@ -66,56 +53,41 @@ void TypeImplementation<Mail>::configureIndex(TypeIndex &index)
66 index.addSecondaryProperty<Mail::ThreadId, Mail::MessageId>(); 53 index.addSecondaryProperty<Mail::ThreadId, Mail::MessageId>();
67} 54}
68 55
69static TypeIndex &getIndex()
70{
71 QMutexLocker locker(&sMutex);
72 static TypeIndex *index = 0;
73 if (!index) {
74 index = new TypeIndex("mail");
75 TypeImplementation<Mail>::configureIndex(*index);
76 }
77 return *index;
78}
79 56
80QSharedPointer<ReadPropertyMapper<TypeImplementation<Mail>::Buffer> > TypeImplementation<Mail>::initializeReadPropertyMapper() 57void TypeImplementation<Mail>::configure(ReadPropertyMapper<Buffer> &propertyMapper)
81{ 58{
82 auto propertyMapper = QSharedPointer<ReadPropertyMapper<Buffer> >::create();
83 propertyMapper->addMapping<Mail::Uid, Buffer>(&Buffer::uid);
84 propertyMapper->addMapping<Mail::Sender, Buffer>(&Buffer::sender);
85 propertyMapper->addMapping<Mail::SenderName, Buffer>(&Buffer::senderName);
86 propertyMapper->addMapping<Mail::Subject, Buffer>(&Buffer::subject);
87 propertyMapper->addMapping<Mail::Date, Buffer>(&Buffer::date);
88 propertyMapper->addMapping<Mail::Unread, Buffer>(&Buffer::unread);
89 propertyMapper->addMapping<Mail::Important, Buffer>(&Buffer::important);
90 propertyMapper->addMapping<Mail::Folder, Buffer>(&Buffer::folder);
91 propertyMapper->addMapping<Mail::MimeMessage, Buffer>(&Buffer::mimeMessage);
92 propertyMapper->addMapping<Mail::Draft, Buffer>(&Buffer::draft);
93 propertyMapper->addMapping<Mail::Trash, Buffer>(&Buffer::trash);
94 propertyMapper->addMapping<Mail::Sent, Buffer>(&Buffer::sent);
95 propertyMapper->addMapping<Mail::MessageId, Buffer>(&Buffer::messageId);
96 propertyMapper->addMapping<Mail::ParentMessageId, Buffer>(&Buffer::parentMessageId);
97 return propertyMapper;
98}
99 59
100QSharedPointer<WritePropertyMapper<TypeImplementation<Mail>::BufferBuilder> > TypeImplementation<Mail>::initializeWritePropertyMapper()
101{
102 auto propertyMapper = QSharedPointer<WritePropertyMapper<BufferBuilder> >::create();
103 60
104 propertyMapper->addMapping<Mail::Uid>(&BufferBuilder::add_uid); 61 propertyMapper.addMapping<Mail::Uid, Buffer>(&Buffer::uid);
105 propertyMapper->addMapping<Mail::Sender>(&BufferBuilder::add_sender); 62 propertyMapper.addMapping<Mail::Sender, Buffer>(&Buffer::sender);
106 propertyMapper->addMapping<Mail::SenderName>(&BufferBuilder::add_senderName); 63 propertyMapper.addMapping<Mail::SenderName, Buffer>(&Buffer::senderName);
107 propertyMapper->addMapping<Mail::Subject>(&BufferBuilder::add_subject); 64 propertyMapper.addMapping<Mail::Subject, Buffer>(&Buffer::subject);
108 propertyMapper->addMapping<Mail::Date>(&BufferBuilder::add_date); 65 propertyMapper.addMapping<Mail::Date, Buffer>(&Buffer::date);
109 propertyMapper->addMapping<Mail::Unread>(&BufferBuilder::add_unread); 66 propertyMapper.addMapping<Mail::Unread, Buffer>(&Buffer::unread);
110 propertyMapper->addMapping<Mail::Important>(&BufferBuilder::add_important); 67 propertyMapper.addMapping<Mail::Important, Buffer>(&Buffer::important);
111 propertyMapper->addMapping<Mail::Folder>(&BufferBuilder::add_folder); 68 propertyMapper.addMapping<Mail::Folder, Buffer>(&Buffer::folder);
112 propertyMapper->addMapping<Mail::MimeMessage>(&BufferBuilder::add_mimeMessage); 69 propertyMapper.addMapping<Mail::MimeMessage, Buffer>(&Buffer::mimeMessage);
113 propertyMapper->addMapping<Mail::Draft>(&BufferBuilder::add_draft); 70 propertyMapper.addMapping<Mail::Draft, Buffer>(&Buffer::draft);
114 propertyMapper->addMapping<Mail::Trash>(&BufferBuilder::add_trash); 71 propertyMapper.addMapping<Mail::Trash, Buffer>(&Buffer::trash);
115 propertyMapper->addMapping<Mail::Sent>(&BufferBuilder::add_sent); 72 propertyMapper.addMapping<Mail::Sent, Buffer>(&Buffer::sent);
116 propertyMapper->addMapping<Mail::MessageId>(&BufferBuilder::add_messageId); 73 propertyMapper.addMapping<Mail::MessageId, Buffer>(&Buffer::messageId);
117 propertyMapper->addMapping<Mail::ParentMessageId>(&BufferBuilder::add_parentMessageId); 74 propertyMapper.addMapping<Mail::ParentMessageId, Buffer>(&Buffer::parentMessageId);
118 return propertyMapper;
119} 75}
120 76
121 77void TypeImplementation<Mail>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper)
78{
79 propertyMapper.addMapping<Mail::Uid>(&BufferBuilder::add_uid);
80 propertyMapper.addMapping<Mail::Sender>(&BufferBuilder::add_sender);
81 propertyMapper.addMapping<Mail::SenderName>(&BufferBuilder::add_senderName);
82 propertyMapper.addMapping<Mail::Subject>(&BufferBuilder::add_subject);
83 propertyMapper.addMapping<Mail::Date>(&BufferBuilder::add_date);
84 propertyMapper.addMapping<Mail::Unread>(&BufferBuilder::add_unread);
85 propertyMapper.addMapping<Mail::Important>(&BufferBuilder::add_important);
86 propertyMapper.addMapping<Mail::Folder>(&BufferBuilder::add_folder);
87 propertyMapper.addMapping<Mail::MimeMessage>(&BufferBuilder::add_mimeMessage);
88 propertyMapper.addMapping<Mail::Draft>(&BufferBuilder::add_draft);
89 propertyMapper.addMapping<Mail::Trash>(&BufferBuilder::add_trash);
90 propertyMapper.addMapping<Mail::Sent>(&BufferBuilder::add_sent);
91 propertyMapper.addMapping<Mail::MessageId>(&BufferBuilder::add_messageId);
92 propertyMapper.addMapping<Mail::ParentMessageId>(&BufferBuilder::add_parentMessageId);
93}