annotate SQLite/Plugins/IndexPlugin.cpp @ 211:d74a92ac00ea

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