From 7748c2a5c1cc29a8c69ea051174e31b02af4a208 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 22 Feb 2018 14:55:16 +0100 Subject: Some helper functions to avoid hardcoding collected property names --- common/domain/applicationdomaintype.cpp | 11 +++++++++++ common/domain/applicationdomaintype.h | 8 ++++++++ common/query.h | 7 +++++++ common/standardqueries.h | 6 +++--- 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/common/domain/applicationdomaintype.cpp b/common/domain/applicationdomaintype.cpp index 2a7f948..ff2990d 100644 --- a/common/domain/applicationdomaintype.cpp +++ b/common/domain/applicationdomaintype.cpp @@ -212,6 +212,12 @@ QVariant ApplicationDomainType::getProperty(const QByteArray &key) const return mAdaptor->getProperty(key); } +QVariantList ApplicationDomainType::getCollectedProperty(const QByteArray &key) const +{ + Q_ASSERT(mAdaptor); + return mAdaptor->getProperty(key + "Collected").toList(); +} + void ApplicationDomainType::setProperty(const QByteArray &key, const QVariant &value) { Q_ASSERT(mAdaptor); @@ -283,6 +289,11 @@ QVector &ApplicationDomainType::aggregatedIds() return mAggreatedIds; } +int ApplicationDomainType::count() const +{ + return qMax(mAggreatedIds.size(), 1); +} + SinkResource::SinkResource(const QByteArray &identifier) : ApplicationDomainType("", identifier, 0, QSharedPointer(new MemoryBufferAdaptor())) { diff --git a/common/domain/applicationdomaintype.h b/common/domain/applicationdomaintype.h index 986dd6d..27a7954 100644 --- a/common/domain/applicationdomaintype.h +++ b/common/domain/applicationdomaintype.h @@ -257,6 +257,13 @@ public: bool hasProperty(const QByteArray &key) const; QVariant getProperty(const QByteArray &key) const; + QVariantList getCollectedProperty(const QByteArray &key) const; + + template + QVariantList getCollectedProperty() const + { + return getCollectedProperty(Property::name); + } /** * Set a property and record a changed property @@ -281,6 +288,7 @@ public: bool isAggregate() const; QVector aggregatedIds() const; QVector &aggregatedIds(); + int count() const; private: friend QDebug operator<<(QDebug, const ApplicationDomainType &); diff --git a/common/query.h b/common/query.h index fd79105..9030d7c 100644 --- a/common/query.h +++ b/common/query.h @@ -234,6 +234,13 @@ public: return *this; } + template + Reduce &collect() + { + aggregators << Aggregator(QByteArray{T::name} + QByteArray{"Collected"}, Aggregator::Collect, T::name); + return *this; + } + //Reduce on property QByteArray property; Selector selector; diff --git a/common/standardqueries.h b/common/standardqueries.h index 70e03cb..10f66ae 100644 --- a/common/standardqueries.h +++ b/common/standardqueries.h @@ -53,9 +53,9 @@ namespace StandardQueries { query.filter(folder); query.sort(); query.reduce(Query::Reduce::Selector::max()) - .count("count") - .collect("unreadCollected") - .collect("importantCollected"); + .count() + .collect() + .collect(); return query; } -- cgit v1.2.3