annotate SQLite/Plugins/IndexPlugin.cpp @ 210:a0c095a4ba7d

all the integration tests pass on SQLite
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 22 Mar 2021 19:36:43 +0100
parents 13a3863df7fa
children d74a92ac00ea
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 }
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
102
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
103 void Clear()
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
104 {
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
105 // We don't systematically clear all the vectors, in order to
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
106 // avoid spending unnecessary time
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
107
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
108 switch (answerType_)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
109 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
110 case _OrthancPluginDatabaseAnswerType_None:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
111 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
112
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
113 case _OrthancPluginDatabaseAnswerType_Attachment:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
114 attachments_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
115 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
116
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
117 case _OrthancPluginDatabaseAnswerType_Change:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
118 changes_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
119 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
120
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
121 case _OrthancPluginDatabaseAnswerType_DicomTag:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
122 tags_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
123 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
125 case _OrthancPluginDatabaseAnswerType_ExportedResource:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
126 exported_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
127 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
128
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
129 case _OrthancPluginDatabaseAnswerType_Int32:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
130 integers32_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
131 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
132
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
133 case _OrthancPluginDatabaseAnswerType_Int64:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
134 integers64_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
135 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
136
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
137 case _OrthancPluginDatabaseAnswerType_MatchingResource:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
138 matches_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
139 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
141 case _OrthancPluginDatabaseAnswerType_Metadata:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
142 metadata_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
143 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
144
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
145 case _OrthancPluginDatabaseAnswerType_String:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
146 stringAnswers_.clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
147 break;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
148
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
149 default:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
150 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
151 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
152
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
153 answerType_ = _OrthancPluginDatabaseAnswerType_None;
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
154 stringsStore_.clear();
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
155 events_.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
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
170 OrthancPluginErrorCode ReadAnswersCount(uint32_t& target) const
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
171 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
172 switch (answerType_)
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
173 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
174 case _OrthancPluginDatabaseAnswerType_None:
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
175 target = static_cast<uint32_t>(0);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
176 break;
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
177
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
178 case _OrthancPluginDatabaseAnswerType_Attachment:
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
179 target = static_cast<uint32_t>(attachments_.size());
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
180 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
181
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
182 case _OrthancPluginDatabaseAnswerType_Change:
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
183 target = static_cast<uint32_t>(changes_.size());
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
184 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
185
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
186 case _OrthancPluginDatabaseAnswerType_DicomTag:
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
187 target = static_cast<uint32_t>(tags_.size());
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
188 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
189
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
190 case _OrthancPluginDatabaseAnswerType_ExportedResource:
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
191 target = static_cast<uint32_t>(exported_.size());
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
192 break;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
193
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
194 case _OrthancPluginDatabaseAnswerType_Int32:
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
195 target = static_cast<uint32_t>(integers32_.size());
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
196 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
197
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
198 case _OrthancPluginDatabaseAnswerType_Int64:
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
199 target = static_cast<uint32_t>(integers64_.size());
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
200 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
201
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
202 case _OrthancPluginDatabaseAnswerType_MatchingResource:
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
203 target = static_cast<uint32_t>(matches_.size());
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
204 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
205
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
206 case _OrthancPluginDatabaseAnswerType_Metadata:
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
207 target = static_cast<uint32_t>(metadata_.size());
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
208 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
209
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
210 case _OrthancPluginDatabaseAnswerType_String:
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
211 target = static_cast<uint32_t>(stringAnswers_.size());
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
212 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
213
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
214 default:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
215 return OrthancPluginErrorCode_InternalError;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
216 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
217
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
218 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
219 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
220
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
221
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
222 OrthancPluginErrorCode ReadAnswerAttachment(OrthancPluginAttachment& target /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
223 uint32_t index) const
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
224 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
225 if (index < attachments_.size())
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
226 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
227 target = attachments_[index];
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
228 return OrthancPluginErrorCode_Success;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
229 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
230 else
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
231 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
232 return OrthancPluginErrorCode_ParameterOutOfRange;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
233 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
234 }
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
235
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
236
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
237 OrthancPluginErrorCode ReadAnswerChange(OrthancPluginChange& target /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
238 uint32_t index) const
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
239 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
240 if (index < changes_.size())
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
241 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
242 target = changes_[index];
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
243 return OrthancPluginErrorCode_Success;
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 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
246 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
247 return OrthancPluginErrorCode_ParameterOutOfRange;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
248 }
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
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
251
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
252 OrthancPluginErrorCode ReadAnswerDicomTag(uint16_t& group,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
253 uint16_t& element,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
254 const char*& value,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
255 uint32_t index) const
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
256 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
257 if (index < tags_.size())
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
258 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
259 const OrthancPluginDicomTag& tag = tags_[index];
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
260 group = tag.group;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
261 element = tag.element;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
262 value = tag.value;
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
263 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
264 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
265 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
266 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
267 return OrthancPluginErrorCode_ParameterOutOfRange;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
268 }
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
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
271
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
272 OrthancPluginErrorCode ReadAnswerExportedResource(OrthancPluginExportedResource& target /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
273 uint32_t index) const
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
274 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
275 if (index < exported_.size())
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
276 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
277 target = exported_[index];
206
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
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
287 OrthancPluginErrorCode ReadAnswerInt32(int32_t& target,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
288 uint32_t index) const
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
289 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
290 if (index < integers32_.size())
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
291 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
292 target = integers32_[index];
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
293 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
294 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
295 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
296 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
297 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
298 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
299 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
300
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
301
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
302 OrthancPluginErrorCode ReadAnswerInt64(int64_t& target,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
303 uint32_t index) const
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
304 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
305 if (index < integers64_.size())
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
306 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
307 target = integers64_[index];
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
308 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
309 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
310 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
311 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
312 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
313 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
314 }
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
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
317 OrthancPluginErrorCode ReadAnswerMatchingResource(OrthancPluginMatchingResource& target,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
318 uint32_t index) const
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
319 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
320 if (index < matches_.size())
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
321 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
322 target = matches_[index];
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
323 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
324 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
325 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
326 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
327 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
328 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
329 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
330
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
331
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
332 OrthancPluginErrorCode ReadAnswerMetadata(int32_t& metadata,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
333 const char*& value,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
334 uint32_t index) const
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
335 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
336 if (index < metadata_.size())
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
337 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
338 const Metadata& tmp = metadata_[index];
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
339 metadata = tmp.metadata;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
340 value = tmp.value;
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
341 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
342 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
343 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
344 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
345 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
346 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
347 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
348
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
349
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
350 OrthancPluginErrorCode ReadAnswerString(const char*& target,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
351 uint32_t index) const
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
352 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
353 if (index < stringAnswers_.size())
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
354 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
355 target = stringAnswers_[index].c_str();
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
356 return OrthancPluginErrorCode_Success;
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 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
359 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
360 return OrthancPluginErrorCode_ParameterOutOfRange;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
361 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
362 }
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
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
365 OrthancPluginErrorCode ReadEventsCount(uint32_t& target /* out */) const
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
366 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
367 target = static_cast<uint32_t>(events_.size());
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
368 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
369 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
370
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
371
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
372 OrthancPluginErrorCode ReadEvent(OrthancPluginDatabaseEvent& event /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
373 uint32_t index) const
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
374 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
375 if (index < events_.size())
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
376 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
377 event = events_[index];
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
378 return OrthancPluginErrorCode_Success;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
379 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
380 else
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
381 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
382 return OrthancPluginErrorCode_ParameterOutOfRange;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
383 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
384 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
385
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
386
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
387 virtual void SignalDeletedAttachment(const std::string& uuid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
388 int32_t contentType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
389 uint64_t uncompressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
390 const std::string& uncompressedHash,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
391 int32_t compressionType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
392 uint64_t compressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
393 const std::string& compressedHash) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
394 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
395 OrthancPluginDatabaseEvent event;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
396 event.type = OrthancPluginDatabaseEventType_DeletedAttachment;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
397 event.content.attachment.uuid = StoreString(uuid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
398 event.content.attachment.contentType = contentType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
399 event.content.attachment.uncompressedSize = uncompressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
400 event.content.attachment.uncompressedHash = StoreString(uncompressedHash);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
401 event.content.attachment.compressionType = compressionType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
402 event.content.attachment.compressedSize = compressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
403 event.content.attachment.compressedHash = StoreString(compressedHash);
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 events_.push_back(event);
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
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
408
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
409 virtual void SignalDeletedResource(const std::string& publicId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
410 OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
411 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
412 OrthancPluginDatabaseEvent event;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
413 event.type = OrthancPluginDatabaseEventType_DeletedResource;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
414 event.content.resource.level = resourceType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
415 event.content.resource.publicId = StoreString(publicId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
416
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
417 events_.push_back(event);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
418 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
419
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
420
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
421 virtual void SignalRemainingAncestor(const std::string& ancestorId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
422 OrthancPluginResourceType ancestorType) ORTHANC_OVERRIDE
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 OrthancPluginDatabaseEvent event;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
425 event.type = OrthancPluginDatabaseEventType_RemainingAncestor;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
426 event.content.resource.level = ancestorType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
427 event.content.resource.publicId = StoreString(ancestorId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
428
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
429 events_.push_back(event);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
430 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
431
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 virtual void AnswerAttachment(const std::string& uuid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
434 int32_t contentType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
435 uint64_t uncompressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
436 const std::string& uncompressedHash,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
437 int32_t compressionType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
438 uint64_t compressedSize,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
439 const std::string& compressedHash) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
440 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
441 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Attachment);
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 OrthancPluginAttachment attachment;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
444 attachment.uuid = StoreString(uuid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
445 attachment.contentType = contentType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
446 attachment.uncompressedSize = uncompressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
447 attachment.uncompressedHash = StoreString(uncompressedHash);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
448 attachment.compressionType = compressionType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
449 attachment.compressedSize = compressedSize;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
450 attachment.compressedHash = StoreString(compressedHash);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
451
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
452 attachments_.push_back(attachment);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
453 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
454
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
455
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
456 virtual void AnswerChange(int64_t seq,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
457 int32_t changeType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
458 OrthancPluginResourceType resourceType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
459 const std::string& publicId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
460 const std::string& date) 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 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Change);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
463
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
464 OrthancPluginChange change;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
465 change.seq = seq;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
466 change.changeType = changeType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
467 change.resourceType = resourceType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
468 change.publicId = StoreString(publicId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
469 change.date = StoreString(date);
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 changes_.push_back(change);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
472 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
473
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
474
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
475 virtual void AnswerDicomTag(uint16_t group,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
476 uint16_t element,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
477 const std::string& value) 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_DicomTag);
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 OrthancPluginDicomTag tag;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
482 tag.group = group;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
483 tag.element = element;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
484 tag.value = StoreString(value);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
485
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
486 tags_.push_back(tag);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
487 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
488
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 virtual void AnswerExportedResource(int64_t seq,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
491 OrthancPluginResourceType resourceType,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
492 const std::string& publicId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
493 const std::string& modality,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
494 const std::string& date,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
495 const std::string& patientId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
496 const std::string& studyInstanceUid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
497 const std::string& seriesInstanceUid,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
498 const std::string& sopInstanceUid) 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_ExportedResource);
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 OrthancPluginExportedResource exported;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
503 exported.seq = seq;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
504 exported.resourceType = resourceType;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
505 exported.publicId = StoreString(publicId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
506 exported.modality = StoreString(modality);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
507 exported.date = StoreString(date);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
508 exported.patientId = StoreString(patientId);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
509 exported.studyInstanceUid = StoreString(studyInstanceUid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
510 exported.seriesInstanceUid = StoreString(seriesInstanceUid);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
511 exported.sopInstanceUid = StoreString(sopInstanceUid);
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 exported_.push_back(exported);
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
514 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
515
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 virtual void AnswerMatchingResource(const std::string& resourceId) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
518 {
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
519 SetupAnswerType(_OrthancPluginDatabaseAnswerType_MatchingResource);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
520
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
521 OrthancPluginMatchingResource match;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
522 match.resourceId = StoreString(resourceId);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
523 match.someInstanceId = NULL;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
524
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
525 matches_.push_back(match);
206
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
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
529 virtual void AnswerMatchingResource(const std::string& resourceId,
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
530 const std::string& someInstanceId) ORTHANC_OVERRIDE
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
531 {
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
532 SetupAnswerType(_OrthancPluginDatabaseAnswerType_MatchingResource);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
533
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
534 OrthancPluginMatchingResource match;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
535 match.resourceId = StoreString(resourceId);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
536 match.someInstanceId = StoreString(someInstanceId);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
537
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
538 matches_.push_back(match);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
539 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
540
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
541
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
542 void AnswerIntegers32(const std::list<int32_t>& values)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
543 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
544 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Int32);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
545
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
546 integers32_.reserve(values.size());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
547 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
548 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
549
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
550
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
551 void AnswerIntegers64(const std::list<int64_t>& values)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
552 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
553 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Int64);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
554
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
555 integers64_.reserve(values.size());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
556 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
557 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
558
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
559
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
560 void AnswerInteger64(int64_t value)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
561 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
562 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Int64);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
563
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
564 integers64_.resize(1);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
565 integers64_[0] = value;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
566 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
567
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
568
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
569 void AnswerMetadata(int32_t metadata,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
570 const std::string& value)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
571 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
572 SetupAnswerType(_OrthancPluginDatabaseAnswerType_Metadata);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
573
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
574 Metadata tmp;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
575 tmp.metadata = metadata;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
576 tmp.value = StoreString(value);
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 metadata_.push_back(tmp);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
579 }
208
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
580
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
581
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
582 void AnswerStrings(const std::list<std::string>& values)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
583 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
584 SetupAnswerType(_OrthancPluginDatabaseAnswerType_String);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
585
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
586 stringAnswers_.reserve(values.size());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
587 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
588 }
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
589
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
590
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
591 void AnswerString(const std::string& value)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
592 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
593 SetupAnswerType(_OrthancPluginDatabaseAnswerType_String);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
594
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
595 if (stringAnswers_.empty())
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
596 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
597 stringAnswers_.push_back(value);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
598 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
599 else
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
600 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
601 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
602 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
603 }
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
604 };
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
605
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
606
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
607 class Factory : public IDatabaseBackendOutput::IFactory
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
608 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
609 public:
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
610 Factory()
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
611 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
612 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
613
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
614 virtual IDatabaseBackendOutput* CreateOutput()
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
615 {
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
616 return new Output;
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
617 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
618 };
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
619
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
620
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
621 class Transaction : public boost::noncopyable
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
622 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
623 private:
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
624 boost::mutex::scoped_lock lock_; // TODO - REMOVE
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
625 IndexBackend& backend_;
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
626 std::unique_ptr<Output> output_;
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
627
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
628 static boost::mutex& GetMutex() // TODO - REMOVE
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
629 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
630 static boost::mutex mutex_;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
631 return mutex_;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
632 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
633
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
634 public:
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
635 Transaction(IndexBackend& backend) :
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
636 lock_(GetMutex()),
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
637 backend_(backend),
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
638 output_(new Output)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
639 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
640 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
641
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
642 ~Transaction()
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
643 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
644 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
645
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
646 IndexBackend& GetBackend() const
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
647 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
648 return backend_;
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
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
651 Output& GetOutput() const
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
652 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
653 return *output_;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
654 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
655
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
656 OrthancPluginContext* GetContext() const
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
657 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
658 return backend_.GetContext();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
659 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
660 };
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
661
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
662
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
663 static OrthancPluginErrorCode ReadAnswersCount(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
664 uint32_t* target /* out */)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
665 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
666 assert(target != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
667 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
668 return that.GetOutput().ReadAnswersCount(*target);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
669 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
670
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
671
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
672 static OrthancPluginErrorCode ReadAnswerAttachment(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
673 OrthancPluginAttachment* target /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
674 uint32_t index)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
675 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
676 assert(target != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
677 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
678 return that.GetOutput().ReadAnswerAttachment(*target, index);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
679 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
680
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
681
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
682 static OrthancPluginErrorCode ReadAnswerChange(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
683 OrthancPluginChange* target /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
684 uint32_t index)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
685 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
686 assert(target != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
687 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
688 return that.GetOutput().ReadAnswerChange(*target, index);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
689 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
690
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
691
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
692 static OrthancPluginErrorCode ReadAnswerDicomTag(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
693 uint16_t* group,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
694 uint16_t* element,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
695 const char** value,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
696 uint32_t index)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
697 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
698 assert(group != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
699 assert(element != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
700 assert(value != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
701 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
702 return that.GetOutput().ReadAnswerDicomTag(*group, *element, *value, index);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
703 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
704
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
705
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
706 static OrthancPluginErrorCode ReadAnswerExportedResource(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
707 OrthancPluginExportedResource* target /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
708 uint32_t index)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
709 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
710 assert(target != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
711 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
712 return that.GetOutput().ReadAnswerExportedResource(*target, index);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
713 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
714
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
715
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
716 static OrthancPluginErrorCode ReadAnswerInt32(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
717 int32_t* target,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
718 uint32_t index)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
719 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
720 assert(target != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
721 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
722 return that.GetOutput().ReadAnswerInt32(*target, index);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
723 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
724
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
725
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
726 static OrthancPluginErrorCode ReadAnswerInt64(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
727 int64_t* target,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
728 uint32_t index)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
729 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
730 assert(target != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
731 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
732 return that.GetOutput().ReadAnswerInt64(*target, index);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
733 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
734
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
735
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
736 static OrthancPluginErrorCode ReadAnswerMatchingResource(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
737 OrthancPluginMatchingResource* target,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
738 uint32_t index)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
739 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
740 assert(target != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
741 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
742 return that.GetOutput().ReadAnswerMatchingResource(*target, index);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
743 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
744
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
745
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
746 static OrthancPluginErrorCode ReadAnswerMetadata(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
747 int32_t* metadata,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
748 const char** value,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
749 uint32_t index)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
750 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
751 assert(metadata != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
752 assert(value != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
753 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
754 return that.GetOutput().ReadAnswerMetadata(*metadata, *value, index);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
755 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
756
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
757
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
758 static OrthancPluginErrorCode ReadAnswerString(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
759 const char** target,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
760 uint32_t index)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
761 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
762 assert(target != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
763 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
764 return that.GetOutput().ReadAnswerString(*target, index);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
765 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
766
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
767
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
768 static OrthancPluginErrorCode ReadEventsCount(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
769 uint32_t* target /* out */)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
770 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
771 assert(target != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
772 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
773 return that.GetOutput().ReadEventsCount(*target);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
774 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
775
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
776
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
777 static OrthancPluginErrorCode ReadEvent(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
778 OrthancPluginDatabaseEvent* event /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
779 uint32_t index)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
780 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
781 assert(event != NULL);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
782 const Transaction& that = *reinterpret_cast<const Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
783 return that.GetOutput().ReadEvent(*event, index);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
784 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
785
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
786
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
787 static OrthancPluginErrorCode Open(void* database)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
788 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
789 IndexBackend* backend = reinterpret_cast<IndexBackend*>(database);
207
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 try
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 backend->Open();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
794 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
795 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
796 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
797 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
798
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 static OrthancPluginErrorCode Close(void* database)
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
801 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
802 IndexBackend* backend = reinterpret_cast<IndexBackend*>(database);
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
803
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
804 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
805 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
806 backend->Close();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
807 return OrthancPluginErrorCode_Success;
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 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
810 }
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
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
813 static OrthancPluginErrorCode DestructDatabase(void* database)
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 // 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
816 if (database == NULL)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
817 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
818 return OrthancPluginErrorCode_InternalError;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
819 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
820 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
821 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
822 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
823 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
824 }
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
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
827 static OrthancPluginErrorCode GetDatabaseVersion(void* database,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
828 uint32_t* version)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
829 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
830 IndexBackend* backend = reinterpret_cast<IndexBackend*>(database);
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
831
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
832 try
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 *version = backend->GetDatabaseVersion();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
835 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
836 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
837 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
838 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
839
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
840
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
841 static OrthancPluginErrorCode UpgradeDatabase(void* database,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
842 OrthancPluginStorageArea* storageArea,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
843 uint32_t targetVersion)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
844 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
845 IndexBackend* backend = reinterpret_cast<IndexBackend*>(database);
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
846
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
847 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
848 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
849 backend->UpgradeDatabase(targetVersion, storageArea);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
850 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
851 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
852 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
853 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
854
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
855
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
856 static OrthancPluginErrorCode StartTransaction(void* database,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
857 OrthancPluginDatabaseTransaction** target /* out */,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
858 OrthancPluginDatabaseTransactionType type)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
859 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
860 IndexBackend* backend = reinterpret_cast<IndexBackend*>(database);
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
861
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
862 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
863 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
864 std::unique_ptr<Transaction> transaction(new Transaction(*backend));
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
865
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
866 switch (type)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
867 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
868 case OrthancPluginDatabaseTransactionType_ReadOnly:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
869 backend->StartTransaction(TransactionType_ReadOnly);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
870 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
871
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
872 case OrthancPluginDatabaseTransactionType_ReadWrite:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
873 backend->StartTransaction(TransactionType_ReadWrite);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
874 break;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
875
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
876 default:
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
877 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
878 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
879
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
880 *target = reinterpret_cast<OrthancPluginDatabaseTransaction*>(transaction.release());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
881
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
882 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
883 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
884 ORTHANC_PLUGINS_DATABASE_CATCH(backend->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
885 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
886
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
887
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
888 static OrthancPluginErrorCode DestructTransaction(OrthancPluginDatabaseTransaction* transaction)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
889 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
890 if (transaction == NULL)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
891 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
892 return OrthancPluginErrorCode_NullPointer;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
893 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
894 else
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
895 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
896 delete reinterpret_cast<Transaction*>(transaction);
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
897 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
898 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
899 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
900
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
901
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
902 static OrthancPluginErrorCode Rollback(OrthancPluginDatabaseTransaction* transaction)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
903 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
904 Transaction* t = reinterpret_cast<Transaction*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
905
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
906 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
907 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
908 t->GetOutput().Clear();
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
909 t->GetBackend().RollbackTransaction();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
910 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
911 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
912 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
913 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
914
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
915
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
916 static OrthancPluginErrorCode Commit(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
917 int64_t fileSizeDelta /* TODO - not used? */)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
918 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
919 Transaction* t = reinterpret_cast<Transaction*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
920
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
921 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
922 {
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
923 t->GetOutput().Clear();
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
924 t->GetBackend().CommitTransaction();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
925 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
926 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
927 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
928 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
929
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
930
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
931 static OrthancPluginErrorCode AddAttachment(OrthancPluginDatabaseTransaction* transaction,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
932 int64_t id,
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
933 const OrthancPluginAttachment* attachment)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
934 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
935 Transaction* t = reinterpret_cast<Transaction*>(transaction);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
936
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
937 try
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
938 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
939 t->GetOutput().Clear();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
940 t->GetBackend().AddAttachment(id, *attachment);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
941 return OrthancPluginErrorCode_Success;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
942 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
943 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
944 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
945
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
946
208
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
947 static OrthancPluginErrorCode ClearChanges(OrthancPluginDatabaseTransaction* transaction)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
948 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
949 Transaction* t = reinterpret_cast<Transaction*>(transaction);
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 try
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 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
954 t->GetBackend().ClearChanges();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
955 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
956 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
957 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
958 }
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
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
961 static OrthancPluginErrorCode ClearExportedResources(OrthancPluginDatabaseTransaction* transaction)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
962 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
963 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
964
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
965 try
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 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
968 t->GetBackend().ClearExportedResources();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
969 return OrthancPluginErrorCode_Success;
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 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
972 }
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
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
975 static OrthancPluginErrorCode ClearMainDicomTags(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
976 int64_t resourceId)
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 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
979
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
980 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
981 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
982 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
983 t->GetBackend().ClearMainDicomTags(resourceId);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
984 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
985 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
986 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
987 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
988
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
989
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
990 static OrthancPluginErrorCode CreateInstance(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
991 OrthancPluginCreateInstanceResult* target /* out */,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
992 const char* hashPatient,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
993 const char* hashStudy,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
994 const char* hashSeries,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
995 const char* hashInstance)
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 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
998
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
999 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1000 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1001 t->GetOutput().Clear();
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1002
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1003 if (t->GetBackend().HasCreateInstance())
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1004 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1005 t->GetBackend().CreateInstance(*target, hashPatient, hashStudy, hashSeries, hashInstance);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1006 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1007 else
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1008 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1009 t->GetBackend().CreateInstanceGeneric(*target, hashPatient, hashStudy, hashSeries, hashInstance);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1010 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1011
208
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 DeleteAttachment(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1019 int64_t id,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1020 int32_t contentType)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1021 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1022 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1023
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1024 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1025 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1026 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1027 t->GetBackend().DeleteAttachment(t->GetOutput(), id, contentType);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1028 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1029 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1030 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1031 }
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
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1034 static OrthancPluginErrorCode DeleteMetadata(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1035 int64_t id,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1036 int32_t metadataType)
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 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1039
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1040 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1041 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1042 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1043 t->GetBackend().DeleteMetadata(id, metadataType);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1044 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1045 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1046 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1047 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1048
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1049
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1050 static OrthancPluginErrorCode DeleteResource(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1051 int64_t id)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1052 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1053 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1054
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1055 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1056 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1057 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1058 t->GetBackend().DeleteResource(t->GetOutput(), id);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1059 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1060 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1061 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1062 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1063
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1064
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1065 static OrthancPluginErrorCode GetAllMetadata(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1066 int64_t id)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1067 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1068 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1069
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1070 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1071 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1072 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1073
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1074 std::map<int32_t, std::string> values;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1075 t->GetBackend().GetAllMetadata(values, id);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1076
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1077 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
1078 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1079 t->GetOutput().AnswerMetadata(it->first, it->second);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1080 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1081
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1082 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1083 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1084 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1085 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1086
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1087
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1088 static OrthancPluginErrorCode GetAllPublicIds(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1089 OrthancPluginResourceType resourceType)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1090 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1091 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1092
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1093 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1094 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1095 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1096
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1097 std::list<std::string> values;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1098 t->GetBackend().GetAllPublicIds(values, resourceType);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1099 t->GetOutput().AnswerStrings(values);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1100
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1101 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1102 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1103 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1104 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1105
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1106
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1107 static OrthancPluginErrorCode GetAllPublicIdsWithLimit(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1108 OrthancPluginResourceType resourceType,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1109 uint64_t since,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1110 uint64_t limit)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1111 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1112 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1113
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1114 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1115 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1116 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1117
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1118 std::list<std::string> values;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1119 t->GetBackend().GetAllPublicIds(values, resourceType, since, limit);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1120 t->GetOutput().AnswerStrings(values);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1121
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1122 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1123 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1124 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1125 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1126
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1127
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1128 static OrthancPluginErrorCode GetChanges(OrthancPluginDatabaseTransaction* transaction,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1129 uint8_t* targetDone /* out */,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1130 int64_t since,
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1131 uint32_t maxResults)
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1132 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1133 Transaction* t = reinterpret_cast<Transaction*>(transaction);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1134
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1135 try
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1136 {
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1137 t->GetOutput().Clear();
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1138
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1139 bool done;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1140 t->GetBackend().GetChanges(t->GetOutput(), done, since, maxResults);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1141 *targetDone = (done ? 1 : 0);
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1142
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1143 return OrthancPluginErrorCode_Success;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1144 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1145 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1146 }
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1147
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1148
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1149 static OrthancPluginErrorCode GetChildrenInternalId(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1150 int64_t id)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1151 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1152 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1153
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1154 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1155 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1156 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1157
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1158 std::list<int64_t> values;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1159 t->GetBackend().GetChildrenInternalId(values, id);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1160 t->GetOutput().AnswerIntegers64(values);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1161
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1162 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1163 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1164 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1165 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1166
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1167
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1168 static OrthancPluginErrorCode GetChildrenMetadata(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1169 int64_t resourceId,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1170 int32_t metadata)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1171 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1172 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1173
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1174 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1175 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1176 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1177
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1178 std::list<std::string> values;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1179 t->GetBackend().GetChildrenMetadata(values, resourceId, metadata);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1180 t->GetOutput().AnswerStrings(values);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1181
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1182 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1183 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1184 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1185 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1186
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1187
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1188 static OrthancPluginErrorCode GetChildrenPublicId(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1189 int64_t id)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1190 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1191 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1192
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1193 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1194 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1195 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1196
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1197 std::list<std::string> values;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1198 t->GetBackend().GetChildrenPublicId(values, id);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1199 t->GetOutput().AnswerStrings(values);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1200
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 GetExportedResources(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1208 uint8_t* targetDone /* out */,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1209 int64_t since,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1210 uint32_t maxResults)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1211 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1212 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1213
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1214 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1215 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1216 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1217
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1218 bool done;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1219 t->GetBackend().GetExportedResources(t->GetOutput(), done, since, maxResults);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1220 *targetDone = (done ? 1 : 0);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1221
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1222 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1223 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1224 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1225 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1226
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1227
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1228 static OrthancPluginErrorCode GetLastChange(OrthancPluginDatabaseTransaction* transaction)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1229 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1230 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1231
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1232 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1233 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1234 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1235 t->GetBackend().GetLastChange(t->GetOutput());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1236 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1237 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1238 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1239 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1240
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1241
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1242 static OrthancPluginErrorCode GetLastChangeIndex(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1243 int64_t* target)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1244 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1245 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1246
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1247 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1248 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1249 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1250 *target = t->GetBackend().GetLastChangeIndex();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1251 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1252 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1253 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1254 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1255
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1256
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1257 static OrthancPluginErrorCode GetLastExportedResource(OrthancPluginDatabaseTransaction* transaction)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1258 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1259 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1260
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1261 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1262 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1263 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1264 t->GetBackend().GetLastExportedResource(t->GetOutput());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1265 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1266 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1267 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1271 static OrthancPluginErrorCode GetMainDicomTags(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1272 int64_t id)
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 t->GetBackend().GetMainDicomTags(t->GetOutput(), id);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1280 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1281 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1282 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1283 }
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 static OrthancPluginErrorCode GetPublicId(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1287 int64_t id)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1288 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1289 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1290
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1291 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1292 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1293 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1294 t->GetOutput().AnswerString(t->GetBackend().GetPublicId(id));
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1295 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1296 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1297 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1298 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1299
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1300
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1301 static OrthancPluginErrorCode GetResourcesCount(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1302 uint64_t* target /* out */,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1303 OrthancPluginResourceType resourceType)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1304 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1305 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1306
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1307 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1308 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1309 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1310 *target = t->GetBackend().GetResourcesCount(resourceType);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1311 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1312 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1313 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1314 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1315
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1316
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1317 static OrthancPluginErrorCode GetResourceType(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1318 OrthancPluginResourceType* target /* out */,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1319 uint64_t resourceId)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1320 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1321 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1322
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1323 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1324 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1325 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1326 *target = t->GetBackend().GetResourceType(resourceId);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1327 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1328 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1329 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1330 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1331
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1332
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1333 static OrthancPluginErrorCode GetTotalCompressedSize(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1334 uint64_t* target /* out */)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1335 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1336 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1337
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1338 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1339 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1340 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1341 *target = t->GetBackend().GetTotalCompressedSize();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1342 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1343 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1344 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1345 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1346
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1347
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1348 static OrthancPluginErrorCode GetTotalUncompressedSize(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1349 uint64_t* target /* out */)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1350 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1351 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1352
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1353 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1354 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1355 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1356 *target = t->GetBackend().GetTotalUncompressedSize();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1357 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1358 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1359 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1360 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1361
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1362
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1363 static OrthancPluginErrorCode IsDiskSizeAbove(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1364 uint8_t* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1365 uint64_t threshold)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1366 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1367 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1368
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1369 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1370 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1371 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1372 bool above = (t->GetBackend().GetTotalCompressedSize() >= threshold);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1373 *target = (above ? 1 : 0);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1374 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1375 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1376 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1377 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1378
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1379
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1380 static OrthancPluginErrorCode IsExistingResource(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1381 uint8_t* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1382 int64_t resourceId)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1383 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1384 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1385
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1386 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1387 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1388 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1389 bool exists = t->GetBackend().IsExistingResource(resourceId);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1390 *target = (exists ? 1 : 0);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1391 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1392 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1393 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1394 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1395
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1396
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1397 static OrthancPluginErrorCode IsProtectedPatient(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1398 uint8_t* target,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1399 int64_t resourceId)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1400 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1401 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1402
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1403 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1404 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1405 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1406 bool isProtected = t->GetBackend().IsProtectedPatient(resourceId);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1407 *target = (isProtected ? 1 : 0);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1408 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1409 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1410 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1411 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1412
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1413
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1414 static OrthancPluginErrorCode ListAvailableAttachments(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1415 int64_t resourceId)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1416 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1417 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1418
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1419 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1420 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1421 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1422
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1423 std::list<int32_t> values;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1424 t->GetBackend().ListAvailableAttachments(values, resourceId);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1425 t->GetOutput().AnswerIntegers32(values);
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1431
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1432 static OrthancPluginErrorCode LogChange(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1433 int32_t changeType,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1434 int64_t resourceId,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1435 OrthancPluginResourceType resourceType,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1436 const char* date)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1437 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1438 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1439
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1440 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1441 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1442 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1443 t->GetBackend().LogChange(changeType, resourceId, resourceType, date);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1444 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1445 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1446 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1447 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1448
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1449
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1450 static OrthancPluginErrorCode LogExportedResource(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1451 OrthancPluginResourceType resourceType,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1452 const char* publicId,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1453 const char* modality,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1454 const char* date,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1455 const char* patientId,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1456 const char* studyInstanceUid,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1457 const char* seriesInstanceUid,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1458 const char* sopInstanceUid)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1459 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1460 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1461
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1462 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1463 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1464 OrthancPluginExportedResource exported;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1465 exported.seq = 0;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1466 exported.resourceType = resourceType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1467 exported.publicId = publicId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1468 exported.modality = modality;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1469 exported.date = date;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1470 exported.patientId = patientId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1471 exported.studyInstanceUid = studyInstanceUid;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1472 exported.seriesInstanceUid = seriesInstanceUid;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1473 exported.sopInstanceUid = sopInstanceUid;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1474
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1475 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1476 t->GetBackend().LogExportedResource(exported);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1477 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1478 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1479 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1480 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1481
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1482
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1483 static OrthancPluginErrorCode LookupAttachment(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1484 int64_t resourceId,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1485 int32_t contentType)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1486 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1487 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1488
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1489 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1490 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1491 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1492 t->GetBackend().LookupAttachment(t->GetOutput(), resourceId, contentType);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1493 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1494 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1495 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1496 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1497
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1498
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1499 static OrthancPluginErrorCode LookupGlobalProperty(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1500 int32_t property)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1501 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1502 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1503
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1504 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1505 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1506 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1507
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1508 std::string s;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1509 if (t->GetBackend().LookupGlobalProperty(s, property))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1510 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1511 t->GetOutput().AnswerString(s);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1512 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1513
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1514 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1515 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1516 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1517 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1518
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1519
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1520 static OrthancPluginErrorCode LookupMetadata(OrthancPluginDatabaseTransaction* transaction,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1521 int64_t id,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1522 int32_t metadata)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1523 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1524 Transaction* t = reinterpret_cast<Transaction*>(transaction);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1525
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1526 try
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1527 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1528 t->GetOutput().Clear();
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1529
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1530 std::string s;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1531 if (t->GetBackend().LookupMetadata(s, id, metadata))
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1532 {
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1533 t->GetOutput().AnswerString(s);
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1534 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1535
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1536 return OrthancPluginErrorCode_Success;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1537 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1538 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1539 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1540
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1541
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1542 static OrthancPluginErrorCode LookupParent(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1543 int64_t id)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1544 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1545 Transaction* t = reinterpret_cast<Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1546
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1547 try
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1548 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1549 t->GetOutput().Clear();
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1550
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1551 int64_t parentId;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1552 if (t->GetBackend().LookupParent(parentId, id))
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1553 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1554 t->GetOutput().AnswerInteger64(parentId);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1555 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1556
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1557 return OrthancPluginErrorCode_Success;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1558 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1559 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1560 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1561
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1562
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1563 static OrthancPluginErrorCode LookupResource(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1564 uint8_t* isExisting /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1565 int64_t* id /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1566 OrthancPluginResourceType* type /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1567 const char* publicId)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1568 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1569 Transaction* t = reinterpret_cast<Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1570
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1571 try
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1572 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1573 t->GetOutput().Clear();
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1574
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1575 if (t->GetBackend().LookupResource(*id, *type, publicId))
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1576 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1577 *isExisting = 1;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1578 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1579 else
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1580 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1581 *isExisting = 0;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1582 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1583
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1584 return OrthancPluginErrorCode_Success;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1585 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1586 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1587 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1588
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1589
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1590 static OrthancPluginErrorCode LookupResources(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1591 uint32_t constraintsCount,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1592 const OrthancPluginDatabaseConstraint* constraints,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1593 OrthancPluginResourceType queryLevel,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1594 uint32_t limit,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1595 uint8_t requestSomeInstanceId)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1596 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1597 Transaction* t = reinterpret_cast<Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1598
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1599 try
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1600 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1601 t->GetOutput().Clear();
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1602
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1603 std::vector<Orthanc::DatabaseConstraint> lookup;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1604 lookup.reserve(constraintsCount);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1605
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1606 for (uint32_t i = 0; i < constraintsCount; i++)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1607 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1608 lookup.push_back(Orthanc::DatabaseConstraint(constraints[i]));
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1609 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1610
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1611 t->GetBackend().LookupResources(t->GetOutput(), lookup, queryLevel, limit, (requestSomeInstanceId != 0));
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1612 return OrthancPluginErrorCode_Success;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1613 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1614 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1615 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1616
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1617
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1618 static OrthancPluginErrorCode LookupResourceAndParent(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1619 uint8_t* isExisting /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1620 int64_t* id /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1621 OrthancPluginResourceType* type /* out */,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1622 const char* publicId)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1623 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1624 Transaction* t = reinterpret_cast<Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1625
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1626 try
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1627 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1628 t->GetOutput().Clear();
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1629
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1630 std::string parent;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1631 if (t->GetBackend().LookupResourceAndParent(*id, *type, parent, publicId))
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1632 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1633 *isExisting = 1;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1634
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1635 if (!parent.empty())
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1636 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1637 t->GetOutput().AnswerString(parent);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1638 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1639 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1640 else
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1641 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1642 *isExisting = 0;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1643 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1644
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1645 return OrthancPluginErrorCode_Success;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1646 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1647 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1648 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1649
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1650
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1651 static OrthancPluginErrorCode SelectPatientToRecycle(OrthancPluginDatabaseTransaction* transaction)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1652 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1653 Transaction* t = reinterpret_cast<Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1654
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1655 try
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1656 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1657 t->GetOutput().Clear();
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1658
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1659 int64_t id;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1660 if (t->GetBackend().SelectPatientToRecycle(id))
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1661 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1662 t->GetOutput().AnswerInteger64(id);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1663 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1664
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1665 return OrthancPluginErrorCode_Success;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1666 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1667 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1668 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1669
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1670
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1671 static OrthancPluginErrorCode SelectPatientToRecycle2(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1672 int64_t patientIdToAvoid)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1673 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1674 Transaction* t = reinterpret_cast<Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1675
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1676 try
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1677 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1678 t->GetOutput().Clear();
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1679
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1680 int64_t id;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1681 if (t->GetBackend().SelectPatientToRecycle(id, patientIdToAvoid))
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1682 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1683 t->GetOutput().AnswerInteger64(id);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1684 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1685
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1686 return OrthancPluginErrorCode_Success;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1687 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1688 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1689 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1690
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1691
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1692 static OrthancPluginErrorCode SetGlobalProperty(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1693 int32_t property,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1694 const char* value)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1695 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1696 Transaction* t = reinterpret_cast<Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1697
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1698 try
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1699 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1700 t->GetOutput().Clear();
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1701 t->GetBackend().SetGlobalProperty(property, value);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1702 return OrthancPluginErrorCode_Success;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1703 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1704 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1705 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1706
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1707
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1708 static OrthancPluginErrorCode SetMetadata(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1709 int64_t id,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1710 int32_t metadata,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1711 const char* value)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1712 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1713 Transaction* t = reinterpret_cast<Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1714
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1715 try
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1716 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1717 t->GetOutput().Clear();
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1718 t->GetBackend().SetMetadata(id, metadata, value);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1719 return OrthancPluginErrorCode_Success;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1720 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1721 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1722 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1723
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1724
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1725 static OrthancPluginErrorCode SetProtectedPatient(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1726 int64_t id,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1727 uint8_t isProtected)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1728 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1729 Transaction* t = reinterpret_cast<Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1730
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1731 try
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1732 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1733 t->GetOutput().Clear();
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1734 t->GetBackend().SetProtectedPatient(id, (isProtected != 0));
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1735 return OrthancPluginErrorCode_Success;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1736 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1737 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1738 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1739
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1740
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1741 static OrthancPluginErrorCode SetResourcesContent(OrthancPluginDatabaseTransaction* transaction,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1742 uint32_t countIdentifierTags,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1743 const OrthancPluginResourcesContentTags* identifierTags,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1744 uint32_t countMainDicomTags,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1745 const OrthancPluginResourcesContentTags* mainDicomTags,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1746 uint32_t countMetadata,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1747 const OrthancPluginResourcesContentMetadata* metadata)
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1748 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1749 Transaction* t = reinterpret_cast<Transaction*>(transaction);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1750
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1751 try
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1752 {
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1753 t->GetOutput().Clear();
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1754 t->GetBackend().SetResourcesContent(countIdentifierTags, identifierTags,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1755 countMainDicomTags, mainDicomTags,
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1756 countMetadata, metadata);
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1757 return OrthancPluginErrorCode_Success;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1758 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1759 ORTHANC_PLUGINS_DATABASE_CATCH(t->GetContext());
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1760 }
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1761
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1762
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1763 static void RegisterV3(IndexBackend& database)
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1764 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1765 OrthancPluginDatabaseBackendV3 params;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1766 memset(&params, 0, sizeof(params));
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1767
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1768 params.readAnswersCount = ReadAnswersCount;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1769 params.readAnswerAttachment = ReadAnswerAttachment;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1770 params.readAnswerChange = ReadAnswerChange;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1771 params.readAnswerDicomTag = ReadAnswerDicomTag;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1772 params.readAnswerExportedResource = ReadAnswerExportedResource;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1773 params.readAnswerInt32 = ReadAnswerInt32;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1774 params.readAnswerInt64 = ReadAnswerInt64;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1775 params.readAnswerMatchingResource = ReadAnswerMatchingResource;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1776 params.readAnswerMetadata = ReadAnswerMetadata;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1777 params.readAnswerString = ReadAnswerString;
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1778
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1779 params.readEventsCount = ReadEventsCount;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1780 params.readEvent = ReadEvent;
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1781
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1782 params.open = Open;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1783 params.close = Close;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1784 params.destructDatabase = DestructDatabase;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1785 params.getDatabaseVersion = GetDatabaseVersion;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1786 params.upgradeDatabase = UpgradeDatabase;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1787 params.startTransaction = StartTransaction;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1788 params.destructTransaction = DestructTransaction;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1789 params.rollback = Rollback;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1790 params.commit = Commit;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1791
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1792 params.addAttachment = AddAttachment;
208
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1793 params.clearChanges = ClearChanges;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1794 params.clearExportedResources = ClearExportedResources;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1795 params.clearMainDicomTags = ClearMainDicomTags;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1796 params.createInstance = CreateInstance;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1797 params.deleteAttachment = DeleteAttachment;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1798 params.deleteMetadata = DeleteMetadata;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1799 params.deleteResource = DeleteResource;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1800 params.getAllMetadata = GetAllMetadata;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1801 params.getAllPublicIds = GetAllPublicIds;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1802 params.getAllPublicIdsWithLimit = GetAllPublicIdsWithLimit;
696bc0c9fddb fix build
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 207
diff changeset
1803 params.getChanges = GetChanges;
209
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1804 params.getChildrenInternalId = GetChildrenInternalId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1805 params.getChildrenMetadata = GetChildrenMetadata;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1806 params.getChildrenPublicId = GetChildrenPublicId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1807 params.getExportedResources = GetExportedResources;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1808 params.getLastChange = GetLastChange;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1809 params.getLastChangeIndex = GetLastChangeIndex;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1810 params.getLastExportedResource = GetLastExportedResource;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1811 params.getMainDicomTags = GetMainDicomTags;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1812 params.getPublicId = GetPublicId;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1813 params.getResourcesCount = GetResourcesCount;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1814 params.getResourceType = GetResourceType;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1815 params.getTotalCompressedSize = GetTotalCompressedSize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1816 params.getTotalUncompressedSize = GetTotalUncompressedSize;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1817 params.isDiskSizeAbove = IsDiskSizeAbove;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1818 params.isExistingResource = IsExistingResource;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1819 params.isProtectedPatient = IsProtectedPatient;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1820 params.listAvailableAttachments = ListAvailableAttachments;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1821 params.logChange = LogChange;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1822 params.logExportedResource = LogExportedResource;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1823 params.lookupAttachment = LookupAttachment;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1824 params.lookupGlobalProperty = LookupGlobalProperty;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 208
diff changeset
1825 params.lookupMetadata = LookupMetadata;
210
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1826 params.lookupParent = LookupParent;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1827 params.lookupResource = LookupResource;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1828 params.lookupResources = LookupResources;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1829 params.lookupResourceAndParent = LookupResourceAndParent;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1830 params.selectPatientToRecycle = SelectPatientToRecycle;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1831 params.selectPatientToRecycle2 = SelectPatientToRecycle2;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1832 params.setGlobalProperty = SetGlobalProperty;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1833 params.setMetadata = SetMetadata;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1834 params.setProtectedPatient = SetProtectedPatient;
a0c095a4ba7d all the integration tests pass on SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 209
diff changeset
1835 params.setResourcesContent = SetResourcesContent;
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1836
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1837 OrthancPluginContext* context = database.GetContext();
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1838
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1839 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
1840 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1841 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
1842 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1843
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1844 database.SetOutputFactory(new Factory);
206
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1845 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1846 }
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1847
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1848 # endif
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1849 #endif
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1850
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1851
6dcf57074dd4 starting OrthancPluginDatabaseBackendV3 wrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
1852
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1853 extern "C"
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1854 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1855 ORTHANC_PLUGINS_API int32_t OrthancPluginInitialize(OrthancPluginContext* context)
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1856 {
28
c0cb5d2cd696 checks depending on Orthanc version
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
1857 if (!OrthancDatabases::InitializePlugin(context, "SQLite", true))
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1858 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1859 return -1;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1860 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1861
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1862 #if 0
62
eedd082355f9 fix for compatibility with simplified OrthancPluginCppWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 28
diff changeset
1863 OrthancPlugins::OrthancConfiguration configuration;
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1864
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1865 if (!configuration.IsSection("SQLite"))
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1866 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1867 LOG(WARNING) << "No available configuration for the SQLite index plugin";
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1868 return 0;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1869 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1870
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1871 OrthancPlugins::OrthancConfiguration sqlite;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1872 configuration.GetSection(sqlite, "SQLite");
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1873
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1874 bool enable;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1875 if (!sqlite.LookupBooleanValue(enable, "EnableIndex") ||
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1876 !enable)
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1877 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1878 LOG(WARNING) << "The SQLite index is currently disabled, set \"EnableIndex\" "
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1879 << "to \"true\" in the \"SQLite\" section of the configuration file of Orthanc";
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1880 return 0;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1881 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1882 #endif
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1883
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1884 try
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1885 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1886 /* Create the database back-end */
201
42990b2dd51b create IDatabaseBackendOutput only if needed
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
1887 backend_.reset(new OrthancDatabases::SQLiteIndex(context, "index.db")); // TODO parameter
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1888
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1889 /* Register the SQLite index into Orthanc */
207
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1890
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1891 bool hasLoadedV3 = false;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1892
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1893 #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
1894 # 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
1895 if (OrthancPluginCheckVersionAdvanced(context, 1, 10, 0) == 1)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1896 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1897 RegisterV3(*backend_);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1898 hasLoadedV3 = true;
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1899 }
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1900 # endif
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1901 #endif
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1902
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1903 if (!hasLoadedV3)
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1904 {
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1905 OrthancDatabases::DatabaseBackendAdapterV2::Register(*backend_);
d9ef3f16e6a2 wrapping transactions in API v3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 206
diff changeset
1906 }
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1907 }
2
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1908 catch (Orthanc::OrthancException& e)
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1909 {
2
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1910 LOG(ERROR) << e.What();
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1911 return -1;
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1912 }
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1913 catch (...)
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1914 {
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1915 LOG(ERROR) << "Native exception while initializing the plugin";
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1916 return -1;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1917 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1918
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1919 return 0;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1920 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1921
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1922
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1923 ORTHANC_PLUGINS_API void OrthancPluginFinalize()
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1924 {
2
17bce6a07b2b storage plugin skeletons
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1925 LOG(WARNING) << "SQLite index is finalizing";
0
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1926 backend_.reset(NULL);
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1927 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1928
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1929
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1930 ORTHANC_PLUGINS_API const char* OrthancPluginGetName()
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1931 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1932 return "sqlite-index";
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1933 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1934
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1935
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1936 ORTHANC_PLUGINS_API const char* OrthancPluginGetVersion()
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1937 {
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1938 return ORTHANC_PLUGIN_VERSION;
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1939 }
7cea966b6829 initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1940 }