annotate SQLite/Plugins/IndexPlugin.cpp @ 209:13a3863df7fa

cont
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 19 Mar 2021 17:01:38 +0100
parents 696bc0c9fddb
children a0c095a4ba7d
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 {
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
106 // We don't systematically clear all the vectors, in order to
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
107 // avoid spending unnecessary time
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
108
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
109 switch (answerType_)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
110 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
111 case _OrthancPluginDatabaseAnswerType_None:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
112 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
114 case _OrthancPluginDatabaseAnswerType_Attachment:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
115 attachments_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
116 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
117
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
118 case _OrthancPluginDatabaseAnswerType_Change:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
119 changes_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
120 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
121
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
122 case _OrthancPluginDatabaseAnswerType_DicomTag:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
123 tags_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
124 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
125
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
126 case _OrthancPluginDatabaseAnswerType_ExportedResource:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
127 exported_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
128 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
129
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
130 case _OrthancPluginDatabaseAnswerType_Int32:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
131 integers32_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
132 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
133
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
134 case _OrthancPluginDatabaseAnswerType_Int64:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
135 integers64_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
136 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
137
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
138 case _OrthancPluginDatabaseAnswerType_MatchingResource:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
139 matches_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
140 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
141
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
142 case _OrthancPluginDatabaseAnswerType_Metadata:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
143 metadata_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
144 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
145
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
146 case _OrthancPluginDatabaseAnswerType_String:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
147 stringAnswers_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
148 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
149
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
150 default:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
151 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
152 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
153
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
154 answerType_ = _OrthancPluginDatabaseAnswerType_None;
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
155 stringsStore_.clear();
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
156
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
157 assert(attachments_.empty());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
158 assert(changes_.empty());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
159 assert(tags_.empty());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
160 assert(exported_.empty());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
161 assert(events_.empty());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
162 assert(integers32_.empty());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
163 assert(integers64_.empty());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
164 assert(matches_.empty());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
165 assert(metadata_.empty());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
166 assert(stringAnswers_.empty());
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
167 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
168
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
169
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
170 static OrthancPluginErrorCode ReadAnswersCount(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
171 uint32_t* target /* out */)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
172 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
173 const Output& that = *reinterpret_cast<const Output*>(transaction);
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 size_t size;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
176
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
177 switch (that.answerType_)
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 case _OrthancPluginDatabaseAnswerType_None:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
180 size = 0;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
181 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
182
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
183 case _OrthancPluginDatabaseAnswerType_Attachment:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
184 size = that.attachments_.size();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
185 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
186
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
187 case _OrthancPluginDatabaseAnswerType_Change:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
188 size = that.changes_.size();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
189 break;
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 case _OrthancPluginDatabaseAnswerType_DicomTag:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
192 size = that.tags_.size();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
193 break;
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 case _OrthancPluginDatabaseAnswerType_ExportedResource:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
196 size = that.exported_.size();
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
197 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
198
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
199 case _OrthancPluginDatabaseAnswerType_Int32:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
200 size = that.integers32_.size();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
201 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
202
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
203 case _OrthancPluginDatabaseAnswerType_Int64:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
204 size = that.integers64_.size();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
205 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
206
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
207 case _OrthancPluginDatabaseAnswerType_MatchingResource:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
208 size = that.matches_.size();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
209 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
210
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
211 case _OrthancPluginDatabaseAnswerType_Metadata:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
212 size = that.metadata_.size();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
213 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
214
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
215 case _OrthancPluginDatabaseAnswerType_String:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
216 size = that.stringAnswers_.size();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
217 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
218
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
219 default:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
220 return OrthancPluginErrorCode_InternalError;
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
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
223 *target = static_cast<uint32_t>(size);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
224 return OrthancPluginErrorCode_Success;
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
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
227
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
228 static OrthancPluginErrorCode ReadAnswerAttachment(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
229 OrthancPluginAttachment* target /* out */,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
230 uint32_t index)
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 const Output& that = *reinterpret_cast<const Output*>(transaction);
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 if (index < that.attachments_.size())
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 *target = that.attachments_[index];
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
237 return OrthancPluginErrorCode_Success;
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 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
240 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
241 return OrthancPluginErrorCode_ParameterOutOfRange;
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 }
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
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
246 static OrthancPluginErrorCode ReadAnswerChange(OrthancPluginDatabaseTransaction* transaction,
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
247 OrthancPluginChange* target /* out */,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
248 uint32_t index)
206
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 const Output& that = *reinterpret_cast<const Output*>(transaction);
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 if (index < that.changes_.size())
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 *target = that.changes_[index];
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
255 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
256 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
257 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
258 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
259 return OrthancPluginErrorCode_ParameterOutOfRange;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
260 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
261 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
262
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
263
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
264 static OrthancPluginErrorCode ReadAnswerDicomTag(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
265 uint16_t* group,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
266 uint16_t* element,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
267 const char** value,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
268 uint32_t index)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
269 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
270 const Output& that = *reinterpret_cast<const Output*>(transaction);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
271
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
272 if (index < that.tags_.size())
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
273 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
274 const OrthancPluginDicomTag& tag = that.tags_[index];
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
275 *group = tag.group;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
276 *element = tag.element;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
277 *value = tag.value;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
278 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
279 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
280 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
281 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
282 return OrthancPluginErrorCode_ParameterOutOfRange;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
283 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
284 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
285
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
286
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
287 static OrthancPluginErrorCode ReadAnswerExportedResource(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
288 OrthancPluginExportedResource* target /* out */,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
289 uint32_t index)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
290 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
291 const Output& that = *reinterpret_cast<const Output*>(transaction);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
292
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
293 if (index < that.exported_.size())
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
294 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
295 *target = that.exported_[index];
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
296 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
297 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
298 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
299 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
300 return OrthancPluginErrorCode_ParameterOutOfRange;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
301 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
302 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
303
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
304
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
305 static OrthancPluginErrorCode ReadAnswerInt32(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
306 int32_t* target,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
307 uint32_t index)
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 const Output& that = *reinterpret_cast<const Output*>(transaction);
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 if (index < that.integers32_.size())
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
312 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
313 *target = that.integers32_[index];
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
314 return OrthancPluginErrorCode_Success;
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 else
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 return OrthancPluginErrorCode_ParameterOutOfRange;
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 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
321
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
322
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
323 static OrthancPluginErrorCode ReadAnswerInt64(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
324 int64_t* target,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
325 uint32_t index)
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 const Output& that = *reinterpret_cast<const Output*>(transaction);
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 if (index < that.integers64_.size())
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 *target = that.integers64_[index];
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
332 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
333 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
334 else
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 return OrthancPluginErrorCode_ParameterOutOfRange;
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 }
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
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
341 static OrthancPluginErrorCode ReadAnswerMatchingResource(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
342 OrthancPluginMatchingResource* target,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
343 uint32_t index)
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 const Output& that = *reinterpret_cast<const Output*>(transaction);
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 if (index < that.matches_.size())
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 *target = that.matches_[index];
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
350 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
351 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
352 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
353 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
354 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
355 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
356 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
357
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
358
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
359 static OrthancPluginErrorCode ReadAnswerMetadata(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
360 int32_t* metadata,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
361 const char** value,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
362 uint32_t index)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
363 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
364 const Output& that = *reinterpret_cast<const Output*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
365
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
366 if (index < that.metadata_.size())
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
367 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
368 const Metadata& tmp = that.metadata_[index];
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
369 *metadata = tmp.metadata;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
370 *value = tmp.value;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
371 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
372 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
373 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
374 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
375 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
376 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
377 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
378
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
379
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
380 static OrthancPluginErrorCode ReadAnswerString(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
381 const char** target,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
382 uint32_t index)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
383 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
384 const Output& that = *reinterpret_cast<const Output*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
385
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
386 if (index < that.stringAnswers_.size())
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
387 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
388 *target = that.stringAnswers_[index].c_str();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
389 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
390 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
391 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
392 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
393 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
394 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
395 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
396
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
397
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
398 static OrthancPluginErrorCode ReadEventsCount(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
399 uint32_t* target /* out */)
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
400 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
401 const Output& that = *reinterpret_cast<const Output*>(transaction);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
402 *target = static_cast<uint32_t>(that.events_.size());
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
403 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
404 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
405
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 static OrthancPluginErrorCode ReadEvent(OrthancPluginDatabaseTransaction* transaction,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
408 OrthancPluginDatabaseEvent* event /* out */,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
409 uint32_t index)
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 const Output& that = *reinterpret_cast<const Output*>(transaction);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
412
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
413 if (index < that.events_.size())
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
414 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
415 *event = that.events_[index];
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
416 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
417 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
418 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
419 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
420 return OrthancPluginErrorCode_ParameterOutOfRange;
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
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
424
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
425 virtual void SignalDeletedAttachment(const std::string& uuid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
426 int32_t contentType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
427 uint64_t uncompressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
428 const std::string& uncompressedHash,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
429 int32_t compressionType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
430 uint64_t compressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
431 const std::string& compressedHash) ORTHANC_OVERRIDE
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 OrthancPluginDatabaseEvent event;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
434 event.type = OrthancPluginDatabaseEventType_DeletedAttachment;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
435 event.content.attachment.uuid = StoreString(uuid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
436 event.content.attachment.contentType = contentType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
437 event.content.attachment.uncompressedSize = uncompressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
438 event.content.attachment.uncompressedHash = StoreString(uncompressedHash);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
439 event.content.attachment.compressionType = compressionType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
440 event.content.attachment.compressedSize = compressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
441 event.content.attachment.compressedHash = StoreString(compressedHash);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
442
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
443 events_.push_back(event);
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
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
447 virtual void SignalDeletedResource(const std::string& publicId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
448 OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
449 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
450 OrthancPluginDatabaseEvent event;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
451 event.type = OrthancPluginDatabaseEventType_DeletedResource;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
452 event.content.resource.level = resourceType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
453 event.content.resource.publicId = StoreString(publicId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
454
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
455 events_.push_back(event);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
456 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
457
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
458
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
459 virtual void SignalRemainingAncestor(const std::string& ancestorId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
460 OrthancPluginResourceType ancestorType) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
461 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
462 OrthancPluginDatabaseEvent event;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
463 event.type = OrthancPluginDatabaseEventType_RemainingAncestor;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
464 event.content.resource.level = ancestorType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
465 event.content.resource.publicId = StoreString(ancestorId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
466
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
467 events_.push_back(event);
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
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 virtual void AnswerAttachment(const std::string& uuid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
472 int32_t contentType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
473 uint64_t uncompressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
474 const std::string& uncompressedHash,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
475 int32_t compressionType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
476 uint64_t compressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
477 const std::string& compressedHash) ORTHANC_OVERRIDE
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 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Attachment);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
480
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
481 OrthancPluginAttachment attachment;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
482 attachment.uuid = StoreString(uuid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
483 attachment.contentType = contentType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
484 attachment.uncompressedSize = uncompressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
485 attachment.uncompressedHash = StoreString(uncompressedHash);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
486 attachment.compressionType = compressionType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
487 attachment.compressedSize = compressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
488 attachment.compressedHash = StoreString(compressedHash);
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 attachments_.push_back(attachment);
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
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
493
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
494 virtual void AnswerChange(int64_t seq,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
495 int32_t changeType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
496 OrthancPluginResourceType resourceType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
497 const std::string& publicId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
498 const std::string& date) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
499 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
500 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Change);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
501
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
502 OrthancPluginChange change;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
503 change.seq = seq;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
504 change.changeType = changeType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
505 change.resourceType = resourceType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
506 change.publicId = StoreString(publicId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
507 change.date = StoreString(date);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
508
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
509 changes_.push_back(change);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
510 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
511
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
512
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
513 virtual void AnswerDicomTag(uint16_t group,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
514 uint16_t element,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
515 const std::string& value) ORTHANC_OVERRIDE
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 SetupAnswerType(_OrthancPluginDatabaseAnswerType_DicomTag);
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 OrthancPluginDicomTag tag;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
520 tag.group = group;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
521 tag.element = element;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
522 tag.value = StoreString(value);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
523
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
524 tags_.push_back(tag);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
525 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
526
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
527
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
528 virtual void AnswerExportedResource(int64_t seq,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
529 OrthancPluginResourceType resourceType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
530 const std::string& publicId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
531 const std::string& modality,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
532 const std::string& date,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
533 const std::string& patientId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
534 const std::string& studyInstanceUid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
535 const std::string& seriesInstanceUid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
536 const std::string& sopInstanceUid) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
537 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
538 SetupAnswerType(_OrthancPluginDatabaseAnswerType_ExportedResource);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
539
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
540 OrthancPluginExportedResource exported;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
541 exported.seq = seq;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
542 exported.resourceType = resourceType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
543 exported.publicId = StoreString(publicId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
544 exported.modality = StoreString(modality);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
545 exported.date = StoreString(date);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
546 exported.patientId = StoreString(patientId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
547 exported.studyInstanceUid = StoreString(studyInstanceUid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
548 exported.seriesInstanceUid = StoreString(seriesInstanceUid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
549 exported.sopInstanceUid = StoreString(sopInstanceUid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
550
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
551 exported_.push_back(exported);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
552 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
553
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
554
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
555 virtual void AnswerMatchingResource(const std::string& resourceId) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
556 {
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
557 SetupAnswerType(_OrthancPluginDatabaseAnswerType_MatchingResource);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
558
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
559 OrthancPluginMatchingResource match;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
560 match.resourceId = StoreString(resourceId);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
561 match.someInstanceId = NULL;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
562
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
563 matches_.push_back(match);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
564 }
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
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
567 virtual void AnswerMatchingResource(const std::string& resourceId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
568 const std::string& someInstanceId) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
569 {
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
570 SetupAnswerType(_OrthancPluginDatabaseAnswerType_MatchingResource);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
571
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
572 OrthancPluginMatchingResource match;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
573 match.resourceId = StoreString(resourceId);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
574 match.someInstanceId = StoreString(someInstanceId);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
575
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
576 matches_.push_back(match);
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
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 void AnswerIntegers32(const std::list<int32_t>& values)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
581 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
582 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Int32);
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 integers32_.reserve(values.size());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
585 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
586 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
587
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 void AnswerIntegers64(const std::list<int64_t>& values)
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 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Int64);
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 integers64_.reserve(values.size());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
594 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
595 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
596
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 void AnswerMetadata(int32_t metadata,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
599 const std::string& value)
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 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Metadata);
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 Metadata tmp;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
604 tmp.metadata = metadata;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
605 tmp.value = StoreString(value);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
606
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
607 metadata_.push_back(tmp);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
608 }
208
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
609
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
610
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
611 void AnswerStrings(const std::list<std::string>& values)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
612 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
613 SetupAnswerType(_OrthancPluginDatabaseAnswerType_String);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
614
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
615 stringAnswers_.reserve(values.size());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
616 std::copy(std::begin(values), std::end(values), std::back_inserter(stringAnswers_));
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
617 }
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
618
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
619
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
620 void AnswerString(const std::string& value)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
621 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
622 SetupAnswerType(_OrthancPluginDatabaseAnswerType_String);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
623
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
624 if (stringAnswers_.empty())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
625 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
626 stringAnswers_.push_back(value);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
627 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
628 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
629 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
630 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
631 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
632 }
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
633 };
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
634
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
635
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
636 class Factory : public IDatabaseBackendOutput::IFactory
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
637 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
638 public:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
639 Factory()
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
640 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
641 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
642
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
643 virtual IDatabaseBackendOutput* CreateOutput()
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
644 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
645 return new Output;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
646 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
647 };
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
648
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
649
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
650 class Transaction : public boost::noncopyable
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
651 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
652 private:
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
653 boost::mutex::scoped_lock lock_; // TODO - REMOVE
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
654 IDatabaseBackend& backend_;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
655 std::unique_ptr<Output> output_;
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
656
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
657 static boost::mutex& GetMutex() // TODO - REMOVE
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
658 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
659 static boost::mutex mutex_;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
660 return mutex_;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
661 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
662
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
663 public:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
664 Transaction(IDatabaseBackend& backend) :
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
665 lock_(GetMutex()),
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
666 backend_(backend),
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
667 output_(new Output)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
668 {
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
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
671 IDatabaseBackend& GetBackend() const
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 return backend_;
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
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
676 Output& GetOutput() const
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
677 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
678 return *output_;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
679 }
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 OrthancPluginContext* GetContext() const
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 return backend_.GetContext();
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 };
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
686
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
687
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
688 static OrthancPluginErrorCode Open(void* database)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
689 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
690 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(database);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
691
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
692 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
693 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
694 backend->Open();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
695 return OrthancPluginErrorCode_Success;
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 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
698 }
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 static OrthancPluginErrorCode Close(void* database)
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
702 {
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
703 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(database);
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 try
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 backend->Close();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
708 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
709 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
710 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
711 }
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
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
714 static OrthancPluginErrorCode DestructDatabase(void* database)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
715 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
716 // 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
717 if (database == NULL)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
718 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
719 return OrthancPluginErrorCode_InternalError;
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 else
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 return OrthancPluginErrorCode_Success;
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 }
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
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
728 static OrthancPluginErrorCode GetDatabaseVersion(void* database,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
729 uint32_t* version)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
730 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
731 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(database);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
732
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
733 try
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 *version = backend->GetDatabaseVersion();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
736 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
737 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
738 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
739 }
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
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
742 static OrthancPluginErrorCode UpgradeDatabase(void* database,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
743 OrthancPluginStorageArea* storageArea,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
744 uint32_t targetVersion)
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 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(database);
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 try
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 backend->UpgradeDatabase(targetVersion, storageArea);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
751 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
752 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
753 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
754 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
755
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
756
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
757 static OrthancPluginErrorCode StartTransaction(void* database,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
758 OrthancPluginDatabaseTransaction** target /* out */,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
759 OrthancPluginDatabaseTransactionType type)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
760 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
761 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(database);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
762
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
763 try
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 std::unique_ptr<Transaction> transaction(new Transaction(*backend));
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 switch (type)
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 case OrthancPluginDatabaseTransactionType_ReadOnly:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
770 backend->StartTransaction(TransactionType_ReadOnly);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
771 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
772
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
773 case OrthancPluginDatabaseTransactionType_ReadWrite:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
774 backend->StartTransaction(TransactionType_ReadWrite);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
775 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
776
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
777 default:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
778 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
779 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
780
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
781 *target = reinterpret_cast<OrthancPluginDatabaseTransaction*>(transaction.release());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
782
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
783 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
784 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
785 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
786 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
787
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
788
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
789 static OrthancPluginErrorCode DestructTransaction(OrthancPluginDatabaseTransaction* transaction)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
790 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
791 if (transaction == NULL)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
792 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
793 return OrthancPluginErrorCode_NullPointer;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
794 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
795 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
796 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
797 delete reinterpret_cast<Output*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
798 return OrthancPluginErrorCode_Success;
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 }
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
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
803 static OrthancPluginErrorCode Rollback(OrthancPluginDatabaseTransaction* transaction)
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 Transaction* t = reinterpret_cast<Transaction*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
806
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
807 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
808 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
809 t->GetBackend().RollbackTransaction();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
810 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
811 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
812 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
813 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
814
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
815
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
816 static OrthancPluginErrorCode Commit(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
817 int64_t fileSizeDelta /* TODO - not used? */)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
818 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
819 Transaction* t = reinterpret_cast<Transaction*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
820
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
821 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
822 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
823 t->GetBackend().CommitTransaction();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
824 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
825 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
826 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
827 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
828
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
829
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
830 static OrthancPluginErrorCode AddAttachment(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
831 int64_t id,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
832 const OrthancPluginAttachment* attachment)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
833 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
834 Transaction* t = reinterpret_cast<Transaction*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
835
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
836 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
837 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
838 t->GetOutput().Clear();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
839 t->GetBackend().AddAttachment(id, *attachment);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
840 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
841 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
842 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
843 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
844
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
845
208
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
846 static OrthancPluginErrorCode ClearChanges(OrthancPluginDatabaseTransaction* transaction)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
847 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
848 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
849
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
850 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
851 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
852 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
853 t->GetBackend().ClearChanges();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
854 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
855 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
856 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
857 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
858
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
859
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
860 static OrthancPluginErrorCode ClearExportedResources(OrthancPluginDatabaseTransaction* transaction)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
861 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
862 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
863
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
864 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
865 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
866 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
867 t->GetBackend().ClearExportedResources();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
868 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
869 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
870 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
871 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
872
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
873
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
874 static OrthancPluginErrorCode ClearMainDicomTags(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
875 int64_t resourceId)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
876 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
877 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
878
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
879 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
880 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
881 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
882 t->GetBackend().ClearMainDicomTags(resourceId);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
883 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
884 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
885 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
886 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
887
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
888
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
889 static OrthancPluginErrorCode CreateInstance(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
890 OrthancPluginCreateInstanceResult* target /* out */,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
891 const char* hashPatient,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
892 const char* hashStudy,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
893 const char* hashSeries,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
894 const char* hashInstance)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
895 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
896 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
897
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
898 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
899 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
900 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
901 t->GetBackend().CreateInstance(*target, hashPatient, hashStudy, hashSeries, hashInstance);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
902 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
903 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
904 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
905 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
906
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
907
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
908 static OrthancPluginErrorCode DeleteAttachment(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
909 int64_t id,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
910 int32_t contentType)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
911 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
912 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
913
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
914 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
915 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
916 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
917 t->GetBackend().DeleteAttachment(t->GetOutput(), id, contentType);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
918 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
919 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
920 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
921 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
922
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
923
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
924 static OrthancPluginErrorCode DeleteMetadata(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
925 int64_t id,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
926 int32_t metadataType)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
927 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
928 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
929
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
930 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
931 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
932 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
933 t->GetBackend().DeleteMetadata(id, metadataType);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
934 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
935 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
936 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
937 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
938
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
939
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
940 static OrthancPluginErrorCode DeleteResource(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
941 int64_t id)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
942 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
943 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
944
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
945 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
946 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
947 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
948 t->GetBackend().DeleteResource(t->GetOutput(), id);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
949 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
950 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
951 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
952 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
953
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
954
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
955 static OrthancPluginErrorCode GetAllMetadata(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
956 int64_t id)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
957 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
958 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
959
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
960 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
961 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
962 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
963
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
964 std::map<int32_t, std::string> values;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
965 t->GetBackend().GetAllMetadata(values, id);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
966
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
967 for (std::map<int32_t, std::string>::const_iterator it = values.begin(); it != values.end(); ++it)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
968 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
969 t->GetOutput().AnswerMetadata(it->first, it->second);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
970 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
971
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
972 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
973 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
974 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
975 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
976
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
977
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
978 static OrthancPluginErrorCode GetAllPublicIds(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
979 OrthancPluginResourceType resourceType)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
980 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
981 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
982
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
983 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
984 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
985 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
986
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
987 std::list<std::string> values;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
988 t->GetBackend().GetAllPublicIds(values, resourceType);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
989 t->GetOutput().AnswerStrings(values);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
990
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
991 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
992 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
993 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
994 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
995
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
996
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
997 static OrthancPluginErrorCode GetAllPublicIdsWithLimit(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
998 OrthancPluginResourceType resourceType,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
999 uint64_t since,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1000 uint64_t limit)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1001 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1002 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1003
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1004 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1005 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1006 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1007
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1008 std::list<std::string> values;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1009 t->GetBackend().GetAllPublicIds(values, resourceType, since, limit);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1010 t->GetOutput().AnswerStrings(values);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1011
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1012 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1013 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1014 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1015 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1016
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1017
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1018 static OrthancPluginErrorCode GetChanges(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1019 uint8_t* targetDone /* out */,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1020 int64_t since,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1021 uint32_t maxResults)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1022 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1023 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1024
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1025 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1026 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1027 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1028
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1029 bool done;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1030 t->GetBackend().GetChanges(t->GetOutput(), done, since, maxResults);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1031 *targetDone = (done ? 1 : 0);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1032
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1033 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1034 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1035 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1036 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1037
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1038
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1039 static OrthancPluginErrorCode GetChildrenInternalId(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1040 int64_t id)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1041 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1042 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1043
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1044 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1045 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1046 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1047
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1048 std::list<int64_t> values;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1049 t->GetBackend().GetChildrenInternalId(values, id);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1050 t->GetOutput().AnswerIntegers64(values);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1051
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1052 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1053 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1054 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1055 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1056
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1057
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1058 static OrthancPluginErrorCode GetChildrenMetadata(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1059 int64_t resourceId,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1060 int32_t metadata)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1061 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1062 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1063
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1064 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1065 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1066 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1067
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1068 std::list<std::string> values;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1069 t->GetBackend().GetChildrenMetadata(values, resourceId, metadata);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1070 t->GetOutput().AnswerStrings(values);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1071
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1072 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1073 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1074 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1075 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1076
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1077
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1078 static OrthancPluginErrorCode GetChildrenPublicId(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1079 int64_t id)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1080 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1081 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1082
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1083 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1084 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1085 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1086
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1087 std::list<std::string> values;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1088 t->GetBackend().GetChildrenPublicId(values, id);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1089 t->GetOutput().AnswerStrings(values);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1090
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1091 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1092 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1093 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1094 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1095
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1096
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1097 static OrthancPluginErrorCode GetExportedResources(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1098 uint8_t* targetDone /* out */,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1099 int64_t since,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1100 uint32_t maxResults)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1101 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1102 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1103
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1104 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1105 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1106 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1107
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1108 bool done;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1109 t->GetBackend().GetExportedResources(t->GetOutput(), done, since, maxResults);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1110 *targetDone = (done ? 1 : 0);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1111
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1112 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1113 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1114 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1115 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1116
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1117
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1118 static OrthancPluginErrorCode GetLastChange(OrthancPluginDatabaseTransaction* transaction)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1119 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1120 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1121
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1122 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1123 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1124 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1125 t->GetBackend().GetLastChange(t->GetOutput());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1126 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1127 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1128 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1129 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1130
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1131
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1132 static OrthancPluginErrorCode GetLastChangeIndex(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1133 int64_t* target)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1134 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1135 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1136
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1137 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1138 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1139 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1140 *target = t->GetBackend().GetLastChangeIndex();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1141 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1142 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1143 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1144 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1145
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1146
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1147 static OrthancPluginErrorCode GetLastExportedResource(OrthancPluginDatabaseTransaction* transaction)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1148 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1149 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1150
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1151 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1152 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1153 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1154 t->GetBackend().GetLastExportedResource(t->GetOutput());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1155 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1156 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1157 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1158 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1159
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1160
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1161 static OrthancPluginErrorCode GetMainDicomTags(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1162 int64_t id)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1163 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1164 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1165
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1166 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1167 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1168 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1169 t->GetBackend().GetMainDicomTags(t->GetOutput(), id);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1170 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1171 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1172 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1173 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1174
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1175
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1176 static OrthancPluginErrorCode GetPublicId(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1177 int64_t id)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1178 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1179 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1180
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1181 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1182 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1183 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1184 t->GetOutput().AnswerString(t->GetBackend().GetPublicId(id));
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1185 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1186 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1187 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1188 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1189
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1190
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1191 static OrthancPluginErrorCode GetResourcesCount(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1192 uint64_t* target /* out */,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1193 OrthancPluginResourceType resourceType)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1194 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1195 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1196
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1197 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1198 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1199 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1200 *target = t->GetBackend().GetResourcesCount(resourceType);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1201 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1202 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1203 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1204 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1205
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1206
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1207 static OrthancPluginErrorCode GetResourceType(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1208 OrthancPluginResourceType* target /* out */,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1209 uint64_t resourceId)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1210 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1211 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1212
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1213 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1214 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1215 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1216 *target = t->GetBackend().GetResourceType(resourceId);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1217 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1218 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1219 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1220 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1221
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1222
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1223 static OrthancPluginErrorCode GetTotalCompressedSize(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1224 uint64_t* target /* out */)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1225 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1226 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1227
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1228 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1229 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1230 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1231 *target = t->GetBackend().GetTotalCompressedSize();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1232 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1233 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1234 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1235 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1236
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1237
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1238 static OrthancPluginErrorCode GetTotalUncompressedSize(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1239 uint64_t* target /* out */)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1240 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1241 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1242
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1243 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1244 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1245 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1246 *target = t->GetBackend().GetTotalUncompressedSize();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1247 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1248 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1249 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1250 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1251
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1252
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1253 static OrthancPluginErrorCode IsDiskSizeAbove(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1254 uint8_t* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1255 uint64_t threshold)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1256 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1257 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1258
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1259 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1260 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1261 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1262 bool above = (t->GetBackend().GetTotalCompressedSize() >= threshold);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1263 *target = (above ? 1 : 0);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1264 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1265 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1266 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1267 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1268
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1269
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1270 static OrthancPluginErrorCode IsExistingResource(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1271 uint8_t* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1272 int64_t resourceId)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1273 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1274 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1275
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1276 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1277 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1278 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1279 bool exists = t->GetBackend().IsExistingResource(resourceId);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1280 *target = (exists ? 1 : 0);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1281 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1282 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1283 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1284 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1285
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1286
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1287 static OrthancPluginErrorCode IsProtectedPatient(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1288 uint8_t* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1289 int64_t resourceId)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1290 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1291 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1292
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1293 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1294 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1295 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1296 bool isProtected = t->GetBackend().IsProtectedPatient(resourceId);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1297 *target = (isProtected ? 1 : 0);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1298 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1299 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1300 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1301 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1302
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1303
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1304 static OrthancPluginErrorCode ListAvailableAttachments(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1305 int64_t resourceId)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1306 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1307 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1308
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1309 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1310 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1311 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1312
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1313 std::list<int32_t> values;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1314 t->GetBackend().ListAvailableAttachments(values, resourceId);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1315 t->GetOutput().AnswerIntegers32(values);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1316 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1317 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1318 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1319 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1320
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1321
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1322 static OrthancPluginErrorCode LogChange(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1323 int32_t changeType,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1324 int64_t resourceId,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1325 OrthancPluginResourceType resourceType,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1326 const char* date)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1327 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1328 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1329
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1330 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1331 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1332 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1333 t->GetBackend().LogChange(changeType, resourceId, resourceType, date);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1334 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1335 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1336 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1337 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1338
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1339
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1340 static OrthancPluginErrorCode LogExportedResource(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1341 OrthancPluginResourceType resourceType,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1342 const char* publicId,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1343 const char* modality,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1344 const char* date,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1345 const char* patientId,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1346 const char* studyInstanceUid,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1347 const char* seriesInstanceUid,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1348 const char* sopInstanceUid)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1349 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1350 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1351
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1352 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1353 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1354 OrthancPluginExportedResource exported;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1355 exported.seq = 0;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1356 exported.resourceType = resourceType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1357 exported.publicId = publicId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1358 exported.modality = modality;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1359 exported.date = date;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1360 exported.patientId = patientId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1361 exported.studyInstanceUid = studyInstanceUid;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1362 exported.seriesInstanceUid = seriesInstanceUid;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1363 exported.sopInstanceUid = sopInstanceUid;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1364
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1365 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1366 t->GetBackend().LogExportedResource(exported);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1367 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1368 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1369 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1370 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1371
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1372
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1373 static OrthancPluginErrorCode LookupAttachment(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1374 int64_t resourceId,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1375 int32_t contentType)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1376 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1377 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1378
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1379 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1380 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1381 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1382 t->GetBackend().LookupAttachment(t->GetOutput(), resourceId, contentType);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1383 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1384 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1385 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1386 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1387
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1388
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1389 static OrthancPluginErrorCode LookupGlobalProperty(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1390 int32_t property)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1391 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1392 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1393
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1394 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1395 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1396 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1397
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1398 std::string s;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1399 if (t->GetBackend().LookupGlobalProperty(s, property))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1400 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1401 t->GetOutput().AnswerString(s);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1402 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1403
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1404 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1405 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1406 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1407 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1408
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1409
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1410 static OrthancPluginErrorCode LookupMetadata(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1411 int64_t id,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1412 int32_t metadata)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1413 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1414 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1415
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1416 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1417 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1418 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1419
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1420 std::string s;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1421 if (t->GetBackend().LookupMetadata(s, id, metadata))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1422 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1423 t->GetOutput().AnswerString(s);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1424 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1425
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1426 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1427 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1428 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1429 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1430
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1431
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1432 static void RegisterV3(IDatabaseBackend& database)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1433 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1434 OrthancPluginDatabaseBackendV3 params;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1435 memset(&params, 0, sizeof(params));
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1436
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1437 params.readAnswersCount = Output::ReadAnswersCount;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1438 params.readAnswerAttachment = Output::ReadAnswerAttachment;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1439 params.readAnswerChange = Output::ReadAnswerChange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1440 params.readAnswerDicomTag = Output::ReadAnswerDicomTag;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1441 params.readAnswerExportedResource = Output::ReadAnswerExportedResource;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1442 params.readAnswerInt32 = Output::ReadAnswerInt32;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1443 params.readAnswerInt64 = Output::ReadAnswerInt64;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1444 params.readAnswerMatchingResource = Output::ReadAnswerMatchingResource;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1445 params.readAnswerMetadata = Output::ReadAnswerMetadata;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1446 params.readAnswerString = Output::ReadAnswerString;
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1447
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1448 params.readEventsCount = Output::ReadEventsCount;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1449 params.readEvent = Output::ReadEvent;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1450
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1451 params.open = Open;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1452 params.close = Close;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1453 params.destructDatabase = DestructDatabase;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1454 params.getDatabaseVersion = GetDatabaseVersion;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1455 params.upgradeDatabase = UpgradeDatabase;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1456 params.startTransaction = StartTransaction;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1457 params.destructTransaction = DestructTransaction;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1458 params.rollback = Rollback;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1459 params.commit = Commit;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1460
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1461 params.addAttachment = AddAttachment;
208
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1462 params.clearChanges = ClearChanges;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1463 params.clearExportedResources = ClearExportedResources;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1464 params.clearMainDicomTags = ClearMainDicomTags;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1465 params.createInstance = CreateInstance;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1466 params.deleteAttachment = DeleteAttachment;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1467 params.deleteMetadata = DeleteMetadata;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1468 params.deleteResource = DeleteResource;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1469 params.getAllMetadata = GetAllMetadata;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1470 params.getAllPublicIds = GetAllPublicIds;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1471 params.getAllPublicIdsWithLimit = GetAllPublicIdsWithLimit;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1472 params.getChanges = GetChanges;
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1473 params.getChildrenInternalId = GetChildrenInternalId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1474 params.getChildrenMetadata = GetChildrenMetadata;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1475 params.getChildrenPublicId = GetChildrenPublicId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1476 params.getExportedResources = GetExportedResources;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1477 params.getLastChange = GetLastChange;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1478 params.getLastChangeIndex = GetLastChangeIndex;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1479 params.getLastExportedResource = GetLastExportedResource;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1480 params.getMainDicomTags = GetMainDicomTags;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1481 params.getPublicId = GetPublicId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1482 params.getResourcesCount = GetResourcesCount;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1483 params.getResourceType = GetResourceType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1484 params.getTotalCompressedSize = GetTotalCompressedSize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1485 params.getTotalUncompressedSize = GetTotalUncompressedSize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1486 params.isDiskSizeAbove = IsDiskSizeAbove;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1487 params.isExistingResource = IsExistingResource;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1488 params.isProtectedPatient = IsProtectedPatient;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1489 params.listAvailableAttachments = ListAvailableAttachments;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1490 params.logChange = LogChange;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1491 params.logExportedResource = LogExportedResource;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1492 params.lookupAttachment = LookupAttachment;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1493 params.lookupGlobalProperty = LookupGlobalProperty;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1494 params.lookupMetadata = LookupMetadata;
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1495
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1496 OrthancPluginContext* context = database.GetContext();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1497
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1498 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
1499 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1500 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
1501 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1502
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1503 database.SetOutputFactory(new Factory);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1504 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1505 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1506
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1507 # endif
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1508 #endif
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1509
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1510
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1511
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1512 extern "C"
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1513 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1514 ORTHANC_PLUGINS_API int32_t OrthancPluginInitialize(OrthancPluginContext* context)
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1515 {
28
c0cb5d2cd696 checks depending on Orthanc version
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
1516 if (!OrthancDatabases::InitializePlugin(context, "SQLite", true))
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1517 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1518 return -1;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1519 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1520
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1521 #if 0
62
eedd082355f9 fix for compatibility with simplified OrthancPluginCppWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 28
diff changeset
1522 OrthancPlugins::OrthancConfiguration configuration;
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1523
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1524 if (!configuration.IsSection("SQLite"))
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1525 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1526 LOG(WARNING) << "No available configuration for the SQLite index plugin";
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1527 return 0;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1528 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1529
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1530 OrthancPlugins::OrthancConfiguration sqlite;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1531 configuration.GetSection(sqlite, "SQLite");
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1532
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1533 bool enable;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1534 if (!sqlite.LookupBooleanValue(enable, "EnableIndex") ||
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1535 !enable)
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1536 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1537 LOG(WARNING) << "The SQLite index is currently disabled, set \"EnableIndex\" "
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1538 << "to \"true\" in the \"SQLite\" section of the configuration file of Orthanc";
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1539 return 0;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1540 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1541 #endif
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1542
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1543 try
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1544 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1545 /* Create the database back-end */
201
42990b2dd51b create IDatabaseBackendOutput only if needed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
1546 backend_.reset(new OrthancDatabases::SQLiteIndex(context, "index.db")); // TODO parameter
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1547
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1548 /* Register the SQLite index into Orthanc */
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1549
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1550 bool hasLoadedV3 = false;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1551
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1552 #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
1553 # 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
1554 if (OrthancPluginCheckVersionAdvanced(context, 1, 10, 0) == 1)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1555 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1556 RegisterV3(*backend_);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1557 hasLoadedV3 = true;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1558 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1559 # endif
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1560 #endif
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1561
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1562 if (!hasLoadedV3)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1563 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1564 OrthancDatabases::DatabaseBackendAdapterV2::Register(*backend_);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1565 }
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1566 }
2
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1567 catch (Orthanc::OrthancException& e)
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1568 {
2
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1569 LOG(ERROR) << e.What();
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1570 return -1;
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1571 }
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1572 catch (...)
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1573 {
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1574 LOG(ERROR) << "Native exception while initializing the plugin";
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1575 return -1;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1576 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1577
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1578 return 0;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1579 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1580
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1581
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1582 ORTHANC_PLUGINS_API void OrthancPluginFinalize()
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1583 {
2
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1584 LOG(WARNING) << "SQLite index is finalizing";
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1585 backend_.reset(NULL);
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1586 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1587
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1588
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1589 ORTHANC_PLUGINS_API const char* OrthancPluginGetName()
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1590 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1591 return "sqlite-index";
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1592 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1593
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1594
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1595 ORTHANC_PLUGINS_API const char* OrthancPluginGetVersion()
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1596 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1597 return ORTHANC_PLUGIN_VERSION;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1598 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1599 }