annotate SQLite/Plugins/IndexPlugin.cpp @ 207:d9ef3f16e6a2

wrapping transactions in API v3
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 19 Mar 2021 15:11:45 +0100
parents 6dcf57074dd4
children 696bc0c9fddb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 /**
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2 * Orthanc - A Lightweight, RESTful DICOM Store
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 * Department, University Hospital of Liege, Belgium
193
3236894320d6 upgrade to year 2021
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 157
diff changeset
5 * Copyright (C) 2017-2021 Osimis S.A., Belgium
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6 *
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 * This program is free software: you can redistribute it and/or
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 * modify it under the terms of the GNU Affero General Public License
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 * as published by the Free Software Foundation, either version 3 of
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 * the License, or (at your option) any later version.
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 *
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful, but
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 * Affero General Public License for more details.
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 *
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 * You should have received a copy of the GNU Affero General Public License
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 **/
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 #include "SQLiteIndex.h"
24
17f849b2af34 sharing plugin initialization code
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2
diff changeset
23 #include "../../Framework/Plugins/PluginInitialization.h"
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24
157
275e14f57f1e replacing deprecated std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 152
diff changeset
25 #include <Compatibility.h> // For std::unique_ptr<>
152
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 140
diff changeset
26 #include <Logging.h>
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
27
157
275e14f57f1e replacing deprecated std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 152
diff changeset
28 static std::unique_ptr<OrthancDatabases::SQLiteIndex> backend_;
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
29
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
30
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
31
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
32 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in Orthanc 1.3.1
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
33 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 10, 0)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
34
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
35
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
36 #define ORTHANC_PLUGINS_DATABASE_CATCH(context) \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
37 catch (::Orthanc::OrthancException& e) \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
38 { \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
39 return static_cast<OrthancPluginErrorCode>(e.GetErrorCode()); \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
40 } \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
41 catch (::std::runtime_error& e) \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
42 { \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
43 const std::string message = "Exception in database back-end: " + std::string(e.what()); \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
44 OrthancPluginLogError(context, message.c_str()); \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
45 return OrthancPluginErrorCode_DatabasePlugin; \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
46 } \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
47 catch (...) \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
48 { \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
49 OrthancPluginLogError(context, "Native exception"); \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
50 return OrthancPluginErrorCode_DatabasePlugin; \
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
51 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
52
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
53
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
54 namespace OrthancDatabases
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
55 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
56 class Output : public IDatabaseBackendOutput
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
57 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
58 private:
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
59 struct Metadata
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
60 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
61 int32_t metadata;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
62 const char* value;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
63 };
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
64
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
65 _OrthancPluginDatabaseAnswerType answerType_;
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
66 std::list<std::string> stringsStore_;
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
67
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
68 std::vector<OrthancPluginAttachment> attachments_;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
69 std::vector<OrthancPluginChange> changes_;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
70 std::vector<OrthancPluginDicomTag> tags_;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
71 std::vector<OrthancPluginExportedResource> exported_;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
72 std::vector<OrthancPluginDatabaseEvent> events_;
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
73 std::vector<int32_t> integers32_;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
74 std::vector<int64_t> integers64_;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
75 std::vector<OrthancPluginMatchingResource> matches_;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
76 std::vector<Metadata> metadata_;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
77 std::vector<std::string> stringAnswers_;
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
78
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
79 const char* StoreString(const std::string& s)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
80 {
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
81 stringsStore_.push_back(s);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
82 return stringsStore_.back().c_str();
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
83 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
84
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
85 void SetupAnswerType(_OrthancPluginDatabaseAnswerType type)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
86 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
87 if (answerType_ == _OrthancPluginDatabaseAnswerType_None)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
88 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
89 answerType_ = type;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
90 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
91 else if (answerType_ != type)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
92 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
93 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
94 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
95 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
96
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
97 public:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
98 Output() :
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
99 answerType_(_OrthancPluginDatabaseAnswerType_None)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
100 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
101 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
102
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
103
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
104 void Clear()
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
105 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
106 answerType_ = _OrthancPluginDatabaseAnswerType_None;
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
107 stringsStore_.clear();
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
108
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
109 attachments_.clear();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
110 changes_.clear();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
111 tags_.clear();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
112 exported_.clear();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
113 events_.clear();
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
114 integers32_.clear();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
115 integers64_.clear();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
116 matches_.clear();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
117 metadata_.clear();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
118 stringAnswers_.clear();
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
119 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
120
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
121
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
122 static OrthancPluginErrorCode ReadAnswersCount(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
123 uint32_t* target /* out */)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
124 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
125 const Output& that = *reinterpret_cast<const Output*>(transaction);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
126
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
127 size_t size;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
128
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
129 switch (that.answerType_)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
130 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
131 case _OrthancPluginDatabaseAnswerType_None:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
132 size = 0;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
133 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
134
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
135 case _OrthancPluginDatabaseAnswerType_Attachment:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
136 size = that.attachments_.size();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
137 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
138
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
139 case _OrthancPluginDatabaseAnswerType_Change:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
140 size = that.changes_.size();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
141 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
142
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
143 case _OrthancPluginDatabaseAnswerType_DicomTag:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
144 size = that.tags_.size();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
145 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
146
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
147 case _OrthancPluginDatabaseAnswerType_ExportedResource:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
148 size = that.exported_.size();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
149 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
150
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
151 case _OrthancPluginDatabaseAnswerType_Int32:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
152 size = that.integers32_.size();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
153 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
154
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
155 case _OrthancPluginDatabaseAnswerType_Int64:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
156 size = that.integers64_.size();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
157 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
158
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
159 case _OrthancPluginDatabaseAnswerType_MatchingResource:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
160 size = that.matches_.size();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
161 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
162
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
163 case _OrthancPluginDatabaseAnswerType_Metadata:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
164 size = that.metadata_.size();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
165 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
166
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
167 case _OrthancPluginDatabaseAnswerType_String:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
168 size = that.stringAnswers_.size();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
169 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
170
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
171 default:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
172 return OrthancPluginErrorCode_InternalError;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
173 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
174
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
175 *target = static_cast<uint32_t>(size);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
176 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
177 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
178
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
179
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
180 static OrthancPluginErrorCode ReadAnswerAttachment(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
181 OrthancPluginAttachment* target /* out */,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
182 uint32_t index)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
183 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
184 const Output& that = *reinterpret_cast<const Output*>(transaction);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
185
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
186 if (index < that.attachments_.size())
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
187 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
188 *target = that.attachments_[index];
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
189 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
190 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
191 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
192 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
193 return OrthancPluginErrorCode_ParameterOutOfRange;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
194 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
195 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
196
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
197
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
198 static OrthancPluginErrorCode ReadAnswerChange(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
199 OrthancPluginChange* target /* out */,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
200 uint32_t index)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
201 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
202 const Output& that = *reinterpret_cast<const Output*>(transaction);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
203
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
204 if (index < that.changes_.size())
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
205 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
206 *target = that.changes_[index];
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
207 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
208 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
209 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
210 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
211 return OrthancPluginErrorCode_ParameterOutOfRange;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
212 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
213 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
214
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
215
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
216 static OrthancPluginErrorCode ReadAnswerDicomTag(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
217 uint16_t* group,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
218 uint16_t* element,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
219 const char** value,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
220 uint32_t index)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
221 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
222 const Output& that = *reinterpret_cast<const Output*>(transaction);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
223
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
224 if (index < that.tags_.size())
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
225 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
226 const OrthancPluginDicomTag& tag = that.tags_[index];
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
227 *group = tag.group;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
228 *element = tag.element;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
229 *value = tag.value;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
230 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
231 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
232 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
233 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
234 return OrthancPluginErrorCode_ParameterOutOfRange;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
235 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
236 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
237
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
238
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
239 static OrthancPluginErrorCode ReadAnswerExportedResource(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
240 OrthancPluginExportedResource* target /* out */,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
241 uint32_t index)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
242 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
243 const Output& that = *reinterpret_cast<const Output*>(transaction);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
244
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
245 if (index < that.exported_.size())
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
246 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
247 *target = that.exported_[index];
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
248 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
249 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
250 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
251 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
252 return OrthancPluginErrorCode_ParameterOutOfRange;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
253 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
254 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
255
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
256
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
257 static OrthancPluginErrorCode ReadAnswerInt32(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
258 int32_t* target,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
259 uint32_t index)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
260 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
261 const Output& that = *reinterpret_cast<const Output*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
262
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
263 if (index < that.integers32_.size())
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
264 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
265 *target = that.integers32_[index];
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
266 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
267 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
268 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
269 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
270 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
271 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
272 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
273
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
274
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
275 static OrthancPluginErrorCode ReadAnswerInt64(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
276 int64_t* target,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
277 uint32_t index)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
278 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
279 const Output& that = *reinterpret_cast<const Output*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
280
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
281 if (index < that.integers64_.size())
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
282 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
283 *target = that.integers64_[index];
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
284 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
285 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
286 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
287 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
288 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
289 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
290 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
291
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
292
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
293 static OrthancPluginErrorCode ReadAnswerMatchingResource(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
294 OrthancPluginMatchingResource* target,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
295 uint32_t index)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
296 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
297 const Output& that = *reinterpret_cast<const Output*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
298
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
299 if (index < that.matches_.size())
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
300 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
301 *target = that.matches_[index];
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
302 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
303 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
304 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
305 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
306 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
307 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
308 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
309
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
310
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
311 static OrthancPluginErrorCode ReadAnswerMetadata(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
312 int32_t* metadata,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
313 const char** value,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
314 uint32_t index)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
315 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
316 const Output& that = *reinterpret_cast<const Output*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
317
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
318 if (index < that.metadata_.size())
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
319 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
320 const Metadata& tmp = that.metadata_[index];
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
321 *metadata = tmp.metadata;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
322 *value = tmp.value;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
323 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
324 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
325 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
326 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
327 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
328 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
329 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
330
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
331
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
332 static OrthancPluginErrorCode ReadAnswerString(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
333 const char** target,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
334 uint32_t index)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
335 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
336 const Output& that = *reinterpret_cast<const Output*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
337
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
338 if (index < that.stringAnswers_.size())
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
339 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
340 *target = that.stringAnswers_[index].c_str();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
341 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
342 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
343 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
344 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
345 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
346 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
347 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
348
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
349
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
350 static OrthancPluginErrorCode ReadEventsCount(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
351 uint32_t* target /* out */)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
352 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
353 const Output& that = *reinterpret_cast<const Output*>(transaction);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
354 *target = static_cast<uint32_t>(that.events_.size());
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
355 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
356 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
357
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
358
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
359 static OrthancPluginErrorCode ReadEvent(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
360 OrthancPluginDatabaseEvent* event /* out */,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
361 uint32_t index)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
362 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
363 const Output& that = *reinterpret_cast<const Output*>(transaction);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
364
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
365 if (index < that.events_.size())
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
366 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
367 *event = that.events_[index];
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
368 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
369 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
370 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
371 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
372 return OrthancPluginErrorCode_ParameterOutOfRange;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
373 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
374 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
375
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
376
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
377 virtual void SignalDeletedAttachment(const std::string& uuid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
378 int32_t contentType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
379 uint64_t uncompressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
380 const std::string& uncompressedHash,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
381 int32_t compressionType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
382 uint64_t compressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
383 const std::string& compressedHash) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
384 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
385 OrthancPluginDatabaseEvent event;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
386 event.type = OrthancPluginDatabaseEventType_DeletedAttachment;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
387 event.content.attachment.uuid = StoreString(uuid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
388 event.content.attachment.contentType = contentType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
389 event.content.attachment.uncompressedSize = uncompressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
390 event.content.attachment.uncompressedHash = StoreString(uncompressedHash);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
391 event.content.attachment.compressionType = compressionType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
392 event.content.attachment.compressedSize = compressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
393 event.content.attachment.compressedHash = StoreString(compressedHash);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
394
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
395 events_.push_back(event);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
396 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
397
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
398
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
399 virtual void SignalDeletedResource(const std::string& publicId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
400 OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
401 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
402 OrthancPluginDatabaseEvent event;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
403 event.type = OrthancPluginDatabaseEventType_DeletedResource;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
404 event.content.resource.level = resourceType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
405 event.content.resource.publicId = StoreString(publicId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
406
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
407 events_.push_back(event);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
408 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
409
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
410
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
411 virtual void SignalRemainingAncestor(const std::string& ancestorId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
412 OrthancPluginResourceType ancestorType) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
413 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
414 OrthancPluginDatabaseEvent event;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
415 event.type = OrthancPluginDatabaseEventType_RemainingAncestor;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
416 event.content.resource.level = ancestorType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
417 event.content.resource.publicId = StoreString(ancestorId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
418
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
419 events_.push_back(event);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
420 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
421
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
422
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
423 virtual void AnswerAttachment(const std::string& uuid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
424 int32_t contentType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
425 uint64_t uncompressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
426 const std::string& uncompressedHash,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
427 int32_t compressionType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
428 uint64_t compressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
429 const std::string& compressedHash) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
430 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
431 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Attachment);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
432
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
433 OrthancPluginAttachment attachment;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
434 attachment.uuid = StoreString(uuid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
435 attachment.contentType = contentType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
436 attachment.uncompressedSize = uncompressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
437 attachment.uncompressedHash = StoreString(uncompressedHash);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
438 attachment.compressionType = compressionType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
439 attachment.compressedSize = compressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
440 attachment.compressedHash = StoreString(compressedHash);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
441
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
442 attachments_.push_back(attachment);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
443 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
444
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
445
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
446 virtual void AnswerChange(int64_t seq,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
447 int32_t changeType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
448 OrthancPluginResourceType resourceType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
449 const std::string& publicId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
450 const std::string& date) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
451 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
452 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Change);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
453
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
454 OrthancPluginChange change;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
455 change.seq = seq;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
456 change.changeType = changeType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
457 change.resourceType = resourceType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
458 change.publicId = StoreString(publicId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
459 change.date = StoreString(date);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
460
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
461 changes_.push_back(change);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
462 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
463
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
464
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
465 virtual void AnswerDicomTag(uint16_t group,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
466 uint16_t element,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
467 const std::string& value) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
468 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
469 SetupAnswerType(_OrthancPluginDatabaseAnswerType_DicomTag);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
470
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
471 OrthancPluginDicomTag tag;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
472 tag.group = group;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
473 tag.element = element;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
474 tag.value = StoreString(value);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
475
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
476 tags_.push_back(tag);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
477 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
478
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
479
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
480 virtual void AnswerExportedResource(int64_t seq,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
481 OrthancPluginResourceType resourceType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
482 const std::string& publicId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
483 const std::string& modality,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
484 const std::string& date,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
485 const std::string& patientId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
486 const std::string& studyInstanceUid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
487 const std::string& seriesInstanceUid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
488 const std::string& sopInstanceUid) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
489 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
490 SetupAnswerType(_OrthancPluginDatabaseAnswerType_ExportedResource);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
491
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
492 OrthancPluginExportedResource exported;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
493 exported.seq = seq;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
494 exported.resourceType = resourceType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
495 exported.publicId = StoreString(publicId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
496 exported.modality = StoreString(modality);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
497 exported.date = StoreString(date);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
498 exported.patientId = StoreString(patientId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
499 exported.studyInstanceUid = StoreString(studyInstanceUid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
500 exported.seriesInstanceUid = StoreString(seriesInstanceUid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
501 exported.sopInstanceUid = StoreString(sopInstanceUid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
502
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
503 exported_.push_back(exported);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
504 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
505
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
506
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
507 virtual void AnswerMatchingResource(const std::string& resourceId) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
508 {
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
509 SetupAnswerType(_OrthancPluginDatabaseAnswerType_MatchingResource);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
510
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
511 OrthancPluginMatchingResource match;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
512 match.resourceId = StoreString(resourceId);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
513 match.someInstanceId = NULL;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
514
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
515 matches_.push_back(match);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
516 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
517
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
518
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
519 virtual void AnswerMatchingResource(const std::string& resourceId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
520 const std::string& someInstanceId) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
521 {
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
522 SetupAnswerType(_OrthancPluginDatabaseAnswerType_MatchingResource);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
523
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
524 OrthancPluginMatchingResource match;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
525 match.resourceId = StoreString(resourceId);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
526 match.someInstanceId = StoreString(someInstanceId);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
527
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
528 matches_.push_back(match);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
529 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
530
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
531
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
532 void AnswerIntegers32(const std::list<int32_t>& values)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
533 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
534 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Int32);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
535
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
536 integers32_.reserve(values.size());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
537 std::copy(std::begin(values), std::end(values), std::back_inserter(integers32_));
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
538 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
539
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
540
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
541 void AnswerIntegers64(const std::list<int64_t>& values)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
542 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
543 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Int64);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
544
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
545 integers64_.reserve(values.size());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
546 std::copy(std::begin(values), std::end(values), std::back_inserter(integers64_));
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
547 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
548
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
549
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
550 void AnswerMetadata(int32_t metadata,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
551 const std::string& value)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
552 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
553 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Metadata);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
554
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
555 Metadata tmp;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
556 tmp.metadata = metadata;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
557 tmp.value = StoreString(value);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
558
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
559 metadata_.push_back(tmp);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
560 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
561 };
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
562
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
563
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
564 class Factory : public IDatabaseBackendOutput::IFactory
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
565 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
566 public:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
567 Factory()
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
568 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
569 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
570
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
571 virtual IDatabaseBackendOutput* CreateOutput()
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
572 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
573 return new Output;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
574 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
575 };
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
576
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
577
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
578 class Transaction : public boost::noncopyable
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
579 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
580 private:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
581 IDatabaseBackend& backend_;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
582 std::unique_ptr<Output> output_;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
583
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
584 public:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
585 Transaction(IDatabaseBackend& backend) :
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
586 backend_(backend),
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
587 output_(new Output)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
588 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
589 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
590
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
591 IDatabaseBackend& GetBackend() const
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
592 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
593 return backend_;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
594 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
595
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
596 Output& GetOutput() const
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
597 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
598 return *output_;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
599 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
600
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
601 OrthancPluginContext* GetContext() const
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
602 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
603 return backend_.GetContext();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
604 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
605 };
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
606
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
607
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
608 static OrthancPluginErrorCode Open(void* database)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
609 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
610 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(database);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
611
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
612 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
613 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
614 backend->Open();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
615 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
616 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
617 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
618 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
619
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
620
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
621 static OrthancPluginErrorCode Close(void* database)
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
622 {
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
623 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(database);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
624
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
625 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
626 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
627 backend->Close();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
628 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
629 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
630 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
631 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
632
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
633
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
634 static OrthancPluginErrorCode DestructDatabase(void* database)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
635 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
636 // Nothing to delete, as this plugin uses a singleton to store backend
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
637 if (database == NULL)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
638 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
639 return OrthancPluginErrorCode_InternalError;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
640 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
641 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
642 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
643 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
644 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
645 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
646
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
647
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
648 static OrthancPluginErrorCode GetDatabaseVersion(void* database,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
649 uint32_t* version)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
650 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
651 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(database);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
652
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
653 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
654 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
655 *version = backend->GetDatabaseVersion();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
656 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
657 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
658 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
659 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
660
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
661
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
662 static OrthancPluginErrorCode UpgradeDatabase(void* database,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
663 OrthancPluginStorageArea* storageArea,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
664 uint32_t targetVersion)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
665 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
666 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(database);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
667
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
668 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
669 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
670 backend->UpgradeDatabase(targetVersion, storageArea);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
671 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
672 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
673 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
674 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
675
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
676
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
677 static OrthancPluginErrorCode StartTransaction(void* database,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
678 OrthancPluginDatabaseTransaction** target /* out */,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
679 OrthancPluginDatabaseTransactionType type)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
680 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
681 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(database);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
682
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
683 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
684 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
685 std::unique_ptr<Transaction> transaction(new Transaction(*backend));
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
686
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
687 switch (type)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
688 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
689 case OrthancPluginDatabaseTransactionType_ReadOnly:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
690 backend->StartTransaction(TransactionType_ReadOnly);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
691 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
692
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
693 case OrthancPluginDatabaseTransactionType_ReadWrite:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
694 backend->StartTransaction(TransactionType_ReadWrite);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
695 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
696
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
697 default:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
698 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
699 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
700
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
701 *target = reinterpret_cast<OrthancPluginDatabaseTransaction*>(transaction.release());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
702
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
703 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
704 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
705 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
706 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
707
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
708
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
709 static OrthancPluginErrorCode DestructTransaction(OrthancPluginDatabaseTransaction* transaction)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
710 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
711 if (transaction == NULL)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
712 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
713 return OrthancPluginErrorCode_NullPointer;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
714 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
715 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
716 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
717 delete reinterpret_cast<Output*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
718 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
719 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
720 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
721
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
722
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
723 static OrthancPluginErrorCode Rollback(OrthancPluginDatabaseTransaction* transaction)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
724 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
725 Transaction* t = reinterpret_cast<Transaction*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
726
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
727 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
728 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
729 t->GetBackend().RollbackTransaction();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
730 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
731 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
732 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
733 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
734
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
735
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
736 static OrthancPluginErrorCode Commit(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
737 int64_t fileSizeDelta /* TODO - not used? */)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
738 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
739 Transaction* t = reinterpret_cast<Transaction*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
740
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
741 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
742 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
743 t->GetBackend().CommitTransaction();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
744 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
745 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
746 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
747 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
748
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
749
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
750 static OrthancPluginErrorCode AddAttachment(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
751 int64_t id,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
752 const OrthancPluginAttachment* attachment)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
753 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
754 Transaction* t = reinterpret_cast<Transaction*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
755
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
756 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
757 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
758 t->GetOutput().Clear();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
759 t->GetBackend().AddAttachment(id, *attachment);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
760 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
761 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
762 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
763 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
764
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
765
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
766
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
767 static void RegisterV3(IDatabaseBackend& database)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
768 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
769 OrthancPluginDatabaseBackendV3 params;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
770 memset(&params, 0, sizeof(params));
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
771
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
772 params.readAnswersCount = Output::ReadAnswersCount;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
773 params.readAnswerAttachment = Output::ReadAnswerAttachment;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
774 params.readAnswerChange = Output::ReadAnswerChange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
775 params.readAnswerDicomTag = Output::ReadAnswerDicomTag;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
776 params.readAnswerExportedResource = Output::ReadAnswerExportedResource;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
777 params.readAnswerInt32 = Output::ReadAnswerInt32;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
778 params.readAnswerInt64 = Output::ReadAnswerInt64;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
779 params.readAnswerMatchingResource = Output::ReadAnswerMatchingResource;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
780 params.readAnswerMetadata = Output::ReadAnswerMetadata;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
781 params.readAnswerString = Output::ReadAnswerString;
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
782
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
783 params.readEventsCount = Output::ReadEventsCount;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
784 params.readEvent = Output::ReadEvent;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
785
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
786 params.open = Open;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
787 params.close = Close;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
788 params.destructDatabase = DestructDatabase;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
789 params.getDatabaseVersion = GetDatabaseVersion;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
790 params.upgradeDatabase = UpgradeDatabase;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
791 params.startTransaction = StartTransaction;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
792 params.destructTransaction = DestructTransaction;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
793 params.rollback = Rollback;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
794 params.commit = Commit;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
795
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
796 params.addAttachment = AddAttachment;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
797
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
798 OrthancPluginContext* context = database.GetContext();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
799
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
800 if (OrthancPluginRegisterDatabaseBackendV3(context, &params, sizeof(params), &database) != OrthancPluginErrorCode_Success)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
801 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
802 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, "Unable to register the database backend");
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
803 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
804
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
805 database.SetOutputFactory(new Factory);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
806 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
807 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
808
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
809 # endif
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
810 #endif
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
811
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
812
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
813
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
814 extern "C"
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
815 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
816 ORTHANC_PLUGINS_API int32_t OrthancPluginInitialize(OrthancPluginContext* context)
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
817 {
28
c0cb5d2cd696 checks depending on Orthanc version
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
818 if (!OrthancDatabases::InitializePlugin(context, "SQLite", true))
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
819 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
820 return -1;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
821 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
822
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
823 #if 0
62
eedd082355f9 fix for compatibility with simplified OrthancPluginCppWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 28
diff changeset
824 OrthancPlugins::OrthancConfiguration configuration;
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
825
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
826 if (!configuration.IsSection("SQLite"))
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
827 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
828 LOG(WARNING) << "No available configuration for the SQLite index plugin";
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
829 return 0;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
830 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
831
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
832 OrthancPlugins::OrthancConfiguration sqlite;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
833 configuration.GetSection(sqlite, "SQLite");
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
834
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
835 bool enable;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
836 if (!sqlite.LookupBooleanValue(enable, "EnableIndex") ||
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
837 !enable)
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
838 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
839 LOG(WARNING) << "The SQLite index is currently disabled, set \"EnableIndex\" "
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
840 << "to \"true\" in the \"SQLite\" section of the configuration file of Orthanc";
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
841 return 0;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
842 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
843 #endif
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
844
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
845 try
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
846 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
847 /* Create the database back-end */
201
42990b2dd51b create IDatabaseBackendOutput only if needed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
848 backend_.reset(new OrthancDatabases::SQLiteIndex(context, "index.db")); // TODO parameter
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
849
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
850 /* Register the SQLite index into Orthanc */
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
851
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
852 bool hasLoadedV3 = false;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
853
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
854 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in Orthanc 1.3.1
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
855 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 10, 0)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
856 if (OrthancPluginCheckVersionAdvanced(context, 1, 10, 0) == 1)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
857 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
858 RegisterV3(*backend_);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
859 hasLoadedV3 = true;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
860 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
861 # endif
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
862 #endif
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
863
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
864 if (!hasLoadedV3)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
865 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
866 OrthancDatabases::DatabaseBackendAdapterV2::Register(*backend_);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
867 }
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
868 }
2
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
869 catch (Orthanc::OrthancException& e)
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
870 {
2
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
871 LOG(ERROR) << e.What();
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
872 return -1;
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
873 }
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
874 catch (...)
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
875 {
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
876 LOG(ERROR) << "Native exception while initializing the plugin";
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
877 return -1;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
878 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
879
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
880 return 0;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
881 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
882
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
883
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
884 ORTHANC_PLUGINS_API void OrthancPluginFinalize()
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
885 {
2
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
886 LOG(WARNING) << "SQLite index is finalizing";
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
887 backend_.reset(NULL);
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
888 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
889
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
890
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
891 ORTHANC_PLUGINS_API const char* OrthancPluginGetName()
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
892 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
893 return "sqlite-index";
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
894 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
895
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
896
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
897 ORTHANC_PLUGINS_API const char* OrthancPluginGetVersion()
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
898 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
899 return ORTHANC_PLUGIN_VERSION;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
900 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
901 }