diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-11-06 10:12:24 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-11-06 10:12:24 +0100 |
commit | e511841292d241fb9175a712184900ae69ed8685 (patch) | |
tree | 0fea577b192a61e64618049a9e7306c7a1d5177e /common/query.cpp | |
parent | c04755a772cbc6b2cf3a80e9c3c17b718e153c55 (diff) | |
download | sink-e511841292d241fb9175a712184900ae69ed8685.tar.gz sink-e511841292d241fb9175a712184900ae69ed8685.zip |
Query serialization.
Diffstat (limited to 'common/query.cpp')
-rw-r--r-- | common/query.cpp | 82 |
1 files changed, 78 insertions, 4 deletions
diff --git a/common/query.cpp b/common/query.cpp index a43ef6c..67b74cc 100644 --- a/common/query.cpp +++ b/common/query.cpp | |||
@@ -19,6 +19,9 @@ | |||
19 | */ | 19 | */ |
20 | #include "query.h" | 20 | #include "query.h" |
21 | 21 | ||
22 | #include <QList> | ||
23 | #include <QDataStream> | ||
24 | |||
22 | using namespace Sink; | 25 | using namespace Sink; |
23 | 26 | ||
24 | QDebug operator<<(QDebug dbg, const Sink::Query::Comparator &c) | 27 | QDebug operator<<(QDebug dbg, const Sink::Query::Comparator &c) |
@@ -34,19 +37,85 @@ QDebug operator<<(QDebug dbg, const Sink::Query::Comparator &c) | |||
34 | return dbg.space(); | 37 | return dbg.space(); |
35 | } | 38 | } |
36 | 39 | ||
37 | Query::Comparator::Comparator() : comparator(Invalid) | 40 | QDataStream & operator<< (QDataStream &stream, const Sink::QueryBase::Comparator &comparator) |
41 | { | ||
42 | stream << comparator.comparator; | ||
43 | stream << comparator.value; | ||
44 | return stream; | ||
45 | } | ||
46 | |||
47 | QDataStream & operator>> (QDataStream &stream, Sink::QueryBase::Comparator &comparator) | ||
48 | { | ||
49 | int c; | ||
50 | stream >> c; | ||
51 | comparator.comparator = static_cast<Sink::QueryBase::Comparator::Comparators>(c); | ||
52 | stream >> comparator.value; | ||
53 | return stream; | ||
54 | } | ||
55 | |||
56 | QDataStream & operator<< (QDataStream &stream, const Sink::QueryBase::Filter &filter) | ||
57 | { | ||
58 | stream << filter.ids; | ||
59 | stream << filter.propertyFilter; | ||
60 | return stream; | ||
61 | } | ||
62 | |||
63 | QDataStream & operator>> (QDataStream &stream, Sink::QueryBase::Filter &filter) | ||
64 | { | ||
65 | stream >> filter.ids; | ||
66 | stream >> filter.propertyFilter; | ||
67 | return stream; | ||
68 | } | ||
69 | |||
70 | QDataStream & operator<< (QDataStream &stream, const Sink::QueryBase &query) | ||
71 | { | ||
72 | stream << query.type(); | ||
73 | stream << query.sortProperty(); | ||
74 | stream << query.getFilter(); | ||
75 | return stream; | ||
76 | } | ||
77 | |||
78 | QDataStream & operator>> (QDataStream &stream, Sink::QueryBase &query) | ||
79 | { | ||
80 | QByteArray type; | ||
81 | stream >> type; | ||
82 | query.setType(type); | ||
83 | QByteArray sortProperty; | ||
84 | stream >> sortProperty; | ||
85 | query.setSortProperty(sortProperty); | ||
86 | Sink::QueryBase::Filter filter; | ||
87 | stream >> filter; | ||
88 | query.setFilter(filter); | ||
89 | return stream; | ||
90 | } | ||
91 | |||
92 | bool QueryBase::Filter::operator==(const QueryBase::Filter &other) const | ||
93 | { | ||
94 | auto ret = ids == other.ids && propertyFilter == other.propertyFilter; | ||
95 | return ret; | ||
96 | } | ||
97 | |||
98 | bool QueryBase::operator==(const QueryBase &other) const | ||
99 | { | ||
100 | auto ret = mType == other.mType | ||
101 | && mSortProperty == other.mSortProperty | ||
102 | && mBaseFilterStage == other.mBaseFilterStage; | ||
103 | return ret; | ||
104 | } | ||
105 | |||
106 | QueryBase::Comparator::Comparator() : comparator(Invalid) | ||
38 | { | 107 | { |
39 | } | 108 | } |
40 | 109 | ||
41 | Query::Comparator::Comparator(const QVariant &v) : value(v), comparator(Equals) | 110 | QueryBase::Comparator::Comparator(const QVariant &v) : value(v), comparator(Equals) |
42 | { | 111 | { |
43 | } | 112 | } |
44 | 113 | ||
45 | Query::Comparator::Comparator(const QVariant &v, Comparators c) : value(v), comparator(c) | 114 | QueryBase::Comparator::Comparator(const QVariant &v, Comparators c) : value(v), comparator(c) |
46 | { | 115 | { |
47 | } | 116 | } |
48 | 117 | ||
49 | bool Query::Comparator::matches(const QVariant &v) const | 118 | bool QueryBase::Comparator::matches(const QVariant &v) const |
50 | { | 119 | { |
51 | switch(comparator) { | 120 | switch(comparator) { |
52 | case Equals: | 121 | case Equals: |
@@ -73,3 +142,8 @@ bool Query::Comparator::matches(const QVariant &v) const | |||
73 | } | 142 | } |
74 | return false; | 143 | return false; |
75 | } | 144 | } |
145 | |||
146 | bool Query::Comparator::operator==(const Query::Comparator &other) const | ||
147 | { | ||
148 | return value == other.value && comparator == other.comparator; | ||
149 | } | ||