summaryrefslogtreecommitdiffstats
path: root/common/storage
diff options
context:
space:
mode:
Diffstat (limited to 'common/storage')
-rw-r--r--common/storage/key.cpp76
-rw-r--r--common/storage/key.h18
2 files changed, 90 insertions, 4 deletions
diff --git a/common/storage/key.cpp b/common/storage/key.cpp
index cfeb016..215e155 100644
--- a/common/storage/key.cpp
+++ b/common/storage/key.cpp
@@ -84,6 +84,27 @@ bool Identifier::isNull() const
84 return uid.isNull(); 84 return uid.isNull();
85} 85}
86 86
87bool Identifier::isValidInternal(const QByteArray &bytes)
88{
89 return !QUuid::fromRfc4122(bytes).isNull();
90}
91
92bool Identifier::isValidDisplay(const QByteArray &bytes)
93{
94 return !QUuid(bytes).isNull();
95}
96
97bool Identifier::isValid(const QByteArray &bytes)
98{
99 switch (bytes.size()) {
100 case Identifier::INTERNAL_REPR_SIZE:
101 return isValidInternal(bytes);
102 case Identifier::DISPLAY_REPR_SIZE:
103 return isValidDisplay(bytes);
104 }
105 return false;
106}
107
87bool Identifier::operator==(const Identifier &other) const 108bool Identifier::operator==(const Identifier &other) const
88{ 109{
89 return uid == other.uid; 110 return uid == other.uid;
@@ -128,6 +149,27 @@ qint64 Revision::toQint64() const
128 return rev; 149 return rev;
129} 150}
130 151
152bool Revision::isValidInternal(const QByteArray &bytes)
153{
154 if (bytes.size() != Revision::INTERNAL_REPR_SIZE) {
155 return false;
156 }
157
158 bool ok;
159 bytes.toLongLong(&ok);
160 return ok;
161}
162
163bool Revision::isValidDisplay(const QByteArray &bytes)
164{
165 isValidInternal(bytes);
166}
167
168bool Revision::isValid(const QByteArray &bytes)
169{
170 isValidInternal(bytes);
171}
172
131bool Revision::operator==(const Revision &other) const 173bool Revision::operator==(const Revision &other) const
132{ 174{
133 return rev == other.rev; 175 return rev == other.rev;
@@ -191,6 +233,39 @@ bool Key::isNull() const
191 return id.isNull(); 233 return id.isNull();
192} 234}
193 235
236bool Key::isValidInternal(const QByteArray &bytes)
237{
238 if (bytes.size() != Key::INTERNAL_REPR_SIZE) {
239 return false;
240 }
241
242 auto idBytes = bytes.mid(0, Identifier::INTERNAL_REPR_SIZE);
243 auto revBytes = bytes.mid(Identifier::INTERNAL_REPR_SIZE);
244 return Identifier::isValidInternal(idBytes) && Revision::isValidInternal(revBytes);
245}
246
247bool Key::isValidDisplay(const QByteArray &bytes)
248{
249 if (bytes.size() != Key::DISPLAY_REPR_SIZE) {
250 return false;
251 }
252
253 auto idBytes = bytes.mid(0, Identifier::DISPLAY_REPR_SIZE);
254 auto revBytes = bytes.mid(Identifier::DISPLAY_REPR_SIZE);
255 return Key::isValidDisplay(idBytes) && Revision::isValidDisplay(revBytes);
256}
257
258bool Key::isValid(const QByteArray &bytes)
259{
260 switch (bytes.size()) {
261 case Key::INTERNAL_REPR_SIZE:
262 return isValidInternal(bytes);
263 case Key::DISPLAY_REPR_SIZE:
264 return isValidDisplay(bytes);
265 }
266 return false;
267}
268
194bool Key::operator==(const Key &other) const 269bool Key::operator==(const Key &other) const
195{ 270{
196 return (id == other.id) && (rev == other.rev); 271 return (id == other.id) && (rev == other.rev);
@@ -200,4 +275,3 @@ bool Key::operator!=(const Key &other) const
200{ 275{
201 return !(*this == other); 276 return !(*this == other);
202} 277}
203
diff --git a/common/storage/key.h b/common/storage/key.h
index a5b92bb..211aea7 100644
--- a/common/storage/key.h
+++ b/common/storage/key.h
@@ -48,6 +48,10 @@ public:
48 48
49 bool isNull() const; 49 bool isNull() const;
50 50
51 static bool isValidInternal(const QByteArray &);
52 static bool isValidDisplay(const QByteArray &);
53 static bool isValid(const QByteArray &);
54
51 bool operator==(const Identifier &other) const; 55 bool operator==(const Identifier &other) const;
52 bool operator!=(const Identifier &other) const; 56 bool operator!=(const Identifier &other) const;
53 57
@@ -72,6 +76,10 @@ public:
72 static Revision fromDisplayByteArray(const QByteArray &bytes); 76 static Revision fromDisplayByteArray(const QByteArray &bytes);
73 qint64 toQint64() const; 77 qint64 toQint64() const;
74 78
79 static bool isValidInternal(const QByteArray &);
80 static bool isValidDisplay(const QByteArray &);
81 static bool isValid(const QByteArray &);
82
75 bool operator==(const Revision &other) const; 83 bool operator==(const Revision &other) const;
76 bool operator!=(const Revision &other) const; 84 bool operator!=(const Revision &other) const;
77 85
@@ -99,6 +107,10 @@ public:
99 107
100 bool isNull() const; 108 bool isNull() const;
101 109
110 static bool isValidInternal(const QByteArray &);
111 static bool isValidDisplay(const QByteArray &);
112 static bool isValid(const QByteArray &);
113
102 bool operator==(const Key &other) const; 114 bool operator==(const Key &other) const;
103 bool operator!=(const Key &other) const; 115 bool operator!=(const Key &other) const;
104 116
@@ -110,6 +122,6 @@ private:
110} // namespace Storage 122} // namespace Storage
111} // namespace Sink 123} // namespace Sink
112 124
113SINK_EXPORT QDebug& operator<<(QDebug &dbg, const Sink::Storage::Identifier &); 125SINK_EXPORT QDebug &operator<<(QDebug &dbg, const Sink::Storage::Identifier &);
114SINK_EXPORT QDebug& operator<<(QDebug &dbg, const Sink::Storage::Revision &); 126SINK_EXPORT QDebug &operator<<(QDebug &dbg, const Sink::Storage::Revision &);
115SINK_EXPORT QDebug& operator<<(QDebug &dbg, const Sink::Storage::Key &); 127SINK_EXPORT QDebug &operator<<(QDebug &dbg, const Sink::Storage::Key &);