annotate OrthancServer/Plugins/Engine/OrthancPluginDatabaseV3.cpp @ 4600:c02a04e6161d db-changes

processing of database events in OrthancPluginDatabaseV3
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 18 Mar 2021 12:09:29 +0100
parents da2e0a457eae
children 27c07dbf6b4f
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
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 * Copyright (C) 2017-2021 Osimis S.A., Belgium
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6 *
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 * 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
8 * 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
9 * 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
10 * License, or (at your option) any later version.
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 *
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 * In addition, as a special exception, the copyright holders of this
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 * program give permission to link the code of its release with the
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 * OpenSSL project's "OpenSSL" library (or with modified versions of it
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 * that use the same license as the "OpenSSL" library), and distribute
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 * the linked executables. You must obey the GNU General Public License
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 * in all respects for all of the code used other than "OpenSSL". If you
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 * modify file(s) with this exception, you may extend this exception to
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 * your version of the file(s), but you are not obligated to do so. If
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 * you do not wish to do so, delete this exception statement from your
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21 * version. If you delete this exception statement from all source files
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 * in the program, then also delete it here.
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23 *
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24 * 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
25 * WITHOUT ANY WARRANTY; without even the implied warranty of
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26 * 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
27 * General Public License for more details.
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
28 *
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
29 * 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
30 * 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
31 **/
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
32
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
33
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
34 #include "../../Sources/PrecompiledHeadersServer.h"
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
35 #include "OrthancPluginDatabaseV3.h"
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
36
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37 #if ORTHANC_ENABLE_PLUGINS != 1
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38 # error The plugin support is disabled
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39 #endif
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
40
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
41 #include "../../../OrthancFramework/Sources/Logging.h"
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42 #include "../../../OrthancFramework/Sources/OrthancException.h"
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
43 #include "../../Sources/Database/ResourcesContent.h"
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44 #include "../../Sources/Database/VoidDatabaseListener.h"
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
45 #include "PluginsEnumerations.h"
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
46
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
47 #include <cassert>
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
48
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
49 namespace Orthanc
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
50 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
51 class OrthancPluginDatabaseV3::Transaction : public IDatabaseWrapper::ITransaction
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
52 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
53 private:
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
54 OrthancPluginDatabaseV3& that_;
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
55 IDatabaseListener& listener_;
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
56 OrthancPluginDatabaseTransaction* transaction_;
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
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
59 void CheckSuccess(OrthancPluginErrorCode code) const
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 that_.CheckSuccess(code);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
63
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
64
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
65 static FileInfo Convert(const OrthancPluginAttachment& attachment)
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
66 {
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
67 return FileInfo(attachment.uuid,
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
68 static_cast<FileContentType>(attachment.contentType),
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
69 attachment.uncompressedSize,
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
70 attachment.uncompressedHash,
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
71 static_cast<CompressionType>(attachment.compressionType),
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
72 attachment.compressedSize,
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
73 attachment.compressedHash);
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
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
76
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
77 void ReadStringAnswers(std::list<std::string>& target)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
78 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
79 uint32_t count;
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
80 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
81
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
82 target.clear();
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
83 for (uint32_t i = 0; i < count; i++)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
84 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
85 const char* value = NULL;
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
86 CheckSuccess(that_.backend_.readAnswerString(transaction_, &value, i));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
87 if (value == NULL)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
88 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
89 throw OrthancException(ErrorCode_DatabasePlugin);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
90 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
91 else
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
92 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
93 target.push_back(value);
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 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
97
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
98
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
99 bool ReadSingleStringAnswer(std::string& target)
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
100 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
101 uint32_t count;
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
102 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
103
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
104 if (count == 0)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
105 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
106 return false;
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
107 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
108 else if (count == 1)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
109 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
110 const char* value = NULL;
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
111 CheckSuccess(that_.backend_.readAnswerString(transaction_, &value, 0));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
112 if (value == NULL)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
113 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
114 throw OrthancException(ErrorCode_DatabasePlugin);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
115 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
116 else
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
117 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
118 target.assign(value);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
119 return true;
4595
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 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
122 else
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
123 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
124 throw OrthancException(ErrorCode_DatabasePlugin);
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 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
127
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
128
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
129 bool ReadSingleInt64Answer(int64_t& target)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
130 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
131 uint32_t count;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
132 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
133
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
134 if (count == 0)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
135 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
136 return false;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
137 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
138 else if (count == 1)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
139 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
140 CheckSuccess(that_.backend_.readAnswerInt64(transaction_, &target, 0));
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
141 return true;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
142 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
143 else
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
144 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
145 throw OrthancException(ErrorCode_DatabasePlugin);
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 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
148
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
149
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
150 ExportedResource ReadAnswerExportedResource(uint32_t answerIndex)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
151 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
152 OrthancPluginExportedResource exported;
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
153 CheckSuccess(that_.backend_.readAnswerExportedResource(transaction_, &exported, answerIndex));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
154
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
155 if (exported.publicId == NULL ||
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
156 exported.modality == NULL ||
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
157 exported.date == NULL ||
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
158 exported.patientId == NULL ||
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
159 exported.studyInstanceUid == NULL ||
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
160 exported.seriesInstanceUid == NULL ||
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
161 exported.sopInstanceUid == NULL)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
162 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
163 throw OrthancException(ErrorCode_DatabasePlugin);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
164 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
165 else
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
166 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
167 return ExportedResource(exported.seq,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
168 Plugins::Convert(exported.resourceType),
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
169 exported.publicId,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
170 exported.modality,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
171 exported.date,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
172 exported.patientId,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
173 exported.studyInstanceUid,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
174 exported.seriesInstanceUid,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
175 exported.sopInstanceUid);
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
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
180 ServerIndexChange ReadAnswerChange(uint32_t answerIndex)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
181 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
182 OrthancPluginChange change;
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
183 CheckSuccess(that_.backend_.readAnswerChange(transaction_, &change, answerIndex));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
184
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
185 if (change.publicId == NULL ||
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
186 change.date == NULL)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
187 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
188 throw OrthancException(ErrorCode_DatabasePlugin);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
189 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
190 else
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
191 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
192 return ServerIndexChange(change.seq,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
193 static_cast<ChangeType>(change.changeType),
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
194 Plugins::Convert(change.resourceType),
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
195 change.publicId,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
196 change.date);
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
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
200
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
201 void CheckNoEvent()
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
202 {
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
203 uint32_t count;
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
204 CheckSuccess(that_.backend_.readEventsCount(transaction_, &count));
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
205 if (count != 0)
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
206 {
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
207 throw OrthancException(ErrorCode_DatabasePlugin);
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
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
212 void ProcessEvents(bool isDeletingAttachment)
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
213 {
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
214 uint32_t count;
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
215 CheckSuccess(that_.backend_.readEventsCount(transaction_, &count));
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
216
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
217 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
218 {
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
219 OrthancPluginDatabaseEvent event;
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
220 CheckSuccess(that_.backend_.readEvent(transaction_, &event, i));
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
221
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
222 switch (event.type)
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
223 {
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
224 case OrthancPluginDatabaseEventType_DeletedAttachment:
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
225 listener_.SignalAttachmentDeleted(Convert(event.content.attachment));
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
226 break;
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
227
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
228 case OrthancPluginDatabaseEventType_DeletedResource:
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
229 if (isDeletingAttachment)
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
230 {
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
231 // 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
232 throw OrthancException(ErrorCode_DatabasePlugin);
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
233 }
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
234 else
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
235 {
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
236 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
237 }
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
238 break;
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
239
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
240 case OrthancPluginDatabaseEventType_RemainingAncestor:
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
241 if (isDeletingAttachment)
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
242 {
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
243 // This event should only triggered by "DeleteResource()"
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
244 throw OrthancException(ErrorCode_DatabasePlugin);
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
245 }
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
246 else
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
247 {
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
248 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
249 }
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
250 break;
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
251
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
252 default:
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
253 break; // Unhandled event
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
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
258
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
259 public:
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
260 Transaction(OrthancPluginDatabaseV3& that,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
261 IDatabaseListener& listener,
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
262 OrthancPluginDatabaseTransactionType type) :
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
263 that_(that),
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
264 listener_(listener)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
265 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
266 CheckSuccess(that.backend_.startTransaction(that.database_, &transaction_, type));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
267 if (transaction_ == NULL)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
268 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
269 throw OrthancException(ErrorCode_DatabasePlugin);
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
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
274 virtual ~Transaction()
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
275 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
276 OrthancPluginErrorCode code = that_.backend_.destructTransaction(transaction_);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
277 if (code != OrthancPluginErrorCode_Success)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
278 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
279 // Don't throw exception in destructors
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
280 that_.errorDictionary_.LogError(code, true);
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
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
285 virtual void Rollback() ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
286 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
287 CheckSuccess(that_.backend_.rollback(transaction_));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
288 CheckNoEvent();
4595
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
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
292 virtual void Commit(int64_t fileSizeDelta) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
293 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
294 CheckSuccess(that_.backend_.commit(transaction_, fileSizeDelta));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
295 CheckNoEvent();
4595
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
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
299 virtual void AddAttachment(int64_t id,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
300 const FileInfo& attachment) ORTHANC_OVERRIDE
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
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
311 CheckSuccess(that_.backend_.addAttachment(transaction_, id, &tmp));
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,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
661 int64_t id,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
662 FileContentType contentType) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
663 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
664 CheckSuccess(that_.backend_.lookupAttachment(transaction_, id, static_cast<int32_t>(contentType)));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
665 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
666
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
667 uint32_t count;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
668 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
669
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
670 if (count == 0)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
671 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
672 return false;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
673 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
674 else if (count == 1)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
675 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
676 OrthancPluginAttachment tmp;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
677 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
678 attachment = Convert(tmp);
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
679 return true;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
680 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
681 else
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
682 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
683 throw OrthancException(ErrorCode_DatabasePlugin);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
684 }
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
685 }
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 virtual bool LookupGlobalProperty(std::string& target,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
689 GlobalProperty property) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
690 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
691 CheckSuccess(that_.backend_.lookupGlobalProperty(transaction_, static_cast<int32_t>(property)));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
692 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
693 return ReadSingleStringAnswer(target);
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
694 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
695
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
696
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
697 virtual bool LookupMetadata(std::string& target,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
698 int64_t id,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
699 MetadataType type) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
700 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
701 CheckSuccess(that_.backend_.lookupMetadata(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
702 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
703 return ReadSingleStringAnswer(target);
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
704 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
705
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
706
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
707 virtual bool LookupParent(int64_t& parentId,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
708 int64_t resourceId) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
709 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
710 CheckSuccess(that_.backend_.lookupParent(transaction_, resourceId));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
711 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
712 return ReadSingleInt64Answer(parentId);
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
713 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
714
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
715
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
716 virtual bool LookupResource(int64_t& id,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
717 ResourceType& type,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
718 const std::string& publicId) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
719 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
720 CheckSuccess(that_.backend_.lookupResource(transaction_, Plugins::Convert(type), publicId.c_str()));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
721 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
722 return ReadSingleInt64Answer(id);
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
723 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
724
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
725
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
726 virtual bool SelectPatientToRecycle(int64_t& internalId) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
727 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
728 CheckSuccess(that_.backend_.selectPatientToRecycle(transaction_));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
729 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
730 return ReadSingleInt64Answer(internalId);
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
731 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
732
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
733
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
734 virtual bool SelectPatientToRecycle(int64_t& internalId,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
735 int64_t patientIdToAvoid) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
736 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
737 CheckSuccess(that_.backend_.selectPatientToRecycle2(transaction_, patientIdToAvoid));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
738 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
739 return ReadSingleInt64Answer(internalId);
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 void SetGlobalProperty(GlobalProperty property,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
744 const std::string& value) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
745 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
746 CheckSuccess(that_.backend_.setGlobalProperty(transaction_, 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
747 CheckNoEvent();
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
748 }
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 virtual void ClearMainDicomTags(int64_t id) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
752 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
753 CheckSuccess(that_.backend_.clearMainDicomTags(transaction_, id));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
754 CheckNoEvent();
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
755 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
756
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
757
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
758 virtual void SetMetadata(int64_t id,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
759 MetadataType type,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
760 const std::string& value) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
761 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
762 CheckSuccess(that_.backend_.setMetadata(transaction_, id, static_cast<int32_t>(type), value.c_str()));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
763 CheckNoEvent();
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
764 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
765
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
766
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
767 virtual void SetProtectedPatient(int64_t internalId,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
768 bool isProtected) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
769 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
770 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
771 CheckNoEvent();
4595
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
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
774
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
775 virtual bool IsDiskSizeAbove(uint64_t threshold) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
776 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
777 uint8_t tmp;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
778 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
779 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
780 return (tmp != 0);
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
781 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
782
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
783
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
784 virtual void ApplyLookupResources(std::list<std::string>& resourcesId,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
785 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
786 const std::vector<DatabaseConstraint>& lookup,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
787 ResourceType queryLevel,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
788 size_t limit) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
789 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
790 std::vector<OrthancPluginDatabaseConstraint> constraints;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
791 std::vector< std::vector<const char*> > constraintsValues;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
792
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
793 constraints.resize(lookup.size());
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
794 constraintsValues.resize(lookup.size());
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
795
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
796 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
797 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
798 lookup[i].EncodeForPlugins(constraints[i], constraintsValues[i]);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
799 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
800
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
801 CheckSuccess(that_.backend_.lookupResources(transaction_, lookup.size(),
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
802 (lookup.empty() ? NULL : &constraints[0]),
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
803 Plugins::Convert(queryLevel),
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
804 limit, (instancesId == NULL ? 0 : 1)));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
805 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
806
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
807 uint32_t count;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
808 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
809
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
810 resourcesId.clear();
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
811
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
812 if (instancesId != NULL)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
813 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
814 instancesId->clear();
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
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
817 for (uint32_t i = 0; i < count; i++)
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 OrthancPluginMatchingResource resource;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
820 CheckSuccess(that_.backend_.readAnswerMatchingResource(transaction_, &resource, i));
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
821
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
822 if (resource.resourceId == NULL)
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 throw OrthancException(ErrorCode_DatabasePlugin);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
825 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
826
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
827 resourcesId.push_back(resource.resourceId);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
828
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
829 if (instancesId != NULL)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
830 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
831 if (resource.someInstanceId == NULL)
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 throw OrthancException(ErrorCode_DatabasePlugin);
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 else
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->push_back(resource.someInstanceId);
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 }
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
841 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
842
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
843
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
844 virtual bool CreateInstance(CreateInstanceResult& result, /* out */
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
845 int64_t& instanceId, /* out */
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
846 const std::string& patient,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
847 const std::string& study,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
848 const std::string& series,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
849 const std::string& instance) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
850 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
851 OrthancPluginCreateInstanceResult output;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
852 memset(&output, 0, sizeof(output));
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 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
855 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
856 CheckNoEvent();
4598
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 instanceId = output.instanceId;
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 if (output.isNewInstance)
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 result.isNewPatient_ = output.isNewPatient;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
863 result.isNewStudy_ = output.isNewStudy;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
864 result.isNewSeries_ = output.isNewSeries;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
865 result.patientId_ = output.patientId;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
866 result.studyId_ = output.studyId;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
867 result.seriesId_ = output.seriesId;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
868 return true;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
869 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
870 else
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
871 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
872 return false;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
873 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
874
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
875 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
876
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
877
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
878 virtual void SetResourcesContent(const ResourcesContent& content) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
879 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
880 std::vector<OrthancPluginResourcesContentTags> identifierTags;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
881 std::vector<OrthancPluginResourcesContentTags> mainDicomTags;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
882 std::vector<OrthancPluginResourcesContentMetadata> metadata;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
883
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
884 identifierTags.reserve(content.GetListTags().size());
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
885 mainDicomTags.reserve(content.GetListTags().size());
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
886 metadata.reserve(content.GetListMetadata().size());
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
887
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
888 for (ResourcesContent::ListTags::const_iterator
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
889 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
890 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
891 OrthancPluginResourcesContentTags tmp;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
892 tmp.resource = it->resourceId_;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
893 tmp.group = it->tag_.GetGroup();
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
894 tmp.element = it->tag_.GetElement();
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
895 tmp.value = it->value_.c_str();
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 if (it->isIdentifier_)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
898 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
899 identifierTags.push_back(tmp);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
900 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
901 else
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
902 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
903 mainDicomTags.push_back(tmp);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
904 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
905 }
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 for (ResourcesContent::ListMetadata::const_iterator
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
908 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
909 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
910 OrthancPluginResourcesContentMetadata tmp;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
911 tmp.resource = it->resourceId_;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
912 tmp.metadata = it->metadata_;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
913 tmp.value = it->value_.c_str();
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
914 metadata.push_back(tmp);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
915 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
916
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
917 assert(identifierTags.size() + mainDicomTags.size() == content.GetListTags().size() &&
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
918 metadata.size() == content.GetListMetadata().size());
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 CheckSuccess(that_.backend_.setResourcesContent(transaction_,
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
921 identifierTags.size(),
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
922 (identifierTags.empty() ? NULL : &identifierTags[0]),
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
923 mainDicomTags.size(),
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
924 (mainDicomTags.empty() ? NULL : &mainDicomTags[0]),
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
925 metadata.size(),
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
926 (metadata.empty() ? NULL : &metadata[0])));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
927 CheckNoEvent();
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
928 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
929
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
930
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
931 virtual void GetChildrenMetadata(std::list<std::string>& target,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
932 int64_t resourceId,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
933 MetadataType metadata) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
934 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
935 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
936 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
937 ReadStringAnswers(target);
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
938 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
939
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
940
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
941 virtual int64_t GetLastChangeIndex() ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
942 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
943 int64_t tmp;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
944 CheckSuccess(that_.backend_.getLastChangeIndex(transaction_, &tmp));
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
945 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
946 return tmp;
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
947 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
948
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
949
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
950 virtual bool LookupResourceAndParent(int64_t& id,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
951 ResourceType& type,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
952 std::string& parentPublicId,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
953 const std::string& publicId) ORTHANC_OVERRIDE
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
954 {
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
955 uint8_t isExisting;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
956 OrthancPluginResourceType tmpType;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
957 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
958 CheckNoEvent();
4598
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
959
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
960 if (isExisting)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
961 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
962 type = Plugins::Convert(tmpType);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
963
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
964 uint32_t count;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
965 CheckSuccess(that_.backend_.readAnswersCount(transaction_, &count));
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
966
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
967 if (count > 1)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
968 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
969 throw OrthancException(ErrorCode_DatabasePlugin);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
970 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
971
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
972 switch (type)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
973 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
974 case ResourceType_Patient:
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
975 // A patient has no parent
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
976 if (count == 1)
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
977 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
978 throw OrthancException(ErrorCode_DatabasePlugin);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
979 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
980 break;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
981
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
982 case ResourceType_Study:
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
983 case ResourceType_Series:
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
984 case ResourceType_Instance:
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
985 if (count == 0)
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 throw OrthancException(ErrorCode_DatabasePlugin);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
988 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
989 else
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
990 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
991 const char* value = NULL;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
992 CheckSuccess(that_.backend_.readAnswerString(transaction_, &value, 0));
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
993 if (value == NULL)
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 throw OrthancException(ErrorCode_DatabasePlugin);
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 else
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
998 {
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
999 parentPublicId.assign(value);
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 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1002 break;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1003
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1004 default:
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1005 throw OrthancException(ErrorCode_DatabasePlugin);
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1006 }
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1007
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1008 return true;
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 else
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 return false;
da2e0a457eae OrthancPluginDatabaseV3::Transaction is fully implemented
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1013 }
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1014 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1015 };
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1016
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1017
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1018 void OrthancPluginDatabaseV3::CheckSuccess(OrthancPluginErrorCode code)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1019 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1020 if (code != OrthancPluginErrorCode_Success)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1021 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1022 errorDictionary_.LogError(code, true);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1023 throw OrthancException(static_cast<ErrorCode>(code));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1024 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1025 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1026
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1027
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1028 OrthancPluginDatabaseV3::OrthancPluginDatabaseV3(SharedLibrary& library,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1029 PluginsErrorDictionary& errorDictionary,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1030 const OrthancPluginDatabaseBackendV3* backend,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1031 size_t backendSize,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1032 OrthancPluginDatabaseContext* database) :
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1033 library_(library),
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1034 errorDictionary_(errorDictionary),
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1035 database_(database)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1036 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1037 if (backendSize >= sizeof(backend_))
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 memcpy(&backend_, backend, sizeof(backend_));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1040 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1041 else
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 // Not all the primitives are implemented by the plugin
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1044 memset(&backend_, 0, sizeof(backend_));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1045 memcpy(&backend_, backend, backendSize);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1046 }
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 OrthancPluginDatabaseV3::~OrthancPluginDatabaseV3()
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1051 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1052 if (database_ != NULL)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1053 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1054 OrthancPluginErrorCode code = backend_.destructDatabase(database_);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1055 if (code != OrthancPluginErrorCode_Success)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1056 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1057 // Don't throw exception in destructors
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1058 errorDictionary_.LogError(code, true);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1059 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1060 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1061 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1062
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1063
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1064 void OrthancPluginDatabaseV3::Open()
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1065 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1066 CheckSuccess(backend_.open(database_));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1067 }
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
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1070 void OrthancPluginDatabaseV3::Close()
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1071 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1072 CheckSuccess(backend_.close(database_));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1073 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1074
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1075
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1076 IDatabaseWrapper::ITransaction* OrthancPluginDatabaseV3::StartTransaction(TransactionType type,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1077 IDatabaseListener& listener)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1078 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1079 switch (type)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1080 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1081 case TransactionType_ReadOnly:
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
1082 return new Transaction(*this, listener, OrthancPluginDatabaseTransactionType_ReadOnly);
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1083
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1084 case TransactionType_ReadWrite:
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
1085 return new Transaction(*this, listener, OrthancPluginDatabaseTransactionType_ReadWrite);
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1086
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1087 default:
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1088 throw OrthancException(ErrorCode_InternalError);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1089 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1090 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1091
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1092
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1093 unsigned int OrthancPluginDatabaseV3::GetDatabaseVersion()
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1094 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1095 uint32_t version = 0;
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1096 CheckSuccess(backend_.getDatabaseVersion(database_, &version));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1097 return version;
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1098 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1099
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1100
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1101 void OrthancPluginDatabaseV3::Upgrade(unsigned int targetVersion,
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1102 IStorageArea& storageArea)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1103 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1104 VoidDatabaseListener listener;
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1105
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1106 if (backend_.upgradeDatabase != NULL)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1107 {
4600
c02a04e6161d processing of database events in OrthancPluginDatabaseV3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4598
diff changeset
1108 Transaction transaction(*this, listener, OrthancPluginDatabaseTransactionType_ReadWrite);
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1109
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1110 OrthancPluginErrorCode code = backend_.upgradeDatabase(
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1111 database_, reinterpret_cast<OrthancPluginStorageArea*>(&storageArea),
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1112 static_cast<uint32_t>(targetVersion));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1113
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1114 if (code == OrthancPluginErrorCode_Success)
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1115 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1116 transaction.Commit(0);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1117 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1118 else
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1119 {
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1120 transaction.Rollback();
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1121 errorDictionary_.LogError(code, true);
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1122 throw OrthancException(static_cast<ErrorCode>(code));
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1123 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1124 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1125 }
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1126 }