From ca5020095abfb76e63bd801e9722c07193eb05f5 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 28 Apr 2017 15:29:18 +0200 Subject: A single propertymapper for both directions --- common/domain/typeimplementations.cpp | 137 +++++++++++----------------------- 1 file changed, 43 insertions(+), 94 deletions(-) (limited to 'common/domain/typeimplementations.cpp') 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 @@ using namespace Sink; using namespace Sink::ApplicationDomain; +#define SINK_REGISTER_SERIALIZER(MAPPER, ENTITYTYPE, PROPERTY, LOWERCASEPROPERTY) \ + MAPPER.addMapping(&Sink::ApplicationDomain::Buffer::ENTITYTYPE::LOWERCASEPROPERTY, &Sink::ApplicationDomain::Buffer::ENTITYTYPE##Builder::add_##LOWERCASEPROPERTY); + + void TypeImplementation::configure(TypeIndex &index) { // index.addProperty(); @@ -61,69 +65,39 @@ void TypeImplementation::configure(IndexPropertyMapper &indexPropertyMappe }); } -void TypeImplementation::configure(ReadPropertyMapper &propertyMapper) -{ - propertyMapper.addMapping(&Buffer::sender); - propertyMapper.addMapping(&Buffer::to); - propertyMapper.addMapping(&Buffer::cc); - propertyMapper.addMapping(&Buffer::bcc); - propertyMapper.addMapping(&Buffer::subject); - propertyMapper.addMapping(&Buffer::date); - propertyMapper.addMapping(&Buffer::unread); - propertyMapper.addMapping(&Buffer::important); - propertyMapper.addMapping(&Buffer::folder); - propertyMapper.addMapping(&Buffer::mimeMessage); - propertyMapper.addMapping(&Buffer::fullPayloadAvailable); - propertyMapper.addMapping(&Buffer::draft); - propertyMapper.addMapping(&Buffer::trash); - propertyMapper.addMapping(&Buffer::sent); - propertyMapper.addMapping(&Buffer::messageId); - propertyMapper.addMapping(&Buffer::parentMessageId); -} - -void TypeImplementation::configure(WritePropertyMapper &propertyMapper) +void TypeImplementation::configure(PropertyMapper &propertyMapper) { - propertyMapper.addMapping(&BufferBuilder::add_sender); - propertyMapper.addMapping(&BufferBuilder::add_to); - propertyMapper.addMapping(&BufferBuilder::add_cc); - propertyMapper.addMapping(&BufferBuilder::add_bcc); - propertyMapper.addMapping(&BufferBuilder::add_subject); - propertyMapper.addMapping(&BufferBuilder::add_date); - propertyMapper.addMapping(&BufferBuilder::add_unread); - propertyMapper.addMapping(&BufferBuilder::add_important); - propertyMapper.addMapping(&BufferBuilder::add_folder); - propertyMapper.addMapping(&BufferBuilder::add_mimeMessage); - propertyMapper.addMapping(&BufferBuilder::add_fullPayloadAvailable); - propertyMapper.addMapping(&BufferBuilder::add_draft); - propertyMapper.addMapping(&BufferBuilder::add_trash); - propertyMapper.addMapping(&BufferBuilder::add_sent); - propertyMapper.addMapping(&BufferBuilder::add_messageId); - propertyMapper.addMapping(&BufferBuilder::add_parentMessageId); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Sender, sender); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, To, to); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Cc, cc); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Bcc, bcc); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Subject, subject); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Date, date); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Unread, unread); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Important, important); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Folder, folder); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, MimeMessage, mimeMessage); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, FullPayloadAvailable, fullPayloadAvailable); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Draft, draft); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Trash, trash); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Sent, sent); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, MessageId, messageId); + SINK_REGISTER_SERIALIZER(propertyMapper, Mail, ParentMessageId, parentMessageId); } - void TypeImplementation::configure(TypeIndex &index) { index.addProperty(Folder::Parent::name); index.addProperty(Folder::Name::name); } -void TypeImplementation::configure(ReadPropertyMapper &propertyMapper) -{ - propertyMapper.addMapping(&Buffer::parent); - propertyMapper.addMapping(&Buffer::name); - propertyMapper.addMapping(&Buffer::icon); - propertyMapper.addMapping(&Buffer::specialpurpose); - propertyMapper.addMapping(&Buffer::enabled); -} - -void TypeImplementation::configure(WritePropertyMapper &propertyMapper) +void TypeImplementation::configure(PropertyMapper &propertyMapper) { - propertyMapper.addMapping(&BufferBuilder::add_parent); - propertyMapper.addMapping(&BufferBuilder::add_name); - propertyMapper.addMapping(&BufferBuilder::add_icon); - propertyMapper.addMapping(&BufferBuilder::add_specialpurpose); - propertyMapper.addMapping(&BufferBuilder::add_enabled); + SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Parent, parent); + SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Name, name); + SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Icon, icon); + SINK_REGISTER_SERIALIZER(propertyMapper, Folder, SpecialPurpose, specialpurpose); + SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Enabled, enabled); } void TypeImplementation::configure(IndexPropertyMapper &) @@ -137,26 +111,15 @@ void TypeImplementation::configure(TypeIndex &index) index.addProperty(Contact::Uid::name); } -void TypeImplementation::configure(ReadPropertyMapper &propertyMapper) +void TypeImplementation::configure(PropertyMapper &propertyMapper) { - propertyMapper.addMapping(&Buffer::uid); - propertyMapper.addMapping(&Buffer::fn); - propertyMapper.addMapping(&Buffer::emails); - propertyMapper.addMapping(&Buffer::vcard); - propertyMapper.addMapping(&Buffer::addressbook); - propertyMapper.addMapping(&Buffer::firstname); - propertyMapper.addMapping(&Buffer::lastname); -} - -void TypeImplementation::configure(WritePropertyMapper &propertyMapper) -{ - propertyMapper.addMapping(&BufferBuilder::add_uid); - propertyMapper.addMapping(&BufferBuilder::add_fn); - propertyMapper.addMapping(&BufferBuilder::add_emails); - propertyMapper.addMapping(&BufferBuilder::add_vcard); - propertyMapper.addMapping(&BufferBuilder::add_addressbook); - propertyMapper.addMapping(&BufferBuilder::add_firstname); - propertyMapper.addMapping(&BufferBuilder::add_lastname); + SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Uid, uid); + SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Fn, fn); + SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Emails, emails); + SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Vcard, vcard); + SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Addressbook, addressbook); + SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Firstname, firstname); + SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Lastname, lastname); } void TypeImplementation::configure(IndexPropertyMapper &) @@ -171,16 +134,10 @@ void TypeImplementation::configure(TypeIndex &index) index.addProperty(Addressbook::Name::name); } -void TypeImplementation::configure(ReadPropertyMapper &propertyMapper) +void TypeImplementation::configure(PropertyMapper &propertyMapper) { - propertyMapper.addMapping(&Buffer::parent); - propertyMapper.addMapping(&Buffer::name); -} - -void TypeImplementation::configure(WritePropertyMapper &propertyMapper) -{ - propertyMapper.addMapping(&BufferBuilder::add_parent); - propertyMapper.addMapping(&BufferBuilder::add_name); + SINK_REGISTER_SERIALIZER(propertyMapper, Addressbook, Parent, parent); + SINK_REGISTER_SERIALIZER(propertyMapper, Addressbook, Name, name); } void TypeImplementation::configure(IndexPropertyMapper &) @@ -194,20 +151,12 @@ void TypeImplementation::configure(TypeIndex &index) index.addProperty(Event::Uid::name); } -void TypeImplementation::configure(ReadPropertyMapper &propertyMapper) -{ - propertyMapper.addMapping(&Buffer::summary); - propertyMapper.addMapping(&Buffer::description); - propertyMapper.addMapping(&Buffer::uid); - propertyMapper.addMapping(&Buffer::attachment); -} - -void TypeImplementation::configure(WritePropertyMapper &propertyMapper) +void TypeImplementation::configure(PropertyMapper &propertyMapper) { - propertyMapper.addMapping(&BufferBuilder::add_summary); - propertyMapper.addMapping(&BufferBuilder::add_description); - propertyMapper.addMapping(&BufferBuilder::add_uid); - propertyMapper.addMapping(&BufferBuilder::add_attachment); + SINK_REGISTER_SERIALIZER(propertyMapper, Event, Summary, summary); + SINK_REGISTER_SERIALIZER(propertyMapper, Event, Description, description); + SINK_REGISTER_SERIALIZER(propertyMapper, Event, Uid, uid); + SINK_REGISTER_SERIALIZER(propertyMapper, Event, Attachment, attachment); } void TypeImplementation::configure(IndexPropertyMapper &) -- cgit v1.2.3