annotate OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.cpp @ 5083:75e949689c08 attach-custom-data

PluginDatabaseV4 to handle customData
author Alain Mazy <am@osimis.io>
date Wed, 14 Sep 2022 17:11:45 +0200
parents
children 8279eaab0d1d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5083
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1 /**
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
2 * Orthanc - A Lightweight, RESTful DICOM Store
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
4 * Department, University Hospital of Liege, Belgium
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
5 * Copyright (C) 2017-2022 Osimis S.A., Belgium
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
6 * Copyright (C) 2021-2022 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
7 *
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
8 * This program is free software: you can redistribute it and/or
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
9 * modify it under the terms of the GNU General Public License as
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
10 * published by the Free Software Foundation, either version 3 of the
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
11 * License, or (at your option) any later version.
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
12 *
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful, but
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
16 * General Public License for more details.
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
17 *
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
20 **/
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
21
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
22
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
23 #include "../../Sources/PrecompiledHeadersServer.h"
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
24 #include "OrthancPluginDatabaseV4.h"
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
25
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
26 #if ORTHANC_ENABLE_PLUGINS != 1
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
27 # error The plugin support is disabled
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
28 #endif
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
29
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
30 #include "../../../OrthancFramework/Sources/Logging.h"
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
31 #include "../../../OrthancFramework/Sources/OrthancException.h"
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
32 #include "../../Sources/Database/ResourcesContent.h"
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
33 #include "../../Sources/Database/VoidDatabaseListener.h"
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
34 #include "PluginsEnumerations.h"
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
35
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
36 #include <cassert>
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
37
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
38
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
39 #define CHECK_FUNCTION_EXISTS(backend, func) \
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
40 if (backend.func == NULL) \
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
41 { \
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
42 throw OrthancException( \
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
43 ErrorCode_DatabasePlugin, "Missing primitive: " #func "()"); \
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
44 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
45
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
46 namespace Orthanc
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
47 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
48 class OrthancPluginDatabaseV4::Transaction : public IDatabaseWrapper::ITransaction
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
49 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
50 private:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
51 OrthancPluginDatabaseV4& that_;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
52 IDatabaseListener& listener_;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
53 OrthancPluginDatabaseTransaction* transaction_;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
54
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
55
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
56 void CheckSuccess(OrthancPluginErrorCode code) const
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
57 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
58 that_.CheckSuccess(code);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
59 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
60
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
61
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
62 static FileInfo Convert(const OrthancPluginAttachment& attachment)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
63 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
64 std::string customData;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
65 return FileInfo(attachment.uuid,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
66 static_cast<FileContentType>(attachment.contentType),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
67 attachment.uncompressedSize,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
68 attachment.uncompressedHash,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
69 static_cast<CompressionType>(attachment.compressionType),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
70 attachment.compressedSize,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
71 attachment.compressedHash,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
72 customData);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
73 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
74
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
75 static FileInfo Convert(const OrthancPluginAttachment2& attachment)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
76 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
77 return FileInfo(attachment.uuid,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
78 static_cast<FileContentType>(attachment.contentType),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
79 attachment.uncompressedSize,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
80 attachment.uncompressedHash,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
81 static_cast<CompressionType>(attachment.compressionType),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
82 attachment.compressedSize,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
83 attachment.compressedHash,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
84 attachment.customData);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
85 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
86
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
87 void ReadStringAnswers(std::list<std::string>& target)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
88 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
89 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
90 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
91
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
92 target.clear();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
93 for (uint32_t i = 0; i < count; i++)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
94 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
95 const char* value = NULL;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
96 CheckSuccess(that_.backend_.readAnswerString(transaction_, &value, i));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
97 if (value == NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
98 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
99 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
100 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
101 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
102 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
103 target.push_back(value);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
104 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
105 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
106 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
107
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
108
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
109 bool ReadSingleStringAnswer(std::string& target)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
110 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
111 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
112 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
113
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
114 if (count == 0)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
115 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
116 return false;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
117 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
118 else if (count == 1)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
119 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
120 const char* value = NULL;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
121 CheckSuccess(that_.backend_.readAnswerString(transaction_, &value, 0));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
122 if (value == NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
123 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
124 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
125 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
126 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
127 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
128 target.assign(value);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
129 return true;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
130 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
131 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
132 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
133 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
134 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
135 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
136 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
137
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
138
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
139 bool ReadSingleInt64Answer(int64_t& target)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
140 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
141 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
142 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
143
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
144 if (count == 0)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
145 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
146 return false;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
147 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
148 else if (count == 1)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
149 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
150 CheckSuccess(that_.backend_.readAnswerInt64(transaction_, &target, 0));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
151 return true;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
152 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
153 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
154 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
155 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
156 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
157 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
158
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
159
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
160 ExportedResource ReadAnswerExportedResource(uint32_t answerIndex)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
161 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
162 OrthancPluginExportedResource exported;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
163 CheckSuccess(that_.backend_.readAnswerExportedResource(transaction_, &exported, answerIndex));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
164
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
165 if (exported.publicId == NULL ||
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
166 exported.modality == NULL ||
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
167 exported.date == NULL ||
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
168 exported.patientId == NULL ||
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
169 exported.studyInstanceUid == NULL ||
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
170 exported.seriesInstanceUid == NULL ||
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
171 exported.sopInstanceUid == NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
172 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
173 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
174 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
175 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
176 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
177 return ExportedResource(exported.seq,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
178 Plugins::Convert(exported.resourceType),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
179 exported.publicId,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
180 exported.modality,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
181 exported.date,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
182 exported.patientId,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
183 exported.studyInstanceUid,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
184 exported.seriesInstanceUid,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
185 exported.sopInstanceUid);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
186 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
187 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
188
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
189
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
190 ServerIndexChange ReadAnswerChange(uint32_t answerIndex)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
191 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
192 OrthancPluginChange change;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
193 CheckSuccess(that_.backend_.readAnswerChange(transaction_, &change, answerIndex));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
194
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
195 if (change.publicId == NULL ||
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
196 change.date == NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
197 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
198 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
199 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
200 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
201 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
202 return ServerIndexChange(change.seq,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
203 static_cast<ChangeType>(change.changeType),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
204 Plugins::Convert(change.resourceType),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
205 change.publicId,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
206 change.date);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
207 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
208 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
209
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
210
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
211 void CheckNoEvent()
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
212 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
213 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
214 CheckSuccess(that_.backend_.readEventsCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
215 if (count != 0)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
216 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
217 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
218 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
219 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
220
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
221
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
222 void ProcessEvents(bool isDeletingAttachment)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
223 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
224 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
225 CheckSuccess(that_.backend_.readEventsCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
226
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
227 for (uint32_t i = 0; i < count; i++)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
228 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
229 OrthancPluginDatabaseEvent2 event;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
230 CheckSuccess(that_.backend_.readEvent2(transaction_, &event, i));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
231
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
232 switch (event.type)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
233 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
234 case OrthancPluginDatabaseEventType_DeletedAttachment:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
235 listener_.SignalAttachmentDeleted(Convert(event.content.attachment));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
236 break;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
237
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
238 case OrthancPluginDatabaseEventType_DeletedResource:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
239 if (isDeletingAttachment)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
240 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
241 // This event should only be triggered by "DeleteResource()"
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
242 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
243 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
244 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
245 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
246 listener_.SignalResourceDeleted(Plugins::Convert(event.content.resource.level), event.content.resource.publicId);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
247 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
248 break;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
249
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
250 case OrthancPluginDatabaseEventType_RemainingAncestor:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
251 if (isDeletingAttachment)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
252 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
253 // This event should only triggered by "DeleteResource()"
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
254 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
255 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
256 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
257 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
258 listener_.SignalRemainingAncestor(Plugins::Convert(event.content.resource.level), event.content.resource.publicId);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
259 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
260 break;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
261
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
262 default:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
263 break; // Unhandled event
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
264 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
265 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
266 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
267
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
268
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
269 public:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
270 Transaction(OrthancPluginDatabaseV4& that,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
271 IDatabaseListener& listener,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
272 OrthancPluginDatabaseTransactionType type) :
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
273 that_(that),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
274 listener_(listener)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
275 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
276 CheckSuccess(that.backend_.startTransaction(that.database_, &transaction_, type));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
277 if (transaction_ == NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
278 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
279 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
280 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
281 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
282
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
283
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
284 virtual ~Transaction()
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
285 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
286 OrthancPluginErrorCode code = that_.backend_.destructTransaction(transaction_);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
287 if (code != OrthancPluginErrorCode_Success)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
288 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
289 // Don't throw exception in destructors
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
290 that_.errorDictionary_.LogError(code, true);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
291 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
292 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
293
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
294
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
295 virtual void Rollback() ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
296 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
297 CheckSuccess(that_.backend_.rollback(transaction_));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
298 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
299 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
300
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
301
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
302 virtual void Commit(int64_t fileSizeDelta) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
303 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
304 CheckSuccess(that_.backend_.commit(transaction_, fileSizeDelta));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
305 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
306 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
307
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
308
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
309 virtual void AddAttachment(int64_t id,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
310 const FileInfo& attachment,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
311 int64_t revision) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
312 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
313 OrthancPluginAttachment2 tmp;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
314 tmp.uuid = attachment.GetUuid().c_str();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
315 tmp.contentType = static_cast<int32_t>(attachment.GetContentType());
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
316 tmp.uncompressedSize = attachment.GetUncompressedSize();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
317 tmp.uncompressedHash = attachment.GetUncompressedMD5().c_str();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
318 tmp.compressionType = static_cast<int32_t>(attachment.GetCompressionType());
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
319 tmp.compressedSize = attachment.GetCompressedSize();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
320 tmp.compressedHash = attachment.GetCompressedMD5().c_str();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
321 tmp.customData = attachment.GetCustomData().c_str();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
322
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
323 CheckSuccess(that_.backend_.addAttachment2(transaction_, id, &tmp, revision));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
324 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
325 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
326
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
327
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
328 virtual void ClearChanges() ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
329 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
330 CheckSuccess(that_.backend_.clearChanges(transaction_));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
331 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
332 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
333
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
334
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
335 virtual void ClearExportedResources() ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
336 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
337 CheckSuccess(that_.backend_.clearExportedResources(transaction_));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
338 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
339 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
340
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
341
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
342 virtual void DeleteAttachment(int64_t id,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
343 FileContentType attachment) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
344 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
345 CheckSuccess(that_.backend_.deleteAttachment(transaction_, id, static_cast<int32_t>(attachment)));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
346 ProcessEvents(true);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
347 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
348
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
349
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
350 virtual void DeleteMetadata(int64_t id,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
351 MetadataType type) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
352 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
353 CheckSuccess(that_.backend_.deleteMetadata(transaction_, id, static_cast<int32_t>(type)));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
354 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
355 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
356
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
357
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
358 virtual void DeleteResource(int64_t id) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
359 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
360 CheckSuccess(that_.backend_.deleteResource(transaction_, id));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
361 ProcessEvents(false);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
362 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
363
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
364
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
365 virtual void GetAllMetadata(std::map<MetadataType, std::string>& target,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
366 int64_t id) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
367 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
368 CheckSuccess(that_.backend_.getAllMetadata(transaction_, id));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
369 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
370
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
371 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
372 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
373
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
374 target.clear();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
375 for (uint32_t i = 0; i < count; i++)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
376 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
377 int32_t metadata;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
378 const char* value = NULL;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
379 CheckSuccess(that_.backend_.readAnswerMetadata(transaction_, &metadata, &value, i));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
380
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
381 if (value == NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
382 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
383 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
384 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
385 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
386 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
387 target[static_cast<MetadataType>(metadata)] = value;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
388 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
389 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
390 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
391
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
392
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
393 virtual void GetAllPublicIds(std::list<std::string>& target,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
394 ResourceType resourceType) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
395 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
396 CheckSuccess(that_.backend_.getAllPublicIds(transaction_, Plugins::Convert(resourceType)));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
397 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
398
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
399 ReadStringAnswers(target);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
400 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
401
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
402
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
403 virtual void GetAllPublicIds(std::list<std::string>& target,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
404 ResourceType resourceType,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
405 size_t since,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
406 size_t limit) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
407 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
408 CheckSuccess(that_.backend_.getAllPublicIdsWithLimit(
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
409 transaction_, Plugins::Convert(resourceType),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
410 static_cast<uint64_t>(since), static_cast<uint64_t>(limit)));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
411 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
412
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
413 ReadStringAnswers(target);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
414 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
415
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
416
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
417 virtual void GetChanges(std::list<ServerIndexChange>& target /*out*/,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
418 bool& done /*out*/,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
419 int64_t since,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
420 uint32_t maxResults) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
421 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
422 uint8_t tmpDone = true;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
423 CheckSuccess(that_.backend_.getChanges(transaction_, &tmpDone, since, maxResults));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
424 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
425
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
426 done = (tmpDone != 0);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
427
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
428 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
429 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
430
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
431 target.clear();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
432 for (uint32_t i = 0; i < count; i++)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
433 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
434 target.push_back(ReadAnswerChange(i));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
435 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
436 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
437
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
438
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
439 virtual void GetChildrenInternalId(std::list<int64_t>& target,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
440 int64_t id) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
441 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
442 CheckSuccess(that_.backend_.getChildrenInternalId(transaction_, id));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
443 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
444
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
445 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
446 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
447
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
448 target.clear();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
449 for (uint32_t i = 0; i < count; i++)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
450 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
451 int64_t value;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
452 CheckSuccess(that_.backend_.readAnswerInt64(transaction_, &value, i));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
453 target.push_back(value);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
454 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
455 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
456
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
457
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
458 virtual void GetChildrenPublicId(std::list<std::string>& target,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
459 int64_t id) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
460 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
461 CheckSuccess(that_.backend_.getChildrenPublicId(transaction_, id));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
462 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
463
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
464 ReadStringAnswers(target);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
465 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
466
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
467
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
468 virtual void GetExportedResources(std::list<ExportedResource>& target /*out*/,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
469 bool& done /*out*/,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
470 int64_t since,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
471 uint32_t maxResults) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
472 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
473 uint8_t tmpDone = true;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
474 CheckSuccess(that_.backend_.getExportedResources(transaction_, &tmpDone, since, maxResults));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
475 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
476
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
477 done = (tmpDone != 0);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
478
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
479 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
480 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
481
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
482 target.clear();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
483 for (uint32_t i = 0; i < count; i++)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
484 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
485 target.push_back(ReadAnswerExportedResource(i));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
486 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
487 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
488
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
489
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
490 virtual void GetLastChange(std::list<ServerIndexChange>& target /*out*/) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
491 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
492 CheckSuccess(that_.backend_.getLastChange(transaction_));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
493 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
494
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
495 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
496 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
497
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
498 target.clear();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
499 if (count == 1)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
500 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
501 target.push_back(ReadAnswerChange(0));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
502 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
503 else if (count > 1)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
504 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
505 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
506 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
507 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
508
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
509
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
510 virtual void GetLastExportedResource(std::list<ExportedResource>& target /*out*/) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
511 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
512 CheckSuccess(that_.backend_.getLastExportedResource(transaction_));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
513 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
514
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
515 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
516 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
517
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
518 target.clear();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
519 if (count == 1)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
520 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
521 target.push_back(ReadAnswerExportedResource(0));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
522 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
523 else if (count > 1)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
524 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
525 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
526 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
527 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
528
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
529
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
530 virtual void GetMainDicomTags(DicomMap& target,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
531 int64_t id) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
532 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
533 CheckSuccess(that_.backend_.getMainDicomTags(transaction_, id));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
534 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
535
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
536 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
537 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
538
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
539 target.Clear();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
540 for (uint32_t i = 0; i < count; i++)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
541 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
542 uint16_t group, element;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
543 const char* value = NULL;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
544 CheckSuccess(that_.backend_.readAnswerDicomTag(transaction_, &group, &element, &value, i));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
545
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
546 if (value == NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
547 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
548 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
549 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
550 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
551 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
552 target.SetValue(group, element, std::string(value), false);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
553 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
554 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
555 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
556
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
557
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
558 virtual std::string GetPublicId(int64_t resourceId) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
559 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
560 CheckSuccess(that_.backend_.getPublicId(transaction_, resourceId));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
561 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
562
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
563 std::string s;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
564 if (ReadSingleStringAnswer(s))
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
565 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
566 return s;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
567 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
568 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
569 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
570 throw OrthancException(ErrorCode_InexistentItem);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
571 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
572 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
573
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
574
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
575 virtual uint64_t GetResourcesCount(ResourceType resourceType) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
576 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
577 uint64_t value;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
578 CheckSuccess(that_.backend_.getResourcesCount(transaction_, &value, Plugins::Convert(resourceType)));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
579 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
580 return value;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
581 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
582
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
583
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
584 virtual ResourceType GetResourceType(int64_t resourceId) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
585 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
586 OrthancPluginResourceType type;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
587 CheckSuccess(that_.backend_.getResourceType(transaction_, &type, resourceId));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
588 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
589 return Plugins::Convert(type);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
590 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
591
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
592
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
593 virtual uint64_t GetTotalCompressedSize() ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
594 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
595 uint64_t s;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
596 CheckSuccess(that_.backend_.getTotalCompressedSize(transaction_, &s));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
597 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
598 return s;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
599 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
600
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
601
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
602 virtual uint64_t GetTotalUncompressedSize() ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
603 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
604 uint64_t s;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
605 CheckSuccess(that_.backend_.getTotalUncompressedSize(transaction_, &s));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
606 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
607 return s;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
608 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
609
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
610
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
611 virtual bool IsExistingResource(int64_t internalId) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
612 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
613 uint8_t b;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
614 CheckSuccess(that_.backend_.isExistingResource(transaction_, &b, internalId));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
615 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
616 return (b != 0);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
617 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
618
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
619
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
620 virtual bool IsProtectedPatient(int64_t internalId) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
621 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
622 uint8_t b;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
623 CheckSuccess(that_.backend_.isProtectedPatient(transaction_, &b, internalId));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
624 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
625 return (b != 0);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
626 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
627
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
628
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
629 virtual void ListAvailableAttachments(std::set<FileContentType>& target,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
630 int64_t id) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
631 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
632 CheckSuccess(that_.backend_.listAvailableAttachments(transaction_, id));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
633 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
634
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
635 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
636 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
637
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
638 target.clear();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
639 for (uint32_t i = 0; i < count; i++)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
640 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
641 int32_t value;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
642 CheckSuccess(that_.backend_.readAnswerInt32(transaction_, &value, i));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
643 target.insert(static_cast<FileContentType>(value));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
644 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
645 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
646
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
647
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
648 virtual void LogChange(int64_t internalId,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
649 const ServerIndexChange& change) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
650 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
651 CheckSuccess(that_.backend_.logChange(transaction_, static_cast<int32_t>(change.GetChangeType()),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
652 internalId, Plugins::Convert(change.GetResourceType()),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
653 change.GetDate().c_str()));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
654 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
655 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
656
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
657
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
658 virtual void LogExportedResource(const ExportedResource& resource) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
659 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
660 CheckSuccess(that_.backend_.logExportedResource(transaction_, Plugins::Convert(resource.GetResourceType()),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
661 resource.GetPublicId().c_str(),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
662 resource.GetModality().c_str(),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
663 resource.GetDate().c_str(),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
664 resource.GetPatientId().c_str(),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
665 resource.GetStudyInstanceUid().c_str(),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
666 resource.GetSeriesInstanceUid().c_str(),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
667 resource.GetSopInstanceUid().c_str()));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
668 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
669 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
670
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
671
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
672 virtual bool LookupAttachment(FileInfo& attachment,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
673 int64_t& revision,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
674 int64_t id,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
675 FileContentType contentType) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
676 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
677 CheckSuccess(that_.backend_.lookupAttachment(transaction_, &revision, id, static_cast<int32_t>(contentType)));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
678 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
679
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
680 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
681 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
682
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
683 if (count == 0)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
684 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
685 return false;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
686 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
687 else if (count == 1)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
688 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
689 OrthancPluginAttachment2 tmp;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
690 CheckSuccess(that_.backend_.readAnswerAttachment2(transaction_, &tmp, 0));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
691 attachment = Convert(tmp);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
692 return true;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
693 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
694 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
695 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
696 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
697 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
698 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
699
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
700
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
701 virtual bool LookupGlobalProperty(std::string& target,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
702 GlobalProperty property,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
703 bool shared) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
704 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
705 const char* id = (shared ? "" : that_.serverIdentifier_.c_str());
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
706
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
707 CheckSuccess(that_.backend_.lookupGlobalProperty(transaction_, id, static_cast<int32_t>(property)));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
708 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
709 return ReadSingleStringAnswer(target);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
710 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
711
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
712
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
713 virtual bool LookupMetadata(std::string& target,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
714 int64_t& revision,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
715 int64_t id,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
716 MetadataType type) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
717 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
718 CheckSuccess(that_.backend_.lookupMetadata(transaction_, &revision, id, static_cast<int32_t>(type)));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
719 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
720 return ReadSingleStringAnswer(target);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
721 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
722
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
723
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
724 virtual bool LookupParent(int64_t& parentId,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
725 int64_t resourceId) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
726 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
727 uint8_t existing;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
728 CheckSuccess(that_.backend_.lookupParent(transaction_, &existing, &parentId, resourceId));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
729 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
730 return (existing != 0);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
731 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
732
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
733
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
734 virtual bool LookupResource(int64_t& id,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
735 ResourceType& type,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
736 const std::string& publicId) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
737 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
738 uint8_t existing;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
739 OrthancPluginResourceType t;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
740 CheckSuccess(that_.backend_.lookupResource(transaction_, &existing, &id, &t, publicId.c_str()));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
741 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
742
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
743 if (existing == 0)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
744 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
745 return false;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
746 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
747 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
748 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
749 type = Plugins::Convert(t);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
750 return true;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
751 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
752 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
753
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
754
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
755 virtual bool SelectPatientToRecycle(int64_t& internalId) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
756 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
757 uint8_t available;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
758 CheckSuccess(that_.backend_.selectPatientToRecycle(transaction_, &available, &internalId));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
759 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
760 return (available != 0);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
761 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
762
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
763
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
764 virtual bool SelectPatientToRecycle(int64_t& internalId,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
765 int64_t patientIdToAvoid) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
766 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
767 uint8_t available;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
768 CheckSuccess(that_.backend_.selectPatientToRecycle2(transaction_, &available, &internalId, patientIdToAvoid));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
769 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
770 return (available != 0);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
771 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
772
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
773
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
774 virtual void SetGlobalProperty(GlobalProperty property,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
775 bool shared,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
776 const std::string& value) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
777 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
778 const char* id = (shared ? "" : that_.serverIdentifier_.c_str());
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
779
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
780 CheckSuccess(that_.backend_.setGlobalProperty(transaction_, id, static_cast<int32_t>(property), value.c_str()));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
781 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
782 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
783
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
784
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
785 virtual void ClearMainDicomTags(int64_t id) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
786 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
787 CheckSuccess(that_.backend_.clearMainDicomTags(transaction_, id));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
788 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
789 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
790
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
791
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
792 virtual void SetMetadata(int64_t id,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
793 MetadataType type,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
794 const std::string& value,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
795 int64_t revision) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
796 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
797 CheckSuccess(that_.backend_.setMetadata(transaction_, id, static_cast<int32_t>(type), value.c_str(), revision));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
798 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
799 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
800
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
801
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
802 virtual void SetProtectedPatient(int64_t internalId,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
803 bool isProtected) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
804 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
805 CheckSuccess(that_.backend_.setProtectedPatient(transaction_, internalId, (isProtected ? 1 : 0)));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
806 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
807 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
808
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
809
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
810 virtual bool IsDiskSizeAbove(uint64_t threshold) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
811 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
812 uint8_t tmp;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
813 CheckSuccess(that_.backend_.isDiskSizeAbove(transaction_, &tmp, threshold));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
814 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
815 return (tmp != 0);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
816 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
817
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
818
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
819 virtual void ApplyLookupResources(std::list<std::string>& resourcesId,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
820 std::list<std::string>* instancesId, // Can be NULL if not needed
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
821 const std::vector<DatabaseConstraint>& lookup,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
822 ResourceType queryLevel,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
823 size_t limit) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
824 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
825 std::vector<OrthancPluginDatabaseConstraint> constraints;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
826 std::vector< std::vector<const char*> > constraintsValues;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
827
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
828 constraints.resize(lookup.size());
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
829 constraintsValues.resize(lookup.size());
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
830
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
831 for (size_t i = 0; i < lookup.size(); i++)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
832 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
833 lookup[i].EncodeForPlugins(constraints[i], constraintsValues[i]);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
834 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
835
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
836 CheckSuccess(that_.backend_.lookupResources(transaction_, lookup.size(),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
837 (lookup.empty() ? NULL : &constraints[0]),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
838 Plugins::Convert(queryLevel),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
839 limit, (instancesId == NULL ? 0 : 1)));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
840 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
841
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
842 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
843 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
844
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
845 resourcesId.clear();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
846
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
847 if (instancesId != NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
848 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
849 instancesId->clear();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
850 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
851
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
852 for (uint32_t i = 0; i < count; i++)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
853 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
854 OrthancPluginMatchingResource resource;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
855 CheckSuccess(that_.backend_.readAnswerMatchingResource(transaction_, &resource, i));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
856
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
857 if (resource.resourceId == NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
858 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
859 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
860 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
861
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
862 resourcesId.push_back(resource.resourceId);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
863
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
864 if (instancesId != NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
865 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
866 if (resource.someInstanceId == NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
867 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
868 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
869 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
870 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
871 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
872 instancesId->push_back(resource.someInstanceId);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
873 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
874 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
875 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
876 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
877
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
878
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
879 virtual bool CreateInstance(CreateInstanceResult& result, /* out */
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
880 int64_t& instanceId, /* out */
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
881 const std::string& patient,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
882 const std::string& study,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
883 const std::string& series,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
884 const std::string& instance) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
885 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
886 OrthancPluginCreateInstanceResult output;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
887 memset(&output, 0, sizeof(output));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
888
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
889 CheckSuccess(that_.backend_.createInstance(transaction_, &output, patient.c_str(),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
890 study.c_str(), series.c_str(), instance.c_str()));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
891 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
892
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
893 instanceId = output.instanceId;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
894
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
895 if (output.isNewInstance)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
896 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
897 result.isNewPatient_ = output.isNewPatient;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
898 result.isNewStudy_ = output.isNewStudy;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
899 result.isNewSeries_ = output.isNewSeries;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
900 result.patientId_ = output.patientId;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
901 result.studyId_ = output.studyId;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
902 result.seriesId_ = output.seriesId;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
903 return true;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
904 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
905 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
906 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
907 return false;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
908 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
909
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
910 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
911
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
912
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
913 virtual void SetResourcesContent(const ResourcesContent& content) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
914 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
915 std::vector<OrthancPluginResourcesContentTags> identifierTags;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
916 std::vector<OrthancPluginResourcesContentTags> mainDicomTags;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
917 std::vector<OrthancPluginResourcesContentMetadata> metadata;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
918
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
919 identifierTags.reserve(content.GetListTags().size());
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
920 mainDicomTags.reserve(content.GetListTags().size());
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
921 metadata.reserve(content.GetListMetadata().size());
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
922
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
923 for (ResourcesContent::ListTags::const_iterator
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
924 it = content.GetListTags().begin(); it != content.GetListTags().end(); ++it)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
925 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
926 OrthancPluginResourcesContentTags tmp;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
927 tmp.resource = it->resourceId_;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
928 tmp.group = it->tag_.GetGroup();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
929 tmp.element = it->tag_.GetElement();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
930 tmp.value = it->value_.c_str();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
931
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
932 if (it->isIdentifier_)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
933 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
934 identifierTags.push_back(tmp);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
935 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
936 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
937 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
938 mainDicomTags.push_back(tmp);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
939 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
940 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
941
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
942 for (ResourcesContent::ListMetadata::const_iterator
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
943 it = content.GetListMetadata().begin(); it != content.GetListMetadata().end(); ++it)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
944 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
945 OrthancPluginResourcesContentMetadata tmp;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
946 tmp.resource = it->resourceId_;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
947 tmp.metadata = it->metadata_;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
948 tmp.value = it->value_.c_str();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
949 metadata.push_back(tmp);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
950 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
951
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
952 assert(identifierTags.size() + mainDicomTags.size() == content.GetListTags().size() &&
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
953 metadata.size() == content.GetListMetadata().size());
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
954
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
955 CheckSuccess(that_.backend_.setResourcesContent(transaction_,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
956 identifierTags.size(),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
957 (identifierTags.empty() ? NULL : &identifierTags[0]),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
958 mainDicomTags.size(),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
959 (mainDicomTags.empty() ? NULL : &mainDicomTags[0]),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
960 metadata.size(),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
961 (metadata.empty() ? NULL : &metadata[0])));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
962 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
963 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
964
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
965
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
966 virtual void GetChildrenMetadata(std::list<std::string>& target,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
967 int64_t resourceId,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
968 MetadataType metadata) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
969 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
970 CheckSuccess(that_.backend_.getChildrenMetadata(transaction_, resourceId, static_cast<int32_t>(metadata)));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
971 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
972 ReadStringAnswers(target);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
973 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
974
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
975
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
976 virtual int64_t GetLastChangeIndex() ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
977 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
978 int64_t tmp;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
979 CheckSuccess(that_.backend_.getLastChangeIndex(transaction_, &tmp));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
980 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
981 return tmp;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
982 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
983
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
984
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
985 virtual bool LookupResourceAndParent(int64_t& id,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
986 ResourceType& type,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
987 std::string& parentPublicId,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
988 const std::string& publicId) ORTHANC_OVERRIDE
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
989 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
990 uint8_t isExisting;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
991 OrthancPluginResourceType tmpType;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
992 CheckSuccess(that_.backend_.lookupResourceAndParent(transaction_, &isExisting, &id, &tmpType, publicId.c_str()));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
993 CheckNoEvent();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
994
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
995 if (isExisting)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
996 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
997 type = Plugins::Convert(tmpType);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
998
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
999 uint32_t count;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1000 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1001
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1002 if (count > 1)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1003 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1004 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1005 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1006
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1007 switch (type)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1008 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1009 case ResourceType_Patient:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1010 // A patient has no parent
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1011 if (count == 1)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1012 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1013 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1014 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1015 break;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1016
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1017 case ResourceType_Study:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1018 case ResourceType_Series:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1019 case ResourceType_Instance:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1020 if (count == 0)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1021 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1022 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1023 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1024 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1025 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1026 const char* value = NULL;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1027 CheckSuccess(that_.backend_.readAnswerString(transaction_, &value, 0));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1028 if (value == NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1029 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1030 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1031 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1032 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1033 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1034 parentPublicId.assign(value);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1035 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1036 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1037 break;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1038
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1039 default:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1040 throw OrthancException(ErrorCode_DatabasePlugin);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1041 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1042
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1043 return true;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1044 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1045 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1046 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1047 return false;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1048 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1049 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1050 };
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1051
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1052
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1053 void OrthancPluginDatabaseV4::CheckSuccess(OrthancPluginErrorCode code) const
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1054 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1055 if (code != OrthancPluginErrorCode_Success)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1056 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1057 errorDictionary_.LogError(code, true);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1058 throw OrthancException(static_cast<ErrorCode>(code));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1059 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1060 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1061
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1062
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1063 OrthancPluginDatabaseV4::OrthancPluginDatabaseV4(SharedLibrary& library,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1064 PluginsErrorDictionary& errorDictionary,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1065 const OrthancPluginDatabaseBackendV4* backend,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1066 size_t backendSize,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1067 void* database,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1068 const std::string& serverIdentifier) :
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1069 library_(library),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1070 errorDictionary_(errorDictionary),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1071 database_(database),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1072 serverIdentifier_(serverIdentifier)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1073 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1074 CLOG(INFO, PLUGINS) << "Identifier of this Orthanc server for the global properties "
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1075 << "of the custom database: \"" << serverIdentifier << "\"";
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1076
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1077 if (backendSize >= sizeof(backend_))
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1078 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1079 memcpy(&backend_, backend, sizeof(backend_));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1080 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1081 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1082 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1083 // Not all the primitives are implemented by the plugin
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1084 memset(&backend_, 0, sizeof(backend_));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1085 memcpy(&backend_, backend, backendSize);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1086 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1087
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1088 // Sanity checks
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1089 CHECK_FUNCTION_EXISTS(backend_, readAnswersCount);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1090 CHECK_FUNCTION_EXISTS(backend_, readAnswerAttachment2);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1091 CHECK_FUNCTION_EXISTS(backend_, readAnswerChange);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1092 CHECK_FUNCTION_EXISTS(backend_, readAnswerDicomTag);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1093 CHECK_FUNCTION_EXISTS(backend_, readAnswerExportedResource);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1094 CHECK_FUNCTION_EXISTS(backend_, readAnswerInt32);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1095 CHECK_FUNCTION_EXISTS(backend_, readAnswerInt64);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1096 CHECK_FUNCTION_EXISTS(backend_, readAnswerMatchingResource);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1097 CHECK_FUNCTION_EXISTS(backend_, readAnswerMetadata);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1098 CHECK_FUNCTION_EXISTS(backend_, readAnswerString);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1099
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1100 CHECK_FUNCTION_EXISTS(backend_, readEventsCount);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1101 CHECK_FUNCTION_EXISTS(backend_, readEvent2);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1102
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1103 CHECK_FUNCTION_EXISTS(backend_, open);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1104 CHECK_FUNCTION_EXISTS(backend_, close);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1105 CHECK_FUNCTION_EXISTS(backend_, destructDatabase);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1106 CHECK_FUNCTION_EXISTS(backend_, getDatabaseVersion);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1107 CHECK_FUNCTION_EXISTS(backend_, upgradeDatabase);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1108 CHECK_FUNCTION_EXISTS(backend_, startTransaction);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1109 CHECK_FUNCTION_EXISTS(backend_, destructTransaction);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1110 CHECK_FUNCTION_EXISTS(backend_, hasRevisionsSupport);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1111 CHECK_FUNCTION_EXISTS(backend_, hasAttachmentCustomDataSupport); // new in v4
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1112
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1113 CHECK_FUNCTION_EXISTS(backend_, rollback);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1114 CHECK_FUNCTION_EXISTS(backend_, commit);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1115
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1116 CHECK_FUNCTION_EXISTS(backend_, addAttachment2);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1117 CHECK_FUNCTION_EXISTS(backend_, clearChanges);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1118 CHECK_FUNCTION_EXISTS(backend_, clearExportedResources);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1119 CHECK_FUNCTION_EXISTS(backend_, clearMainDicomTags);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1120 CHECK_FUNCTION_EXISTS(backend_, createInstance);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1121 CHECK_FUNCTION_EXISTS(backend_, deleteAttachment);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1122 CHECK_FUNCTION_EXISTS(backend_, deleteMetadata);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1123 CHECK_FUNCTION_EXISTS(backend_, deleteResource);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1124 CHECK_FUNCTION_EXISTS(backend_, getAllMetadata);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1125 CHECK_FUNCTION_EXISTS(backend_, getAllPublicIds);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1126 CHECK_FUNCTION_EXISTS(backend_, getAllPublicIdsWithLimit);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1127 CHECK_FUNCTION_EXISTS(backend_, getChanges);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1128 CHECK_FUNCTION_EXISTS(backend_, getChildrenInternalId);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1129 CHECK_FUNCTION_EXISTS(backend_, getChildrenMetadata);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1130 CHECK_FUNCTION_EXISTS(backend_, getChildrenPublicId);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1131 CHECK_FUNCTION_EXISTS(backend_, getExportedResources);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1132 CHECK_FUNCTION_EXISTS(backend_, getLastChange);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1133 CHECK_FUNCTION_EXISTS(backend_, getLastChangeIndex);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1134 CHECK_FUNCTION_EXISTS(backend_, getLastExportedResource);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1135 CHECK_FUNCTION_EXISTS(backend_, getMainDicomTags);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1136 CHECK_FUNCTION_EXISTS(backend_, getPublicId);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1137 CHECK_FUNCTION_EXISTS(backend_, getResourceType);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1138 CHECK_FUNCTION_EXISTS(backend_, getResourcesCount);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1139 CHECK_FUNCTION_EXISTS(backend_, getTotalCompressedSize);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1140 CHECK_FUNCTION_EXISTS(backend_, getTotalUncompressedSize);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1141 CHECK_FUNCTION_EXISTS(backend_, isDiskSizeAbove);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1142 CHECK_FUNCTION_EXISTS(backend_, isExistingResource);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1143 CHECK_FUNCTION_EXISTS(backend_, isProtectedPatient);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1144 CHECK_FUNCTION_EXISTS(backend_, listAvailableAttachments);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1145 CHECK_FUNCTION_EXISTS(backend_, logChange);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1146 CHECK_FUNCTION_EXISTS(backend_, logExportedResource);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1147 CHECK_FUNCTION_EXISTS(backend_, lookupAttachment);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1148 CHECK_FUNCTION_EXISTS(backend_, lookupGlobalProperty);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1149 CHECK_FUNCTION_EXISTS(backend_, lookupMetadata);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1150 CHECK_FUNCTION_EXISTS(backend_, lookupParent);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1151 CHECK_FUNCTION_EXISTS(backend_, lookupResource);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1152 CHECK_FUNCTION_EXISTS(backend_, lookupResourceAndParent);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1153 CHECK_FUNCTION_EXISTS(backend_, lookupResources);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1154 CHECK_FUNCTION_EXISTS(backend_, selectPatientToRecycle);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1155 CHECK_FUNCTION_EXISTS(backend_, selectPatientToRecycle2);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1156 CHECK_FUNCTION_EXISTS(backend_, setGlobalProperty);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1157 CHECK_FUNCTION_EXISTS(backend_, setMetadata);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1158 CHECK_FUNCTION_EXISTS(backend_, setProtectedPatient);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1159 CHECK_FUNCTION_EXISTS(backend_, setResourcesContent);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1160 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1161
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1162
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1163 OrthancPluginDatabaseV4::~OrthancPluginDatabaseV4()
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1164 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1165 if (database_ != NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1166 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1167 OrthancPluginErrorCode code = backend_.destructDatabase(database_);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1168 if (code != OrthancPluginErrorCode_Success)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1169 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1170 // Don't throw exception in destructors
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1171 errorDictionary_.LogError(code, true);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1172 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1173 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1174 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1175
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1176
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1177 void OrthancPluginDatabaseV4::Open()
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1178 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1179 CheckSuccess(backend_.open(database_));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1180 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1181
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1182
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1183 void OrthancPluginDatabaseV4::Close()
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1184 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1185 CheckSuccess(backend_.close(database_));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1186 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1187
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1188
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1189 IDatabaseWrapper::ITransaction* OrthancPluginDatabaseV4::StartTransaction(TransactionType type,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1190 IDatabaseListener& listener)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1191 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1192 switch (type)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1193 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1194 case TransactionType_ReadOnly:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1195 return new Transaction(*this, listener, OrthancPluginDatabaseTransactionType_ReadOnly);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1196
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1197 case TransactionType_ReadWrite:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1198 return new Transaction(*this, listener, OrthancPluginDatabaseTransactionType_ReadWrite);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1199
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1200 default:
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1201 throw OrthancException(ErrorCode_InternalError);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1202 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1203 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1204
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1205
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1206 unsigned int OrthancPluginDatabaseV4::GetDatabaseVersion()
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1207 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1208 uint32_t version = 0;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1209 CheckSuccess(backend_.getDatabaseVersion(database_, &version));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1210 return version;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1211 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1212
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1213
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1214 void OrthancPluginDatabaseV4::Upgrade(unsigned int targetVersion,
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1215 IStorageArea& storageArea)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1216 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1217 VoidDatabaseListener listener;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1218
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1219 if (backend_.upgradeDatabase != NULL)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1220 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1221 Transaction transaction(*this, listener, OrthancPluginDatabaseTransactionType_ReadWrite);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1222
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1223 OrthancPluginErrorCode code = backend_.upgradeDatabase(
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1224 database_, reinterpret_cast<OrthancPluginStorageArea*>(&storageArea),
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1225 static_cast<uint32_t>(targetVersion));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1226
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1227 if (code == OrthancPluginErrorCode_Success)
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1228 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1229 transaction.Commit(0);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1230 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1231 else
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1232 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1233 transaction.Rollback();
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1234 errorDictionary_.LogError(code, true);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1235 throw OrthancException(static_cast<ErrorCode>(code));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1236 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1237 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1238 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1239
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1240
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1241 bool OrthancPluginDatabaseV4::HasRevisionsSupport() const
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1242 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1243 // WARNING: This method requires "Open()" to have been called
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1244 uint8_t hasRevisions;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1245 CheckSuccess(backend_.hasRevisionsSupport(database_, &hasRevisions));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1246 return (hasRevisions != 0);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1247 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1248
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1249 bool OrthancPluginDatabaseV4::HasAttachmentCustomDataSupport() const
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1250 {
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1251 // WARNING: This method requires "Open()" to have been called
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1252 uint8_t hasAttachmentCustomDataSupport;
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1253 CheckSuccess(backend_.hasAttachmentCustomDataSupport(database_, &hasAttachmentCustomDataSupport));
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1254 return (hasAttachmentCustomDataSupport != 0);
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1255 }
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents:
diff changeset
1256 }