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