summaryrefslogtreecommitdiffstats
path: root/common/entitystore.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/entitystore.h')
-rw-r--r--common/entitystore.h37
1 files changed, 7 insertions, 30 deletions
diff --git a/common/entitystore.h b/common/entitystore.h
index 24f43b1..b795b26 100644
--- a/common/entitystore.h
+++ b/common/entitystore.h
@@ -24,6 +24,7 @@
24 24
25#include "storage.h" 25#include "storage.h"
26#include "adaptorfactoryregistry.h" 26#include "adaptorfactoryregistry.h"
27#include "entityreader.h"
27 28
28namespace Sink { 29namespace Sink {
29 30
@@ -35,48 +36,24 @@ public:
35 template<typename T> 36 template<typename T>
36 T read(const QByteArray &identifier) const 37 T read(const QByteArray &identifier) const
37 { 38 {
38 auto typeName = ApplicationDomain::getTypeName<T>(); 39 EntityReader<T> reader(mResourceType, mResourceInstanceIdentifier, mTransaction);
39 auto mainDatabase = Storage::mainDatabase(mTransaction, typeName); 40 return reader.read(identifier);
40 qint64 retrievedRevision = 0;
41 auto bufferAdaptor = getLatest(mainDatabase, identifier, *Sink::AdaptorFactoryRegistry::instance().getFactory<T>(mResourceType), retrievedRevision);
42 if (!bufferAdaptor) {
43 return T();
44 }
45 return T(mResourceInstanceIdentifier, identifier, retrievedRevision, bufferAdaptor);
46 } 41 }
47 42
48 template<typename T> 43 template<typename T>
49 T readFromKey(const QByteArray &key) const 44 T readFromKey(const QByteArray &key) const
50 { 45 {
51 auto typeName = ApplicationDomain::getTypeName<T>(); 46 EntityReader<T> reader(mResourceType, mResourceInstanceIdentifier, mTransaction);
52 auto mainDatabase = Storage::mainDatabase(mTransaction, typeName); 47 return reader.readFromKey(key);
53 qint64 retrievedRevision = 0;
54 auto bufferAdaptor = get(mainDatabase, key, *Sink::AdaptorFactoryRegistry::instance().getFactory<T>(mResourceType), retrievedRevision);
55 const auto identifier = Storage::uidFromKey(key);
56 if (!bufferAdaptor) {
57 return T();
58 }
59 return T(mResourceInstanceIdentifier, identifier, retrievedRevision, bufferAdaptor);
60 } 48 }
61 49
62 template<typename T> 50 template<typename T>
63 T readPrevious(const QByteArray &uid, qint64 revision) const 51 T readPrevious(const QByteArray &uid, qint64 revision) const
64 { 52 {
65 auto typeName = ApplicationDomain::getTypeName<T>(); 53 EntityReader<T> reader(mResourceType, mResourceInstanceIdentifier, mTransaction);
66 auto mainDatabase = Storage::mainDatabase(mTransaction, typeName); 54 return reader.readPrevious(uid, revision);
67 qint64 retrievedRevision = 0;
68 auto bufferAdaptor = getPrevious(mainDatabase, uid, revision, *Sink::AdaptorFactoryRegistry::instance().getFactory<T>(mResourceType), retrievedRevision);
69 if (!bufferAdaptor) {
70 return T();
71 }
72 return T(mResourceInstanceIdentifier, uid, retrievedRevision, bufferAdaptor);
73 } 55 }
74 56
75
76
77 static QSharedPointer<Sink::ApplicationDomain::BufferAdaptor> getLatest(const Sink::Storage::NamedDatabase &db, const QByteArray &uid, DomainTypeAdaptorFactoryInterface &adaptorFactory, qint64 &retrievedRevision);
78 static QSharedPointer<Sink::ApplicationDomain::BufferAdaptor> get(const Sink::Storage::NamedDatabase &db, const QByteArray &key, DomainTypeAdaptorFactoryInterface &adaptorFactory, qint64 &retrievedRevision);
79 static QSharedPointer<Sink::ApplicationDomain::BufferAdaptor> getPrevious(const Sink::Storage::NamedDatabase &db, const QByteArray &uid, qint64 revision, DomainTypeAdaptorFactoryInterface &adaptorFactory, qint64 &retrievedRevision);
80private: 57private:
81 QByteArray mResourceType; 58 QByteArray mResourceType;
82 QByteArray mResourceInstanceIdentifier; 59 QByteArray mResourceInstanceIdentifier;