diff options
Diffstat (limited to 'common/entitystore.h')
-rw-r--r-- | common/entitystore.h | 37 |
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 | ||
28 | namespace Sink { | 29 | namespace 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); | ||
80 | private: | 57 | private: |
81 | QByteArray mResourceType; | 58 | QByteArray mResourceType; |
82 | QByteArray mResourceInstanceIdentifier; | 59 | QByteArray mResourceInstanceIdentifier; |