From 21da1b751d0f55648a7c9dbe71a3cd3440a134f0 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 19 Oct 2016 15:47:39 +0200 Subject: Fixed specialpurposeprocessor --- common/specialpurposepreprocessor.cpp | 39 ++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) (limited to 'common/specialpurposepreprocessor.cpp') diff --git a/common/specialpurposepreprocessor.cpp b/common/specialpurposepreprocessor.cpp index 920f78a..b3a6bab 100644 --- a/common/specialpurposepreprocessor.cpp +++ b/common/specialpurposepreprocessor.cpp @@ -1,6 +1,7 @@ #include "specialpurposepreprocessor.h" #include "query.h" #include "applicationdomaintype.h" +#include "datastorequery.h" using namespace Sink; @@ -48,25 +49,25 @@ SpecialPurposeProcessor::SpecialPurposeProcessor(const QByteArray &resourceType, QByteArray SpecialPurposeProcessor::ensureFolder(const QByteArray &specialPurpose) { - /* if (!mSpecialPurposeFolders.contains(specialPurpose)) { */ - /* //Try to find an existing drafts folder */ - /* Sink::EntityReader reader(mResourceType, mResourceInstanceIdentifier); */ - /* reader.query(Sink::Query().filter(Query::Comparator(specialPurpose, Query::Comparator::Contains)), */ - /* [this, specialPurpose](const ApplicationDomain::Folder &f) -> bool{ */ - /* mSpecialPurposeFolders.insert(specialPurpose, f.identifier()); */ - /* return false; */ - /* }); */ - /* if (!mSpecialPurposeFolders.contains(specialPurpose)) { */ - /* SinkTrace() << "Failed to find a drafts folder, creating a new one"; */ - /* auto folder = ApplicationDomain::Folder::create(mResourceInstanceIdentifier); */ - /* folder.setSpecialPurpose(QByteArrayList() << specialPurpose); */ - /* folder.setName(sSpecialPurposeFolders.value(specialPurpose)); */ - /* folder.setIcon("folder"); */ - /* //This processes the pipeline synchronously */ - /* createEntity(folder); */ - /* mSpecialPurposeFolders.insert(specialPurpose, folder.identifier()); */ - /* } */ - /* } */ + if (!mSpecialPurposeFolders.contains(specialPurpose)) { + //Try to find an existing drafts folder + DataStoreQuery dataStoreQuery{Sink::Query().filter(Query::Comparator(specialPurpose, Query::Comparator::Contains)), ApplicationDomain::getTypeName(), entityStore()}; + auto resultSet = dataStoreQuery.execute(); + resultSet.replaySet(0, 1, [&, this](const ResultSet::Result &r) { + mSpecialPurposeFolders.insert(specialPurpose, r.entity.identifier()); + }); + + if (!mSpecialPurposeFolders.contains(specialPurpose)) { + SinkTrace() << "Failed to find a drafts folder, creating a new one"; + auto folder = ApplicationDomain::Folder::create(mResourceInstanceIdentifier); + folder.setSpecialPurpose(QByteArrayList() << specialPurpose); + folder.setName(sSpecialPurposeFolders.value(specialPurpose)); + folder.setIcon("folder"); + //This processes the pipeline synchronously + createEntity(folder); + mSpecialPurposeFolders.insert(specialPurpose, folder.identifier()); + } + } return mSpecialPurposeFolders.value(specialPurpose); } -- cgit v1.2.3