annotate OrthancServer/Plugins/Engine/OrthancPluginDatabase.cpp @ 5822:ca5622c27d6c attach-custom-data tip

merged find-refactoring -> attach-custom-data
author Alain Mazy <am@orthanc.team>
date Tue, 01 Oct 2024 16:01:50 +0200
parents 023a99146dd0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1309
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 /**
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2 * Orthanc - A Lightweight, RESTful DICOM Store
1900
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1762
diff changeset
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
1309
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 * Department, University Hospital of Liege, Belgium
5640
f7adfb22e20e updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5519
diff changeset
5 * Copyright (C) 2017-2023 Osimis S.A., Belgium
f7adfb22e20e updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5519
diff changeset
6 * Copyright (C) 2024-2024 Orthanc Team SRL, Belgium
5485
48b8dae6dc77 upgrade to year 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5249
diff changeset
7 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
1309
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 *
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 * This program is free software: you can redistribute it and/or
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 * modify it under the terms of the GNU General Public License as
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 * published by the Free Software Foundation, either version 3 of the
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 * License, or (at your option) any later version.
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 *
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful, but
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 * General Public License for more details.
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 *
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 * along with this program. If not, see <http://www.gnu.org/licenses/>.
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21 **/
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23
4045
05b8fd21089c fix path
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4044
diff changeset
24 #include "../../Sources/PrecompiledHeadersServer.h"
1309
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25 #include "OrthancPluginDatabase.h"
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26
2136
dd609a99d39a uniformization of the macro naming
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2007
diff changeset
27 #if ORTHANC_ENABLE_PLUGINS != 1
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4594
diff changeset
28 # error The plugin support is disabled
1632
eb8fbcf008b5 fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1630
diff changeset
29 #endif
eb8fbcf008b5 fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1630
diff changeset
30
eb8fbcf008b5 fix build with plugins disabled
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1630
diff changeset
31
4045
05b8fd21089c fix path
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4044
diff changeset
32 #include "../../../OrthancFramework/Sources/Logging.h"
05b8fd21089c fix path
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4044
diff changeset
33 #include "../../../OrthancFramework/Sources/OrthancException.h"
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4594
diff changeset
34 #include "../../Sources/Database/Compatibility/ICreateInstance.h"
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4594
diff changeset
35 #include "../../Sources/Database/Compatibility/IGetChildrenMetadata.h"
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4594
diff changeset
36 #include "../../Sources/Database/Compatibility/ILookupResourceAndParent.h"
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4594
diff changeset
37 #include "../../Sources/Database/Compatibility/ILookupResources.h"
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4594
diff changeset
38 #include "../../Sources/Database/Compatibility/ISetResourcesContent.h"
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
39 #include "../../Sources/Database/VoidDatabaseListener.h"
1629
bad4772b605c OrthancPluginErrorCode in database plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1625
diff changeset
40 #include "PluginsEnumerations.h"
1309
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
41
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42 #include <cassert>
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44 namespace Orthanc
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
45 {
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
46 class OrthancPluginDatabase::Transaction :
5455
176bc05f85f4 DB: new Capabilities class to manage future new methods from DB plugins + Added IncrementGlobalProperty
Alain Mazy <am@osimis.io>
parents: 5249
diff changeset
47 public BaseDatabaseWrapper::BaseTransaction,
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
48 public Compatibility::ICreateInstance,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
49 public Compatibility::IGetChildrenMetadata,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
50 public Compatibility::ILookupResources,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
51 public Compatibility::ILookupResourceAndParent,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
52 public Compatibility::ISetResourcesContent
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
53 {
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
54 private:
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
55 typedef std::pair<int64_t, ResourceType> AnswerResource;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
56 typedef std::map<MetadataType, std::string> AnswerMetadata;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
57
4594
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
58 OrthancPluginDatabase& that_;
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
59 boost::recursive_mutex::scoped_lock lock_;
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
60 IDatabaseListener& listener_;
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
61 _OrthancPluginDatabaseAnswerType type_;
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
62
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
63 std::list<std::string> answerStrings_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
64 std::list<int32_t> answerInt32_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
65 std::list<int64_t> answerInt64_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
66 std::list<AnswerResource> answerResources_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
67 std::list<FileInfo> answerAttachments_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
68
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
69 DicomMap* answerDicomMap_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
70 std::list<ServerIndexChange>* answerChanges_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
71 std::list<ExportedResource>* answerExportedResources_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
72 bool* answerDone_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
73 bool answerDoneIgnored_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
74 std::list<std::string>* answerMatchingResources_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
75 std::list<std::string>* answerMatchingInstances_;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
76 AnswerMetadata* answerMetadata_;
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
77
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
78 void CheckSuccess(OrthancPluginErrorCode code) const
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
79 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
80 that_.CheckSuccess(code);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
81 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
82
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
83
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
84 static FileInfo Convert(const OrthancPluginAttachment& attachment)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
85 {
5080
d7274e43ea7c allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents: 4892
diff changeset
86 std::string customData;
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
87 return FileInfo(attachment.uuid,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
88 static_cast<FileContentType>(attachment.contentType),
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
89 attachment.uncompressedSize,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
90 attachment.uncompressedHash,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
91 static_cast<CompressionType>(attachment.compressionType),
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
92 attachment.compressedSize,
5080
d7274e43ea7c allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents: 4892
diff changeset
93 attachment.compressedHash,
d7274e43ea7c allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents: 4892
diff changeset
94 customData);
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
95 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
96
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
97
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
98 void ResetAnswers()
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
99 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
100 type_ = _OrthancPluginDatabaseAnswerType_None;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
101
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
102 answerDicomMap_ = NULL;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
103 answerChanges_ = NULL;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
104 answerExportedResources_ = NULL;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
105 answerDone_ = NULL;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
106 answerMatchingResources_ = NULL;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
107 answerMatchingInstances_ = NULL;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
108 answerMetadata_ = NULL;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
109 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
110
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
111
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
112 void ForwardAnswers(std::list<int64_t>& target)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
113 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
114 if (type_ != _OrthancPluginDatabaseAnswerType_None &&
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
115 type_ != _OrthancPluginDatabaseAnswerType_Int64)
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
116 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
117 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
118 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
119
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
120 target.clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
121
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
122 if (type_ == _OrthancPluginDatabaseAnswerType_Int64)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
123 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
124 for (std::list<int64_t>::const_iterator
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
125 it = answerInt64_.begin(); it != answerInt64_.end(); ++it)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
126 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
127 target.push_back(*it);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
128 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
129 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
130 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
131
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
132
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
133 void ForwardAnswers(std::list<std::string>& target)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
134 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
135 if (type_ != _OrthancPluginDatabaseAnswerType_None &&
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
136 type_ != _OrthancPluginDatabaseAnswerType_String)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
137 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
138 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
139 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
140
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
141 target.clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
142
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
143 if (type_ == _OrthancPluginDatabaseAnswerType_String)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
144 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
145 for (std::list<std::string>::const_iterator
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
146 it = answerStrings_.begin(); it != answerStrings_.end(); ++it)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
147 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
148 target.push_back(*it);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
149 }
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
150 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
151 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
152
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
153
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
154 bool ForwardSingleAnswer(std::string& target)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
155 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
156 if (type_ == _OrthancPluginDatabaseAnswerType_None)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
157 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
158 return false;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
159 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
160 else if (type_ == _OrthancPluginDatabaseAnswerType_String &&
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
161 answerStrings_.size() == 1)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
162 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
163 target = answerStrings_.front();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
164 return true;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
165 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
166 else
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
167 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
168 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
169 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
170 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
171
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
172
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
173 bool ForwardSingleAnswer(int64_t& target)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
174 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
175 if (type_ == _OrthancPluginDatabaseAnswerType_None)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
176 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
177 return false;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
178 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
179 else if (type_ == _OrthancPluginDatabaseAnswerType_Int64 &&
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
180 answerInt64_.size() == 1)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
181 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
182 target = answerInt64_.front();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
183 return true;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
184 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
185 else
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
186 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
187 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
188 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
189 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
190
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
191
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
192 void ProcessEvent(const _OrthancPluginDatabaseAnswer& answer)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
193 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
194 switch (answer.type)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
195 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
196 case _OrthancPluginDatabaseAnswerType_DeletedAttachment:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
197 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
198 const OrthancPluginAttachment& attachment =
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
199 *reinterpret_cast<const OrthancPluginAttachment*>(answer.valueGeneric);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
200 listener_.SignalAttachmentDeleted(Convert(attachment));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
201 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
202 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
203
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
204 case _OrthancPluginDatabaseAnswerType_RemainingAncestor:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
205 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
206 ResourceType type = Plugins::Convert(static_cast<OrthancPluginResourceType>(answer.valueInt32));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
207 listener_.SignalRemainingAncestor(type, answer.valueString);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
208 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
209 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
210
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
211 case _OrthancPluginDatabaseAnswerType_DeletedResource:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
212 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
213 ResourceType type = Plugins::Convert(static_cast<OrthancPluginResourceType>(answer.valueInt32));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
214 listener_.SignalResourceDeleted(type, answer.valueString);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
215 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
216 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
217
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
218 default:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
219 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
220 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
221 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
222
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
223
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
224 public:
4589
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
225 explicit Transaction(OrthancPluginDatabase& that,
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
226 IDatabaseListener& listener) :
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
227 that_(that),
4594
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
228 lock_(that.mutex_),
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
229 listener_(listener),
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
230 type_(_OrthancPluginDatabaseAnswerType_None),
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
231 answerDoneIgnored_(false)
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
232 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
233 if (that_.activeTransaction_ != NULL)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
234 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
235 throw OrthancException(ErrorCode_InternalError);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
236 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
237
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
238 that_.activeTransaction_ = this;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
239
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
240 ResetAnswers();
4589
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
241 }
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
242
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
243 virtual ~Transaction()
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
244 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
245 assert(that_.activeTransaction_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
246 that_.activeTransaction_ = NULL;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
247 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
248
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
249 IDatabaseListener& GetDatabaseListener() const
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
250 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
251 return listener_;
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
252 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
253
4556
2a0f8031fb93 removed abstraction IDatabaseWrapper::ITransaction::Begin(), must be done by IDatabaseWrapper::StartTransaction()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4514
diff changeset
254 void Begin()
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
255 {
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
256 CheckSuccess(that_.backend_.startTransaction(that_.payload_));
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
257 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
258
4204
318c16cfccab cppcheck
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4045
diff changeset
259 virtual void Rollback() ORTHANC_OVERRIDE
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
260 {
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
261 CheckSuccess(that_.backend_.rollbackTransaction(that_.payload_));
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
262 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
263
4204
318c16cfccab cppcheck
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4045
diff changeset
264 virtual void Commit(int64_t diskSizeDelta) ORTHANC_OVERRIDE
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
265 {
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
266 if (that_.fastGetTotalSize_)
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
267 {
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
268 CheckSuccess(that_.backend_.commitTransaction(that_.payload_));
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
269 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
270 else
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
271 {
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
272 if (static_cast<int64_t>(that_.currentDiskSize_) + diskSizeDelta < 0)
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
273 {
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
274 throw OrthancException(ErrorCode_DatabasePlugin);
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
275 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
276
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
277 uint64_t newDiskSize = (that_.currentDiskSize_ + diskSizeDelta);
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
278
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
279 assert(newDiskSize == GetTotalCompressedSize());
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
280
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
281 CheckSuccess(that_.backend_.commitTransaction(that_.payload_));
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
282
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
283 // The transaction has succeeded, we can commit the new disk size
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
284 that_.currentDiskSize_ = newDiskSize;
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
285 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
286 }
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
287
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
288
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
289 void AnswerReceived(const _OrthancPluginDatabaseAnswer& answer)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
290 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
291 if (answer.type == _OrthancPluginDatabaseAnswerType_None)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
292 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
293 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
294 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
295
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
296 if (answer.type == _OrthancPluginDatabaseAnswerType_DeletedAttachment ||
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
297 answer.type == _OrthancPluginDatabaseAnswerType_DeletedResource ||
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
298 answer.type == _OrthancPluginDatabaseAnswerType_RemainingAncestor)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
299 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
300 ProcessEvent(answer);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
301 return;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
302 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
303
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
304 if (type_ == _OrthancPluginDatabaseAnswerType_None)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
305 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
306 type_ = answer.type;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
307
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
308 switch (type_)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
309 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
310 case _OrthancPluginDatabaseAnswerType_Int32:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
311 answerInt32_.clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
312 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
313
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
314 case _OrthancPluginDatabaseAnswerType_Int64:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
315 answerInt64_.clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
316 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
317
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
318 case _OrthancPluginDatabaseAnswerType_Resource:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
319 answerResources_.clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
320 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
321
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
322 case _OrthancPluginDatabaseAnswerType_Attachment:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
323 answerAttachments_.clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
324 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
325
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
326 case _OrthancPluginDatabaseAnswerType_String:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
327 answerStrings_.clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
328 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
329
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
330 case _OrthancPluginDatabaseAnswerType_DicomTag:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
331 assert(answerDicomMap_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
332 answerDicomMap_->Clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
333 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
334
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
335 case _OrthancPluginDatabaseAnswerType_Change:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
336 assert(answerChanges_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
337 answerChanges_->clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
338 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
339
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
340 case _OrthancPluginDatabaseAnswerType_ExportedResource:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
341 assert(answerExportedResources_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
342 answerExportedResources_->clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
343 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
344
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
345 case _OrthancPluginDatabaseAnswerType_MatchingResource:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
346 assert(answerMatchingResources_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
347 answerMatchingResources_->clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
348
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
349 if (answerMatchingInstances_ != NULL)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
350 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
351 answerMatchingInstances_->clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
352 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
353
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
354 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
355
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
356 case _OrthancPluginDatabaseAnswerType_Metadata:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
357 assert(answerMetadata_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
358 answerMetadata_->clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
359 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
360
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
361 default:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
362 throw OrthancException(ErrorCode_DatabasePlugin,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
363 "Unhandled type of answer for custom index plugin: " +
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
364 boost::lexical_cast<std::string>(answer.type));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
365 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
366 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
367 else if (type_ != answer.type)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
368 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
369 throw OrthancException(ErrorCode_DatabasePlugin,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
370 "Error in the plugin protocol: Cannot change the answer type");
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
371 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
372
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
373 switch (answer.type)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
374 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
375 case _OrthancPluginDatabaseAnswerType_Int32:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
376 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
377 answerInt32_.push_back(answer.valueInt32);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
378 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
379 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
380
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
381 case _OrthancPluginDatabaseAnswerType_Int64:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
382 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
383 answerInt64_.push_back(answer.valueInt64);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
384 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
385 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
386
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
387 case _OrthancPluginDatabaseAnswerType_Resource:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
388 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
389 OrthancPluginResourceType type = static_cast<OrthancPluginResourceType>(answer.valueInt32);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
390 answerResources_.push_back(std::make_pair(answer.valueInt64, Plugins::Convert(type)));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
391 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
392 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
393
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
394 case _OrthancPluginDatabaseAnswerType_Attachment:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
395 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
396 const OrthancPluginAttachment& attachment =
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
397 *reinterpret_cast<const OrthancPluginAttachment*>(answer.valueGeneric);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
398
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
399 answerAttachments_.push_back(Convert(attachment));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
400 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
401 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
402
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
403 case _OrthancPluginDatabaseAnswerType_DicomTag:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
404 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
405 const OrthancPluginDicomTag& tag = *reinterpret_cast<const OrthancPluginDicomTag*>(answer.valueGeneric);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
406 assert(answerDicomMap_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
407 answerDicomMap_->SetValue(tag.group, tag.element, std::string(tag.value), false);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
408 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
409 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
410
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
411 case _OrthancPluginDatabaseAnswerType_String:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
412 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
413 if (answer.valueString == NULL)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
414 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
415 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
416 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
417
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
418 if (type_ == _OrthancPluginDatabaseAnswerType_None)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
419 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
420 type_ = _OrthancPluginDatabaseAnswerType_String;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
421 answerStrings_.clear();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
422 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
423 else if (type_ != _OrthancPluginDatabaseAnswerType_String)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
424 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
425 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
426 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
427
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
428 answerStrings_.push_back(std::string(answer.valueString));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
429 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
430 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
431
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
432 case _OrthancPluginDatabaseAnswerType_Change:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
433 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
434 assert(answerDone_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
435 if (answer.valueUint32 == 1)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
436 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
437 *answerDone_ = true;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
438 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
439 else if (*answerDone_)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
440 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
441 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
442 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
443 else
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
444 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
445 const OrthancPluginChange& change =
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
446 *reinterpret_cast<const OrthancPluginChange*>(answer.valueGeneric);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
447 assert(answerChanges_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
448 answerChanges_->push_back
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
449 (ServerIndexChange(change.seq,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
450 static_cast<ChangeType>(change.changeType),
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
451 Plugins::Convert(change.resourceType),
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
452 change.publicId,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
453 change.date));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
454 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
455
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
456 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
457 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
458
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
459 case _OrthancPluginDatabaseAnswerType_ExportedResource:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
460 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
461 assert(answerDone_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
462 if (answer.valueUint32 == 1)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
463 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
464 *answerDone_ = true;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
465 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
466 else if (*answerDone_)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
467 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
468 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
469 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
470 else
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
471 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
472 const OrthancPluginExportedResource& exported =
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
473 *reinterpret_cast<const OrthancPluginExportedResource*>(answer.valueGeneric);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
474 assert(answerExportedResources_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
475 answerExportedResources_->push_back
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
476 (ExportedResource(exported.seq,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
477 Plugins::Convert(exported.resourceType),
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
478 exported.publicId,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
479 exported.modality,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
480 exported.date,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
481 exported.patientId,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
482 exported.studyInstanceUid,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
483 exported.seriesInstanceUid,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
484 exported.sopInstanceUid));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
485 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
486
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
487 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
488 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
489
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
490 case _OrthancPluginDatabaseAnswerType_MatchingResource:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
491 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
492 const OrthancPluginMatchingResource& match =
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
493 *reinterpret_cast<const OrthancPluginMatchingResource*>(answer.valueGeneric);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
494
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
495 if (match.resourceId == NULL)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
496 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
497 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
498 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
499
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
500 assert(answerMatchingResources_ != NULL);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
501 answerMatchingResources_->push_back(match.resourceId);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
502
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
503 if (answerMatchingInstances_ != NULL)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
504 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
505 if (match.someInstanceId == NULL)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
506 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
507 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
508 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
509
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
510 answerMatchingInstances_->push_back(match.someInstanceId);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
511 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
512
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
513 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
514 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
515
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
516 case _OrthancPluginDatabaseAnswerType_Metadata:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
517 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
518 const OrthancPluginResourcesContentMetadata& metadata =
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
519 *reinterpret_cast<const OrthancPluginResourcesContentMetadata*>(answer.valueGeneric);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
520
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
521 MetadataType type = static_cast<MetadataType>(metadata.metadata);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
522
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
523 if (metadata.value == NULL)
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
524 {
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
525 throw OrthancException(ErrorCode_DatabasePlugin);
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
526 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
527
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
528 assert(answerMetadata_ != NULL &&
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
529 answerMetadata_->find(type) == answerMetadata_->end());
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
530 (*answerMetadata_) [type] = metadata.value;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
531 break;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
532 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
533
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
534 default:
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
535 throw OrthancException(ErrorCode_DatabasePlugin,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
536 "Unhandled type of answer for custom index plugin: " +
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
537 boost::lexical_cast<std::string>(answer.type));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
538 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
539 }
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
540
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
541
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
542 // From the "ILookupResources" interface
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
543 virtual void LookupIdentifier(std::list<int64_t>& result,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
544 ResourceType level,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
545 const DicomTag& tag,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
546 Compatibility::IdentifierConstraintType type,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
547 const std::string& value) ORTHANC_OVERRIDE
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
548 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
549 if (that_.extensions_.lookupIdentifier3 == NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
550 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
551 throw OrthancException(ErrorCode_DatabasePlugin,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
552 "The database plugin does not implement the mandatory LookupIdentifier3() extension");
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
553 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
554
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
555 OrthancPluginDicomTag tmp;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
556 tmp.group = tag.GetGroup();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
557 tmp.element = tag.GetElement();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
558 tmp.value = value.c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
559
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
560 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
561 CheckSuccess(that_.extensions_.lookupIdentifier3(that_.GetContext(), that_.payload_, Plugins::Convert(level),
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
562 &tmp, Compatibility::Convert(type)));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
563 ForwardAnswers(result);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
564 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
565
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
566
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
567 virtual void ApplyLookupResources(std::list<std::string>& resourcesId,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
568 std::list<std::string>* instancesId,
5680
68fc5af30c03 added container class DatabaseConstraints
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5640
diff changeset
569 const DatabaseConstraints& lookup,
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
570 ResourceType queryLevel,
5248
a7d95f951f8a replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5221
diff changeset
571 const std::set<std::string>& labels,
a7d95f951f8a replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5221
diff changeset
572 LabelsConstraint labelsConstraint,
5213
055428d92772 clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5193
diff changeset
573 uint32_t limit) ORTHANC_OVERRIDE
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
574 {
5248
a7d95f951f8a replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5221
diff changeset
575 if (!labels.empty())
5220
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
576 {
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
577 throw OrthancException(ErrorCode_InternalError); // "HasLabelsSupport()" has returned "false"
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
578 }
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
579
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
580 if (that_.extensions_.lookupResources == NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
581 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
582 // Fallback to compatibility mode
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
583 ILookupResources::Apply
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
584 (*this, *this, resourcesId, instancesId, lookup, queryLevel, limit);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
585 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
586 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
587 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
588 std::vector<OrthancPluginDatabaseConstraint> constraints;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
589 std::vector< std::vector<const char*> > constraintsValues;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
590
5680
68fc5af30c03 added container class DatabaseConstraints
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5640
diff changeset
591 constraints.resize(lookup.GetSize());
68fc5af30c03 added container class DatabaseConstraints
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5640
diff changeset
592 constraintsValues.resize(lookup.GetSize());
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
593
5680
68fc5af30c03 added container class DatabaseConstraints
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5640
diff changeset
594 for (size_t i = 0; i < lookup.GetSize(); i++)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
595 {
5680
68fc5af30c03 added container class DatabaseConstraints
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5640
diff changeset
596 lookup.GetConstraint(i).EncodeForPlugins(constraints[i], constraintsValues[i]);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
597 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
598
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
599 ResetAnswers();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
600 answerMatchingResources_ = &resourcesId;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
601 answerMatchingInstances_ = instancesId;
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
602
5680
68fc5af30c03 added container class DatabaseConstraints
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5640
diff changeset
603 CheckSuccess(that_.extensions_.lookupResources(that_.GetContext(), that_.payload_, lookup.GetSize(),
68fc5af30c03 added container class DatabaseConstraints
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5640
diff changeset
604 (lookup.IsEmpty() ? NULL : &constraints[0]),
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
605 Plugins::Convert(queryLevel),
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
606 limit, (instancesId == NULL ? 0 : 1)));
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
607 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
608 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
609
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
610
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
611 virtual bool CreateInstance(IDatabaseWrapper::CreateInstanceResult& result,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
612 int64_t& instanceId,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
613 const std::string& patient,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
614 const std::string& study,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
615 const std::string& series,
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
616 const std::string& instance) ORTHANC_OVERRIDE
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
617 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
618 if (that_.extensions_.createInstance == NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
619 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
620 // Fallback to compatibility mode
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
621 return ICreateInstance::Apply
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
622 (*this, result, instanceId, patient, study, series, instance);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
623 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
624 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
625 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
626 OrthancPluginCreateInstanceResult output;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
627 memset(&output, 0, sizeof(output));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
628
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
629 CheckSuccess(that_.extensions_.createInstance(&output, that_.payload_, patient.c_str(),
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
630 study.c_str(), series.c_str(), instance.c_str()));
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
631
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
632 instanceId = output.instanceId;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
633
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
634 if (output.isNewInstance)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
635 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
636 result.isNewPatient_ = output.isNewPatient;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
637 result.isNewStudy_ = output.isNewStudy;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
638 result.isNewSeries_ = output.isNewSeries;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
639 result.patientId_ = output.patientId;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
640 result.studyId_ = output.studyId;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
641 result.seriesId_ = output.seriesId;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
642 return true;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
643 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
644 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
645 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
646 return false;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
647 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
648 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
649 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
650
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
651
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
652 virtual void AddAttachment(int64_t id,
4627
f7d5372b59b3 handling revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4623
diff changeset
653 const FileInfo& attachment,
f7d5372b59b3 handling revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4623
diff changeset
654 int64_t revision) ORTHANC_OVERRIDE
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
655 {
4627
f7d5372b59b3 handling revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4623
diff changeset
656 // "revision" is not used, as it was added in Orthanc 1.9.2
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
657 OrthancPluginAttachment tmp;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
658 tmp.uuid = attachment.GetUuid().c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
659 tmp.contentType = static_cast<int32_t>(attachment.GetContentType());
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
660 tmp.uncompressedSize = attachment.GetUncompressedSize();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
661 tmp.uncompressedHash = attachment.GetUncompressedMD5().c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
662 tmp.compressionType = static_cast<int32_t>(attachment.GetCompressionType());
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
663 tmp.compressedSize = attachment.GetCompressedSize();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
664 tmp.compressedHash = attachment.GetCompressedMD5().c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
665
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
666 CheckSuccess(that_.backend_.addAttachment(that_.payload_, id, &tmp));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
667 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
668
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
669
4592
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
670 // From the "ICreateInstance" interface
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
671 virtual void AttachChild(int64_t parent,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
672 int64_t child) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
673 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
674 CheckSuccess(that_.backend_.attachChild(that_.payload_, parent, child));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
675 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
676
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
677
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
678 virtual void ClearChanges() ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
679 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
680 CheckSuccess(that_.backend_.clearChanges(that_.payload_));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
681 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
682
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
683
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
684 virtual void ClearExportedResources() ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
685 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
686 CheckSuccess(that_.backend_.clearExportedResources(that_.payload_));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
687 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
688
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
689
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
690 virtual void ClearMainDicomTags(int64_t id) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
691 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
692 if (that_.extensions_.clearMainDicomTags == NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
693 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
694 throw OrthancException(ErrorCode_DatabasePlugin,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
695 "Your custom index plugin does not implement the mandatory ClearMainDicomTags() extension");
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
696 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
697
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
698 CheckSuccess(that_.extensions_.clearMainDicomTags(that_.payload_, id));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
699 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
700
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
701
4592
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
702 // From the "ICreateInstance" interface
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
703 virtual int64_t CreateResource(const std::string& publicId,
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
704 ResourceType type) ORTHANC_OVERRIDE
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
705 {
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
706 int64_t id;
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
707 CheckSuccess(that_.backend_.createResource(&id, that_.payload_, publicId.c_str(), Plugins::Convert(type)));
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
708 return id;
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
709 }
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
710
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
711
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
712 virtual void DeleteAttachment(int64_t id,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
713 FileContentType attachment) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
714 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
715 CheckSuccess(that_.backend_.deleteAttachment(that_.payload_, id, static_cast<int32_t>(attachment)));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
716 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
717
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
718
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
719 virtual void DeleteMetadata(int64_t id,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
720 MetadataType type) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
721 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
722 CheckSuccess(that_.backend_.deleteMetadata(that_.payload_, id, static_cast<int32_t>(type)));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
723 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
724
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
725
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
726 virtual void DeleteResource(int64_t id) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
727 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
728 CheckSuccess(that_.backend_.deleteResource(that_.payload_, id));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
729 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
730
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
731
4592
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
732 // From the "ILookupResources" interface
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
733 void GetAllInternalIds(std::list<int64_t>& target,
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
734 ResourceType resourceType) ORTHANC_OVERRIDE
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
735 {
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
736 if (that_.extensions_.getAllInternalIds == NULL)
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
737 {
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
738 throw OrthancException(ErrorCode_DatabasePlugin,
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
739 "The database plugin does not implement the mandatory GetAllInternalIds() extension");
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
740 }
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
741
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
742 ResetAnswers();
4592
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
743 CheckSuccess(that_.extensions_.getAllInternalIds(that_.GetContext(), that_.payload_, Plugins::Convert(resourceType)));
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
744 ForwardAnswers(target);
4592
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
745 }
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
746
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
747
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
748
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
749 virtual void GetAllMetadata(std::map<MetadataType, std::string>& target,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
750 int64_t id) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
751 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
752 if (that_.extensions_.getAllMetadata == NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
753 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
754 // Fallback implementation if extension is missing
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
755 target.clear();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
756
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
757 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
758 CheckSuccess(that_.backend_.listAvailableMetadata(that_.GetContext(), that_.payload_, id));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
759
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
760 if (type_ != _OrthancPluginDatabaseAnswerType_None &&
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
761 type_ != _OrthancPluginDatabaseAnswerType_Int32)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
762 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
763 throw OrthancException(ErrorCode_DatabasePlugin);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
764 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
765
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
766 target.clear();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
767
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
768 if (type_ == _OrthancPluginDatabaseAnswerType_Int32)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
769 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
770 for (std::list<int32_t>::const_iterator
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
771 it = answerInt32_.begin(); it != answerInt32_.end(); ++it)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
772 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
773 MetadataType type = static_cast<MetadataType>(*it);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
774
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
775 std::string value;
4623
95ffe3b6ef7c handling of revisions for metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4607
diff changeset
776 int64_t revision; // Ignored
95ffe3b6ef7c handling of revisions for metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4607
diff changeset
777 if (LookupMetadata(value, revision, id, type))
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
778 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
779 target[type] = value;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
780 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
781 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
782 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
783 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
784 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
785 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
786 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
787
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
788 answerMetadata_ = &target;
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
789 target.clear();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
790
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
791 CheckSuccess(that_.extensions_.getAllMetadata(that_.GetContext(), that_.payload_, id));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
792
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
793 if (type_ != _OrthancPluginDatabaseAnswerType_None &&
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
794 type_ != _OrthancPluginDatabaseAnswerType_Metadata)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
795 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
796 throw OrthancException(ErrorCode_DatabasePlugin);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
797 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
798 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
799 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
800
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
801
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
802 virtual void GetAllPublicIds(std::list<std::string>& target,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
803 ResourceType resourceType) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
804 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
805 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
806 CheckSuccess(that_.backend_.getAllPublicIds(that_.GetContext(), that_.payload_, Plugins::Convert(resourceType)));
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
807 ForwardAnswers(target);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
808 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
809
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
810
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
811 virtual void GetAllPublicIds(std::list<std::string>& target,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
812 ResourceType resourceType,
5213
055428d92772 clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5193
diff changeset
813 int64_t since,
055428d92772 clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5193
diff changeset
814 uint32_t limit) ORTHANC_OVERRIDE
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
815 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
816 if (that_.extensions_.getAllPublicIdsWithLimit != NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
817 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
818 // This extension is available since Orthanc 0.9.4
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
819 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
820 CheckSuccess(that_.extensions_.getAllPublicIdsWithLimit
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
821 (that_.GetContext(), that_.payload_, Plugins::Convert(resourceType), since, limit));
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
822 ForwardAnswers(target);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
823 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
824 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
825 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
826 // The extension is not available in the database plugin, use a
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
827 // fallback implementation
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
828 target.clear();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
829
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
830 if (limit == 0)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
831 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
832 return;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
833 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
834
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
835 std::list<std::string> tmp;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
836 GetAllPublicIds(tmp, resourceType);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
837
5215
8b6da4fdf9fe cleaning ResourcesContent::TagValue and ResourcesContent::Metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5213
diff changeset
838 if (tmp.size() <= static_cast<size_t>(since))
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
839 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
840 // Not enough results => empty answer
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
841 return;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
842 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
843
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
844 std::list<std::string>::iterator current = tmp.begin();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
845 std::advance(current, since);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
846
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
847 while (limit > 0 && current != tmp.end())
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
848 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
849 target.push_back(*current);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
850 --limit;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
851 ++current;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
852 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
853 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
854 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
855
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
856
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
857 virtual void GetChanges(std::list<ServerIndexChange>& target /*out*/,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
858 bool& done /*out*/,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
859 int64_t since,
5213
055428d92772 clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5193
diff changeset
860 uint32_t limit) ORTHANC_OVERRIDE
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
861 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
862 ResetAnswers();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
863 answerChanges_ = &target;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
864 answerDone_ = &done;
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
865 done = false;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
866
5213
055428d92772 clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5193
diff changeset
867 CheckSuccess(that_.backend_.getChanges(that_.GetContext(), that_.payload_, since, limit));
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
868 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
869
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
870
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
871 virtual void GetChildrenInternalId(std::list<int64_t>& target,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
872 int64_t id) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
873 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
874 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
875 CheckSuccess(that_.backend_.getChildrenInternalId(that_.GetContext(), that_.payload_, id));
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
876 ForwardAnswers(target);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
877 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
878
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
879
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
880 virtual void GetChildrenMetadata(std::list<std::string>& target,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
881 int64_t resourceId,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
882 MetadataType metadata) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
883 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
884 if (that_.extensions_.getChildrenMetadata == NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
885 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
886 IGetChildrenMetadata::Apply(*this, target, resourceId, metadata);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
887 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
888 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
889 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
890 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
891 CheckSuccess(that_.extensions_.getChildrenMetadata
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
892 (that_.GetContext(), that_.payload_, resourceId, static_cast<int32_t>(metadata)));
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
893 ForwardAnswers(target);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
894 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
895 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
896
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
897
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
898 virtual void GetChildrenPublicId(std::list<std::string>& target,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
899 int64_t id) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
900 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
901 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
902 CheckSuccess(that_.backend_.getChildrenPublicId(that_.GetContext(), that_.payload_, id));
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
903 ForwardAnswers(target);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
904 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
905
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
906
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
907 virtual void GetExportedResources(std::list<ExportedResource>& target /*out*/,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
908 bool& done /*out*/,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
909 int64_t since,
5213
055428d92772 clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5193
diff changeset
910 uint32_t limit) ORTHANC_OVERRIDE
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
911 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
912 ResetAnswers();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
913 answerExportedResources_ = &target;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
914 answerDone_ = &done;
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
915 done = false;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
916
5213
055428d92772 clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5193
diff changeset
917 CheckSuccess(that_.backend_.getExportedResources(that_.GetContext(), that_.payload_, since, limit));
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
918 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
919
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
920
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
921 virtual void GetLastChange(std::list<ServerIndexChange>& target /*out*/) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
922 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
923 answerDoneIgnored_ = false;
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
924
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
925 ResetAnswers();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
926 answerChanges_ = &target;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
927 answerDone_ = &answerDoneIgnored_;
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
928
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
929 CheckSuccess(that_.backend_.getLastChange(that_.GetContext(), that_.payload_));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
930 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
931
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
932
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
933 int64_t GetLastChangeIndex() ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
934 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
935 if (that_.extensions_.getLastChangeIndex == NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
936 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
937 // This was the default behavior in Orthanc <= 1.5.1
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
938 // https://groups.google.com/d/msg/orthanc-users/QhzB6vxYeZ0/YxabgqpfBAAJ
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
939 return 0;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
940 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
941 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
942 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
943 int64_t result = 0;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
944 CheckSuccess(that_.extensions_.getLastChangeIndex(&result, that_.payload_));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
945 return result;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
946 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
947 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
948
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
949
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
950 virtual void GetLastExportedResource(std::list<ExportedResource>& target /*out*/) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
951 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
952 answerDoneIgnored_ = false;
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
953
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
954 ResetAnswers();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
955 answerExportedResources_ = &target;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
956 answerDone_ = &answerDoneIgnored_;
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
957
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
958 CheckSuccess(that_.backend_.getLastExportedResource(that_.GetContext(), that_.payload_));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
959 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
960
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
961
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
962 virtual void GetMainDicomTags(DicomMap& map,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
963 int64_t id) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
964 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
965 ResetAnswers();
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
966 answerDicomMap_ = &map;
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
967
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
968 CheckSuccess(that_.backend_.getMainDicomTags(that_.GetContext(), that_.payload_, id));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
969 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
970
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
971
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
972 virtual std::string GetPublicId(int64_t resourceId) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
973 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
974 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
975 std::string s;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
976
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
977 CheckSuccess(that_.backend_.getPublicId(that_.GetContext(), that_.payload_, resourceId));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
978
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
979 if (!ForwardSingleAnswer(s))
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
980 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
981 throw OrthancException(ErrorCode_DatabasePlugin);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
982 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
983
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
984 return s;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
985 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
986
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
987
4595
cc64385593ef added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4594
diff changeset
988 virtual uint64_t GetResourcesCount(ResourceType resourceType) ORTHANC_OVERRIDE
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
989 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
990 uint64_t count;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
991 CheckSuccess(that_.backend_.getResourceCount(&count, that_.payload_, Plugins::Convert(resourceType)));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
992 return count;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
993 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
994
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
995
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
996 virtual ResourceType GetResourceType(int64_t resourceId) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
997 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
998 OrthancPluginResourceType type;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
999 CheckSuccess(that_.backend_.getResourceType(&type, that_.payload_, resourceId));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1000 return Plugins::Convert(type);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1001 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1002
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1003
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1004 virtual uint64_t GetTotalCompressedSize() ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1005 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1006 uint64_t size;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1007 CheckSuccess(that_.backend_.getTotalCompressedSize(&size, that_.payload_));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1008 return size;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1009 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1010
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1011
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1012 virtual uint64_t GetTotalUncompressedSize() ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1013 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1014 uint64_t size;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1015 CheckSuccess(that_.backend_.getTotalUncompressedSize(&size, that_.payload_));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1016 return size;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1017 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1018
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1019
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1020 virtual bool IsDiskSizeAbove(uint64_t threshold) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1021 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1022 if (that_.fastGetTotalSize_)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1023 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1024 return GetTotalCompressedSize() > threshold;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1025 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1026 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1027 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1028 assert(GetTotalCompressedSize() == that_.currentDiskSize_);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1029 return that_.currentDiskSize_ > threshold;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1030 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1031 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1032
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1033
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1034 virtual bool IsProtectedPatient(int64_t internalId) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1035 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1036 int32_t isProtected;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1037 CheckSuccess(that_.backend_.isProtectedPatient(&isProtected, that_.payload_, internalId));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1038 return (isProtected != 0);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1039 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1040
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1041
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1042 virtual void ListAvailableAttachments(std::set<FileContentType>& target,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1043 int64_t id) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1044 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1045 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1046
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1047 CheckSuccess(that_.backend_.listAvailableAttachments(that_.GetContext(), that_.payload_, id));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1048
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1049 if (type_ != _OrthancPluginDatabaseAnswerType_None &&
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1050 type_ != _OrthancPluginDatabaseAnswerType_Int32)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1051 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1052 throw OrthancException(ErrorCode_DatabasePlugin);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1053 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1054
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1055 target.clear();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1056
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1057 if (type_ == _OrthancPluginDatabaseAnswerType_Int32)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1058 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1059 for (std::list<int32_t>::const_iterator
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1060 it = answerInt32_.begin(); it != answerInt32_.end(); ++it)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1061 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1062 target.insert(static_cast<FileContentType>(*it));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1063 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1064 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1065 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1066
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1067
5216
450ac804d3af simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5215
diff changeset
1068 virtual void LogChange(ChangeType changeType,
450ac804d3af simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5215
diff changeset
1069 ResourceType resourceType,
450ac804d3af simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5215
diff changeset
1070 int64_t internalId,
450ac804d3af simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5215
diff changeset
1071 const std::string& publicId,
450ac804d3af simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5215
diff changeset
1072 const std::string& date) ORTHANC_OVERRIDE
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1073 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1074 OrthancPluginChange tmp;
5216
450ac804d3af simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5215
diff changeset
1075 tmp.seq = -1; // Unused (it is attributed by the database engine)
450ac804d3af simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5215
diff changeset
1076 tmp.changeType = static_cast<int32_t>(changeType);
450ac804d3af simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5215
diff changeset
1077 tmp.resourceType = Plugins::Convert(resourceType);
450ac804d3af simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5215
diff changeset
1078 tmp.publicId = publicId.c_str();
450ac804d3af simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5215
diff changeset
1079 tmp.date = date.c_str();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1080
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1081 CheckSuccess(that_.backend_.logChange(that_.payload_, &tmp));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1082 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1083
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1084
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1085 virtual void LogExportedResource(const ExportedResource& resource) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1086 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1087 OrthancPluginExportedResource tmp;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1088 tmp.seq = resource.GetSeq();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1089 tmp.resourceType = Plugins::Convert(resource.GetResourceType());
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1090 tmp.publicId = resource.GetPublicId().c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1091 tmp.modality = resource.GetModality().c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1092 tmp.date = resource.GetDate().c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1093 tmp.patientId = resource.GetPatientId().c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1094 tmp.studyInstanceUid = resource.GetStudyInstanceUid().c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1095 tmp.seriesInstanceUid = resource.GetSeriesInstanceUid().c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1096 tmp.sopInstanceUid = resource.GetSopInstanceUid().c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1097
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1098 CheckSuccess(that_.backend_.logExportedResource(that_.payload_, &tmp));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1099 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1100
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1101
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1102 virtual bool LookupAttachment(FileInfo& attachment,
4627
f7d5372b59b3 handling revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4623
diff changeset
1103 int64_t& revision,
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1104 int64_t id,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1105 FileContentType contentType) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1106 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1107 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1108
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1109 CheckSuccess(that_.backend_.lookupAttachment
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1110 (that_.GetContext(), that_.payload_, id, static_cast<int32_t>(contentType)));
4627
f7d5372b59b3 handling revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4623
diff changeset
1111
f7d5372b59b3 handling revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4623
diff changeset
1112 revision = 0; // Dummy value, as revisions were added in Orthanc 1.9.2
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1113
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1114 if (type_ == _OrthancPluginDatabaseAnswerType_None)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1115 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1116 return false;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1117 }
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1118 else if (type_ == _OrthancPluginDatabaseAnswerType_Attachment &&
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1119 answerAttachments_.size() == 1)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1120 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1121 attachment = answerAttachments_.front();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1122 return true;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1123 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1124 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1125 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1126 throw OrthancException(ErrorCode_DatabasePlugin);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1127 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1128 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1129
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1130
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1131 virtual bool LookupGlobalProperty(std::string& target,
4607
f75c63aa9de0 differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1132 GlobalProperty property,
f75c63aa9de0 differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1133 bool shared) ORTHANC_OVERRIDE
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1134 {
4607
f75c63aa9de0 differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1135 // "shared" is unused, as database plugins using Orthanc SDK <=
f75c63aa9de0 differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1136 // 1.9.1 are not compatible with multiple readers/writers
f75c63aa9de0 differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1137
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1138 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1139
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1140 CheckSuccess(that_.backend_.lookupGlobalProperty
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1141 (that_.GetContext(), that_.payload_, static_cast<int32_t>(property)));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1142
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1143 return ForwardSingleAnswer(target);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1144 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1145
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1146
4592
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
1147 // From the "ILookupResources" interface
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1148 virtual void LookupIdentifierRange(std::list<int64_t>& result,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1149 ResourceType level,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1150 const DicomTag& tag,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1151 const std::string& start,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1152 const std::string& end) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1153 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1154 if (that_.extensions_.lookupIdentifierRange == NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1155 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1156 // Default implementation, for plugins using Orthanc SDK <= 1.3.2
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1157
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1158 LookupIdentifier(result, level, tag, Compatibility::IdentifierConstraintType_GreaterOrEqual, start);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1159
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1160 std::list<int64_t> b;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1161 LookupIdentifier(result, level, tag, Compatibility::IdentifierConstraintType_SmallerOrEqual, end);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1162
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1163 result.splice(result.end(), b);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1164 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1165 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1166 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1167 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1168 CheckSuccess(that_.extensions_.lookupIdentifierRange(that_.GetContext(), that_.payload_, Plugins::Convert(level),
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1169 tag.GetGroup(), tag.GetElement(),
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1170 start.c_str(), end.c_str()));
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1171 ForwardAnswers(result);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1172 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1173 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1174
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1175
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1176 virtual bool LookupMetadata(std::string& target,
4623
95ffe3b6ef7c handling of revisions for metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4607
diff changeset
1177 int64_t& revision,
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1178 int64_t id,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1179 MetadataType type) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1180 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1181 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1182 CheckSuccess(that_.backend_.lookupMetadata(that_.GetContext(), that_.payload_, id, static_cast<int32_t>(type)));
4623
95ffe3b6ef7c handling of revisions for metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4607
diff changeset
1183 revision = 0; // Dummy value, as revisions were added in Orthanc 1.9.2
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1184 return ForwardSingleAnswer(target);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1185 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1186
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1187
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1188 virtual bool LookupParent(int64_t& parentId,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1189 int64_t resourceId) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1190 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1191 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1192 CheckSuccess(that_.backend_.lookupParent(that_.GetContext(), that_.payload_, resourceId));
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1193 return ForwardSingleAnswer(parentId);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1194 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1195
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1196
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1197 virtual bool LookupResource(int64_t& id,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1198 ResourceType& type,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1199 const std::string& publicId) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1200 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1201 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1202
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1203 CheckSuccess(that_.backend_.lookupResource(that_.GetContext(), that_.payload_, publicId.c_str()));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1204
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1205 if (type_ == _OrthancPluginDatabaseAnswerType_None)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1206 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1207 return false;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1208 }
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1209 else if (type_ == _OrthancPluginDatabaseAnswerType_Resource &&
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1210 answerResources_.size() == 1)
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1211 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1212 id = answerResources_.front().first;
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1213 type = answerResources_.front().second;
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1214 return true;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1215 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1216 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1217 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1218 throw OrthancException(ErrorCode_DatabasePlugin);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1219 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1220 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1221
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1222
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1223 virtual bool LookupResourceAndParent(int64_t& id,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1224 ResourceType& type,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1225 std::string& parentPublicId,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1226 const std::string& publicId) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1227 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1228 if (that_.extensions_.lookupResourceAndParent == NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1229 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1230 return ILookupResourceAndParent::Apply(*this, id, type, parentPublicId, publicId);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1231 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1232 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1233 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1234 std::list<std::string> parent;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1235
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1236 uint8_t isExisting;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1237 OrthancPluginResourceType pluginType = OrthancPluginResourceType_Patient;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1238
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1239 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1240 CheckSuccess(that_.extensions_.lookupResourceAndParent
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1241 (that_.GetContext(), &isExisting, &id, &pluginType, that_.payload_, publicId.c_str()));
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1242 ForwardAnswers(parent);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1243
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1244 if (isExisting)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1245 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1246 type = Plugins::Convert(pluginType);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1247
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1248 if (parent.empty())
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1249 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1250 if (type != ResourceType_Patient)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1251 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1252 throw OrthancException(ErrorCode_DatabasePlugin);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1253 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1254 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1255 else if (parent.size() == 1)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1256 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1257 if ((type != ResourceType_Study &&
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1258 type != ResourceType_Series &&
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1259 type != ResourceType_Instance) ||
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1260 parent.front().empty())
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1261 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1262 throw OrthancException(ErrorCode_DatabasePlugin);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1263 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1264
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1265 parentPublicId = parent.front();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1266 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1267 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1268 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1269 throw OrthancException(ErrorCode_DatabasePlugin);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1270 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1271
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1272 return true;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1273 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1274 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1275 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1276 return false;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1277 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1278 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1279 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1280
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1281
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1282 virtual bool SelectPatientToRecycle(int64_t& internalId) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1283 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1284 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1285 CheckSuccess(that_.backend_.selectPatientToRecycle(that_.GetContext(), that_.payload_));
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1286 return ForwardSingleAnswer(internalId);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1287 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1288
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1289
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1290 virtual bool SelectPatientToRecycle(int64_t& internalId,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1291 int64_t patientIdToAvoid) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1292 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1293 ResetAnswers();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1294 CheckSuccess(that_.backend_.selectPatientToRecycle2(that_.GetContext(), that_.payload_, patientIdToAvoid));
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1295 return ForwardSingleAnswer(internalId);
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1296 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1297
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1298
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1299 virtual void SetGlobalProperty(GlobalProperty property,
4607
f75c63aa9de0 differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1300 bool shared,
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1301 const std::string& value) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1302 {
4607
f75c63aa9de0 differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1303 // "shared" is unused, as database plugins using Orthanc SDK <=
f75c63aa9de0 differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1304 // 1.9.1 are not compatible with multiple readers/writers
f75c63aa9de0 differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1305
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1306 CheckSuccess(that_.backend_.setGlobalProperty
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1307 (that_.payload_, static_cast<int32_t>(property), value.c_str()));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1308 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1309
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1310
4592
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
1311 // From the "ISetResourcesContent" interface
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1312 virtual void SetIdentifierTag(int64_t id,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1313 const DicomTag& tag,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1314 const std::string& value) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1315 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1316 OrthancPluginDicomTag tmp;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1317 tmp.group = tag.GetGroup();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1318 tmp.element = tag.GetElement();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1319 tmp.value = value.c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1320
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1321 CheckSuccess(that_.backend_.setIdentifierTag(that_.payload_, id, &tmp));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1322 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1323
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1324
4592
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
1325 // From the "ISetResourcesContent" interface
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1326 virtual void SetMainDicomTag(int64_t id,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1327 const DicomTag& tag,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1328 const std::string& value) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1329 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1330 OrthancPluginDicomTag tmp;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1331 tmp.group = tag.GetGroup();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1332 tmp.element = tag.GetElement();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1333 tmp.value = value.c_str();
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1334
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1335 CheckSuccess(that_.backend_.setMainDicomTag(that_.payload_, id, &tmp));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1336 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1337
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1338
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1339 virtual void SetMetadata(int64_t id,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1340 MetadataType type,
4623
95ffe3b6ef7c handling of revisions for metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4607
diff changeset
1341 const std::string& value,
95ffe3b6ef7c handling of revisions for metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4607
diff changeset
1342 int64_t revision) ORTHANC_OVERRIDE
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1343 {
4623
95ffe3b6ef7c handling of revisions for metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4607
diff changeset
1344 // "revision" is not used, as it was added in Orthanc 1.9.2
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1345 CheckSuccess(that_.backend_.setMetadata
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1346 (that_.payload_, id, static_cast<int32_t>(type), value.c_str()));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1347 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1348
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1349
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1350 virtual void SetProtectedPatient(int64_t internalId,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1351 bool isProtected) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1352 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1353 CheckSuccess(that_.backend_.setProtectedPatient(that_.payload_, internalId, isProtected));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1354 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1355
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1356
4592
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
1357 // From the "ISetResourcesContent" interface
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1358 virtual void SetResourcesContent(const Orthanc::ResourcesContent& content) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1359 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1360 if (that_.extensions_.setResourcesContent == NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1361 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1362 ISetResourcesContent::Apply(*this, content);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1363 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1364 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1365 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1366 std::vector<OrthancPluginResourcesContentTags> identifierTags;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1367 std::vector<OrthancPluginResourcesContentTags> mainDicomTags;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1368 std::vector<OrthancPluginResourcesContentMetadata> metadata;
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1369
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1370 identifierTags.reserve(content.GetListTags().size());
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1371 mainDicomTags.reserve(content.GetListTags().size());
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1372 metadata.reserve(content.GetListMetadata().size());
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1373
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1374 for (ResourcesContent::ListTags::const_iterator
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1375 it = content.GetListTags().begin(); it != content.GetListTags().end(); ++it)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1376 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1377 OrthancPluginResourcesContentTags tmp;
5215
8b6da4fdf9fe cleaning ResourcesContent::TagValue and ResourcesContent::Metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5213
diff changeset
1378 tmp.resource = it->GetResourceId();
8b6da4fdf9fe cleaning ResourcesContent::TagValue and ResourcesContent::Metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5213
diff changeset
1379 tmp.group = it->GetTag().GetGroup();
8b6da4fdf9fe cleaning ResourcesContent::TagValue and ResourcesContent::Metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5213
diff changeset
1380 tmp.element = it->GetTag().GetElement();
8b6da4fdf9fe cleaning ResourcesContent::TagValue and ResourcesContent::Metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5213
diff changeset
1381 tmp.value = it->GetValue().c_str();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1382
5215
8b6da4fdf9fe cleaning ResourcesContent::TagValue and ResourcesContent::Metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5213
diff changeset
1383 if (it->IsIdentifier())
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1384 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1385 identifierTags.push_back(tmp);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1386 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1387 else
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1388 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1389 mainDicomTags.push_back(tmp);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1390 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1391 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1392
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1393 for (ResourcesContent::ListMetadata::const_iterator
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1394 it = content.GetListMetadata().begin(); it != content.GetListMetadata().end(); ++it)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1395 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1396 OrthancPluginResourcesContentMetadata tmp;
5215
8b6da4fdf9fe cleaning ResourcesContent::TagValue and ResourcesContent::Metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5213
diff changeset
1397 tmp.resource = it->GetResourceId();
8b6da4fdf9fe cleaning ResourcesContent::TagValue and ResourcesContent::Metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5213
diff changeset
1398 tmp.metadata = it->GetType();
8b6da4fdf9fe cleaning ResourcesContent::TagValue and ResourcesContent::Metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5213
diff changeset
1399 tmp.value = it->GetValue().c_str();
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1400 metadata.push_back(tmp);
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1401 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1402
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1403 assert(identifierTags.size() + mainDicomTags.size() == content.GetListTags().size() &&
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1404 metadata.size() == content.GetListMetadata().size());
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1405
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1406 CheckSuccess(that_.extensions_.setResourcesContent(
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1407 that_.payload_,
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1408 identifierTags.size(),
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1409 (identifierTags.empty() ? NULL : &identifierTags[0]),
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1410 mainDicomTags.size(),
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1411 (mainDicomTags.empty() ? NULL : &mainDicomTags[0]),
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1412 metadata.size(),
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1413 (metadata.empty() ? NULL : &metadata[0])));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1414 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1415 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1416
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1417
4592
36bbf3169a27 comments
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4591
diff changeset
1418 // From the "ICreateInstance" interface
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1419 virtual void TagMostRecentPatient(int64_t patient) ORTHANC_OVERRIDE
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1420 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1421 if (that_.extensions_.tagMostRecentPatient != NULL)
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1422 {
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1423 CheckSuccess(that_.extensions_.tagMostRecentPatient(that_.payload_, patient));
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1424 }
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1425 }
5220
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1426
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1427
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1428 virtual void AddLabel(int64_t resource,
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1429 const std::string& label) ORTHANC_OVERRIDE
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1430 {
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1431 throw OrthancException(ErrorCode_InternalError); // Not supported
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1432 }
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1433
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1434
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1435 virtual void RemoveLabel(int64_t resource,
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1436 const std::string& label) ORTHANC_OVERRIDE
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1437 {
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1438 throw OrthancException(ErrorCode_InternalError); // Not supported
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1439 }
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1440
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1441
5221
d0f7c742d397 started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5220
diff changeset
1442 virtual void ListLabels(std::set<std::string>& target,
d0f7c742d397 started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5220
diff changeset
1443 int64_t resource) ORTHANC_OVERRIDE
5220
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1444 {
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1445 throw OrthancException(ErrorCode_InternalError); // Not supported
df39c7583a49 preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5216
diff changeset
1446 }
5249
f22c8fac764b added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5248
diff changeset
1447
f22c8fac764b added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5248
diff changeset
1448
f22c8fac764b added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5248
diff changeset
1449 virtual void ListAllLabels(std::set<std::string>& target) ORTHANC_OVERRIDE
f22c8fac764b added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5248
diff changeset
1450 {
f22c8fac764b added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5248
diff changeset
1451 throw OrthancException(ErrorCode_InternalError); // Not supported
f22c8fac764b added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5248
diff changeset
1452 }
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1453 };
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1454
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1455
1672
4c5a85c3ff43 sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1668
diff changeset
1456 void OrthancPluginDatabase::CheckSuccess(OrthancPluginErrorCode code)
4c5a85c3ff43 sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1668
diff changeset
1457 {
4c5a85c3ff43 sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1668
diff changeset
1458 if (code != OrthancPluginErrorCode_Success)
4c5a85c3ff43 sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1668
diff changeset
1459 {
4c5a85c3ff43 sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1668
diff changeset
1460 errorDictionary_.LogError(code, true);
4c5a85c3ff43 sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1668
diff changeset
1461 throw OrthancException(static_cast<ErrorCode>(code));
4c5a85c3ff43 sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1668
diff changeset
1462 }
4c5a85c3ff43 sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1668
diff changeset
1463 }
4c5a85c3ff43 sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1668
diff changeset
1464
4c5a85c3ff43 sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1668
diff changeset
1465
1630
ffd23c0104af "/system" URI gives information about the plugins used for storage area and DB back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1629
diff changeset
1466 OrthancPluginDatabase::OrthancPluginDatabase(SharedLibrary& library,
1651
2e692c83e2f3 improved custom error login
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1646
diff changeset
1467 PluginsErrorDictionary& errorDictionary,
1630
ffd23c0104af "/system" URI gives information about the plugins used for storage area and DB back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1629
diff changeset
1468 const OrthancPluginDatabaseBackend& backend,
1609
c74495267acf Implementation of the "GetAllPublicIdsWithLimit" extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1545
diff changeset
1469 const OrthancPluginDatabaseExtensions* extensions,
c74495267acf Implementation of the "GetAllPublicIdsWithLimit" extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1545
diff changeset
1470 size_t extensionsSize,
1314
01be1432bda9 cppcheck
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1309
diff changeset
1471 void *payload) :
1630
ffd23c0104af "/system" URI gives information about the plugins used for storage area and DB back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1629
diff changeset
1472 library_(library),
1651
2e692c83e2f3 improved custom error login
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1646
diff changeset
1473 errorDictionary_(errorDictionary),
1314
01be1432bda9 cppcheck
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1309
diff changeset
1474 backend_(backend),
01be1432bda9 cppcheck
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1309
diff changeset
1475 payload_(payload),
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1476 activeTransaction_(NULL),
4204
318c16cfccab cppcheck
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4045
diff changeset
1477 fastGetTotalSize_(false),
5517
0d433132b249 refactoring IDatabaseWrapper::Capabilities
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5497
diff changeset
1478 currentDiskSize_(0)
1314
01be1432bda9 cppcheck
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1309
diff changeset
1479 {
3101
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1480 static const char* const MISSING = " Missing extension in database index plugin: ";
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1481
1609
c74495267acf Implementation of the "GetAllPublicIdsWithLimit" extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1545
diff changeset
1482 memset(&extensions_, 0, sizeof(extensions_));
c74495267acf Implementation of the "GetAllPublicIdsWithLimit" extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1545
diff changeset
1483
c74495267acf Implementation of the "GetAllPublicIdsWithLimit" extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1545
diff changeset
1484 size_t size = sizeof(extensions_);
c74495267acf Implementation of the "GetAllPublicIdsWithLimit" extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1545
diff changeset
1485 if (extensionsSize < size)
c74495267acf Implementation of the "GetAllPublicIdsWithLimit" extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1545
diff changeset
1486 {
c74495267acf Implementation of the "GetAllPublicIdsWithLimit" extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1545
diff changeset
1487 size = extensionsSize; // Not all the extensions are available
c74495267acf Implementation of the "GetAllPublicIdsWithLimit" extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1545
diff changeset
1488 }
c74495267acf Implementation of the "GetAllPublicIdsWithLimit" extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1545
diff changeset
1489
c74495267acf Implementation of the "GetAllPublicIdsWithLimit" extension
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1545
diff changeset
1490 memcpy(&extensions_, extensions, size);
3076
8bc2cb1335f4 OrthancPluginDatabase::ApplyLookupResources() using fast lookup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3075
diff changeset
1491
3101
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1492 bool isOptimal = true;
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1493
3076
8bc2cb1335f4 OrthancPluginDatabase::ApplyLookupResources() using fast lookup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3075
diff changeset
1494 if (extensions_.lookupResources == NULL)
8bc2cb1335f4 OrthancPluginDatabase::ApplyLookupResources() using fast lookup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3075
diff changeset
1495 {
4271
1bd14c900699 LogCategory_PLUGINS
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4204
diff changeset
1496 CLOG(INFO, PLUGINS) << MISSING << "LookupIdentifierRange()";
3101
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1497 isOptimal = false;
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1498 }
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1499
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1500 if (extensions_.createInstance == NULL)
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1501 {
4271
1bd14c900699 LogCategory_PLUGINS
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4204
diff changeset
1502 CLOG(INFO, PLUGINS) << MISSING << "CreateInstance()";
3101
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1503 isOptimal = false;
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1504 }
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1505
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1506 if (extensions_.setResourcesContent == NULL)
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1507 {
4271
1bd14c900699 LogCategory_PLUGINS
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4204
diff changeset
1508 CLOG(INFO, PLUGINS) << MISSING << "SetResourcesContent()";
3101
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1509 isOptimal = false;
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1510 }
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1511
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1512 if (extensions_.getChildrenMetadata == NULL)
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1513 {
4271
1bd14c900699 LogCategory_PLUGINS
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4204
diff changeset
1514 CLOG(INFO, PLUGINS) << MISSING << "GetChildrenMetadata()";
3101
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1515 isOptimal = false;
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1516 }
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1517
3190
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3189
diff changeset
1518 if (extensions_.getAllMetadata == NULL)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3189
diff changeset
1519 {
4271
1bd14c900699 LogCategory_PLUGINS
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4204
diff changeset
1520 CLOG(INFO, PLUGINS) << MISSING << "GetAllMetadata()";
3190
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3189
diff changeset
1521 isOptimal = false;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3189
diff changeset
1522 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3189
diff changeset
1523
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3189
diff changeset
1524 if (extensions_.lookupResourceAndParent == NULL)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3189
diff changeset
1525 {
4271
1bd14c900699 LogCategory_PLUGINS
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4204
diff changeset
1526 CLOG(INFO, PLUGINS) << MISSING << "LookupResourceAndParent()";
3190
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3189
diff changeset
1527 isOptimal = false;
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3189
diff changeset
1528 }
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3189
diff changeset
1529
3101
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1530 if (isOptimal)
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1531 {
4271
1bd14c900699 LogCategory_PLUGINS
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4204
diff changeset
1532 CLOG(INFO, PLUGINS) << "The performance of the database index plugin "
1bd14c900699 LogCategory_PLUGINS
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4204
diff changeset
1533 << "is optimal for this version of Orthanc";
3101
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1534 }
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1535 else
b2b6db5ad9a5 warn about missing extensions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3099
diff changeset
1536 {
3124
c0d7aee8c3f8 Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3121
diff changeset
1537 LOG(WARNING) << "Performance warning in the database index: "
c0d7aee8c3f8 Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3121
diff changeset
1538 << "Some extensions are missing in the plugin";
3076
8bc2cb1335f4 OrthancPluginDatabase::ApplyLookupResources() using fast lookup
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3075
diff changeset
1539 }
3105
2e1711f80f74 More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3101
diff changeset
1540
2e1711f80f74 More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3101
diff changeset
1541 if (extensions_.getLastChangeIndex == NULL)
2e1711f80f74 More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3101
diff changeset
1542 {
2e1711f80f74 More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3101
diff changeset
1543 LOG(WARNING) << "The database extension GetLastChangeIndex() is missing";
2e1711f80f74 More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3101
diff changeset
1544 }
3124
c0d7aee8c3f8 Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3121
diff changeset
1545
c0d7aee8c3f8 Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3121
diff changeset
1546 if (extensions_.tagMostRecentPatient == NULL)
c0d7aee8c3f8 Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3121
diff changeset
1547 {
c0d7aee8c3f8 Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3121
diff changeset
1548 LOG(WARNING) << "The database extension TagMostRecentPatient() is missing "
c0d7aee8c3f8 Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3121
diff changeset
1549 << "(affected by issue 58)";
c0d7aee8c3f8 Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3121
diff changeset
1550 }
1314
01be1432bda9 cppcheck
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1309
diff changeset
1551 }
01be1432bda9 cppcheck
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1309
diff changeset
1552
01be1432bda9 cppcheck
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1309
diff changeset
1553
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1554 void OrthancPluginDatabase::Open()
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1555 {
4594
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1556 {
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1557 boost::recursive_mutex::scoped_lock lock(mutex_);
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1558 CheckSuccess(backend_.open(payload_));
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1559 }
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1560
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1561 VoidDatabaseListener listener;
4589
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
1562
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1563 {
4589
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
1564 Transaction transaction(*this, listener);
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1565 transaction.Begin();
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1566
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1567 std::string tmp;
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1568 fastGetTotalSize_ =
4607
f75c63aa9de0 differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4595
diff changeset
1569 (transaction.LookupGlobalProperty(tmp, GlobalProperty_GetTotalSizeIsFast, true /* unused in old databases */) &&
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1570 tmp == "1");
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1571
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1572 if (fastGetTotalSize_)
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1573 {
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1574 currentDiskSize_ = 0; // Unused
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1575 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1576 else
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1577 {
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1578 // This is the case of database plugins using Orthanc SDK <= 1.5.2
3020
d207f6ac1f86 tracking disk size by the database engine to ensure consistency across transactions
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3019
diff changeset
1579 LOG(WARNING) << "Your database index plugin is not compatible with multiple Orthanc writers";
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1580 currentDiskSize_ = transaction.GetTotalCompressedSize();
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1581 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1582
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1583 transaction.Commit(0);
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1584 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1585 }
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1586
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1587
4594
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1588 void OrthancPluginDatabase::Close()
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1589 {
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1590 boost::recursive_mutex::scoped_lock lock(mutex_);
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1591 CheckSuccess(backend_.close(payload_));
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1592 }
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1593
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1594
4589
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
1595 IDatabaseWrapper::ITransaction* OrthancPluginDatabase::StartTransaction(TransactionType type,
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
1596 IDatabaseListener& listener)
1309
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1597 {
4570
648defffc8cc new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4556
diff changeset
1598 // TODO - Take advantage of "type"
4589
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
1599
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
1600 std::unique_ptr<Transaction> transaction(new Transaction(*this, listener));
4556
2a0f8031fb93 removed abstraction IDatabaseWrapper::ITransaction::Begin(), must be done by IDatabaseWrapper::StartTransaction()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4514
diff changeset
1601 transaction->Begin();
2a0f8031fb93 removed abstraction IDatabaseWrapper::ITransaction::Begin(), must be done by IDatabaseWrapper::StartTransaction()
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4514
diff changeset
1602 return transaction.release();
1309
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1603 }
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1604
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1605
1615
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1606 unsigned int OrthancPluginDatabase::GetDatabaseVersion()
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1607 {
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1608 if (extensions_.getDatabaseVersion != NULL)
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1609 {
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1610 uint32_t version;
1672
4c5a85c3ff43 sample database plugin now working
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1668
diff changeset
1611 CheckSuccess(extensions_.getDatabaseVersion(&version, payload_));
1615
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1612 return version;
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1613 }
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1614 else
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1615 {
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1616 // Before adding the "GetDatabaseVersion()" extension in plugins
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1617 // (OrthancPostgreSQL <= 1.2), the only supported DB schema was
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1618 // version 5.
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1619 return 5;
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1620 }
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1621 }
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1622
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1623
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1624 void OrthancPluginDatabase::Upgrade(unsigned int targetVersion,
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1625 IStorageArea& storageArea)
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1626 {
4591
ff8170d17d90 moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4589
diff changeset
1627 VoidDatabaseListener listener;
4589
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
1628
1615
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1629 if (extensions_.upgradeDatabase != NULL)
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1630 {
4589
bec74e29f86b attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4571
diff changeset
1631 Transaction transaction(*this, listener);
1673
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1632 transaction.Begin();
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1633
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1634 OrthancPluginErrorCode code = extensions_.upgradeDatabase(
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1635 payload_, targetVersion,
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1636 reinterpret_cast<OrthancPluginStorageArea*>(&storageArea));
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1637
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1638 if (code == OrthancPluginErrorCode_Success)
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1639 {
3019
8336204d95dc refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2956
diff changeset
1640 transaction.Commit(0);
1673
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1641 }
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1642 else
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1643 {
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1644 transaction.Rollback();
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1645 errorDictionary_.LogError(code, true);
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1646 throw OrthancException(static_cast<ErrorCode>(code));
0bbcfd9695e5 UpgradeDatabase in the sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1672
diff changeset
1647 }
1615
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1648 }
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1649 }
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1650
c40fe92a68e7 Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 1609
diff changeset
1651
1309
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1652 void OrthancPluginDatabase::AnswerReceived(const _OrthancPluginDatabaseAnswer& answer)
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1653 {
4594
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1654 boost::recursive_mutex::scoped_lock lock(mutex_);
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1655
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1656 if (activeTransaction_ != NULL)
1309
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1657 {
4593
60a860942c5e moved handling of answers from database plugins from OrthancPluginDatabase to its Transaction subclass
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4592
diff changeset
1658 activeTransaction_->AnswerReceived(answer);
1309
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1659 }
4594
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1660 else
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1661 {
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1662 LOG(WARNING) << "Received an answer from the database index plugin, but not transaction is active";
d494b4f1103e removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4593
diff changeset
1663 }
1309
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1664 }
8f4487d8f79e new files for custom database back-end
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1665 }