Mercurial > hg > orthanc-databases
comparison Framework/Plugins/IndexBackend.h @ 201:42990b2dd51b
create IDatabaseBackendOutput only if needed
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 18 Mar 2021 16:51:51 +0100 |
parents | 3236894320d6 |
children | 2def2df94f94 |
comparison
equal
deleted
inserted
replaced
200:30b210616f4f | 201:42990b2dd51b |
---|---|
29 { | 29 { |
30 class IndexBackend : public OrthancPlugins::IDatabaseBackend | 30 class IndexBackend : public OrthancPlugins::IDatabaseBackend |
31 { | 31 { |
32 private: | 32 private: |
33 class LookupFormatter; | 33 class LookupFormatter; |
34 | 34 |
35 DatabaseManager manager_; | 35 OrthancPluginContext* context_; |
36 | 36 DatabaseManager manager_; |
37 | |
38 std::unique_ptr<OrthancPlugins::IDatabaseBackendOutput::IFactory> outputFactory_; | |
39 | |
37 protected: | 40 protected: |
38 DatabaseManager& GetManager() | 41 DatabaseManager& GetManager() |
39 { | 42 { |
40 return manager_; | 43 return manager_; |
41 } | 44 } |
60 | 63 |
61 void ClearDeletedFiles(); | 64 void ClearDeletedFiles(); |
62 | 65 |
63 void ClearDeletedResources(); | 66 void ClearDeletedResources(); |
64 | 67 |
65 void SignalDeletedFiles(); | 68 void SignalDeletedFiles(OrthancPlugins::IDatabaseBackendOutput& output); |
66 | 69 |
67 void SignalDeletedResources(); | 70 void SignalDeletedResources(OrthancPlugins::IDatabaseBackendOutput& output); |
68 | 71 |
69 private: | 72 private: |
70 void ReadChangesInternal(bool& done, | 73 void ReadChangesInternal(OrthancPlugins::IDatabaseBackendOutput& output, |
74 bool& done, | |
71 DatabaseManager::CachedStatement& statement, | 75 DatabaseManager::CachedStatement& statement, |
72 const Dictionary& args, | 76 const Dictionary& args, |
73 uint32_t maxResults); | 77 uint32_t maxResults); |
74 | 78 |
75 void ReadExportedResourcesInternal(bool& done, | 79 void ReadExportedResourcesInternal(OrthancPlugins::IDatabaseBackendOutput& output, |
80 bool& done, | |
76 DatabaseManager::CachedStatement& statement, | 81 DatabaseManager::CachedStatement& statement, |
77 const Dictionary& args, | 82 const Dictionary& args, |
78 uint32_t maxResults); | 83 uint32_t maxResults); |
79 | 84 |
80 public: | 85 public: |
81 IndexBackend(IDatabaseFactory* factory); | 86 IndexBackend(OrthancPluginContext* context, |
82 | 87 IDatabaseFactory* factory); |
83 virtual void Open() | 88 |
89 virtual OrthancPluginContext* GetContext() ORTHANC_OVERRIDE | |
90 { | |
91 return context_; | |
92 } | |
93 | |
94 virtual void SetOutputFactory(OrthancPlugins::IDatabaseBackendOutput::IFactory* factory) ORTHANC_OVERRIDE; | |
95 | |
96 virtual OrthancPlugins::IDatabaseBackendOutput* CreateOutput() ORTHANC_OVERRIDE; | |
97 | |
98 virtual void Open() ORTHANC_OVERRIDE | |
84 { | 99 { |
85 manager_.Open(); | 100 manager_.Open(); |
86 } | 101 } |
87 | 102 |
88 virtual void Close() | 103 virtual void Close() ORTHANC_OVERRIDE |
89 { | 104 { |
90 manager_.Close(); | 105 manager_.Close(); |
91 } | 106 } |
92 | 107 |
93 virtual void AddAttachment(int64_t id, | 108 virtual void AddAttachment(int64_t id, |
94 const OrthancPluginAttachment& attachment); | 109 const OrthancPluginAttachment& attachment) ORTHANC_OVERRIDE; |
95 | 110 |
96 virtual void AttachChild(int64_t parent, | 111 virtual void AttachChild(int64_t parent, |
97 int64_t child); | 112 int64_t child) ORTHANC_OVERRIDE; |
98 | 113 |
99 virtual void ClearChanges(); | 114 virtual void ClearChanges() ORTHANC_OVERRIDE; |
100 | 115 |
101 virtual void ClearExportedResources(); | 116 virtual void ClearExportedResources() ORTHANC_OVERRIDE; |
102 | 117 |
103 virtual void DeleteAttachment(int64_t id, | 118 virtual void DeleteAttachment(OrthancPlugins::IDatabaseBackendOutput& output, |
104 int32_t attachment); | 119 int64_t id, |
120 int32_t attachment) ORTHANC_OVERRIDE; | |
105 | 121 |
106 virtual void DeleteMetadata(int64_t id, | 122 virtual void DeleteMetadata(int64_t id, |
107 int32_t metadataType); | 123 int32_t metadataType) ORTHANC_OVERRIDE; |
108 | 124 |
109 virtual void DeleteResource(int64_t id); | 125 virtual void DeleteResource(OrthancPlugins::IDatabaseBackendOutput& output, |
126 int64_t id) ORTHANC_OVERRIDE; | |
110 | 127 |
111 virtual void GetAllInternalIds(std::list<int64_t>& target, | 128 virtual void GetAllInternalIds(std::list<int64_t>& target, |
112 OrthancPluginResourceType resourceType); | 129 OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE; |
113 | 130 |
114 virtual void GetAllPublicIds(std::list<std::string>& target, | 131 virtual void GetAllPublicIds(std::list<std::string>& target, |
115 OrthancPluginResourceType resourceType); | 132 OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE; |
116 | 133 |
117 virtual void GetAllPublicIds(std::list<std::string>& target, | 134 virtual void GetAllPublicIds(std::list<std::string>& target, |
118 OrthancPluginResourceType resourceType, | 135 OrthancPluginResourceType resourceType, |
119 uint64_t since, | 136 uint64_t since, |
120 uint64_t limit); | 137 uint64_t limit) ORTHANC_OVERRIDE; |
121 | 138 |
122 virtual void GetChanges(bool& done /*out*/, | 139 virtual void GetChanges(OrthancPlugins::IDatabaseBackendOutput& output, |
140 bool& done /*out*/, | |
123 int64_t since, | 141 int64_t since, |
124 uint32_t maxResults); | 142 uint32_t maxResults) ORTHANC_OVERRIDE; |
125 | 143 |
126 virtual void GetChildrenInternalId(std::list<int64_t>& target /*out*/, | 144 virtual void GetChildrenInternalId(std::list<int64_t>& target /*out*/, |
127 int64_t id); | 145 int64_t id) ORTHANC_OVERRIDE; |
128 | 146 |
129 virtual void GetChildrenPublicId(std::list<std::string>& target /*out*/, | 147 virtual void GetChildrenPublicId(std::list<std::string>& target /*out*/, |
130 int64_t id); | 148 int64_t id) ORTHANC_OVERRIDE; |
131 | 149 |
132 virtual void GetExportedResources(bool& done /*out*/, | 150 virtual void GetExportedResources(OrthancPlugins::IDatabaseBackendOutput& output, |
151 bool& done /*out*/, | |
133 int64_t since, | 152 int64_t since, |
134 uint32_t maxResults); | 153 uint32_t maxResults) ORTHANC_OVERRIDE; |
135 | 154 |
136 virtual void GetLastChange(); | 155 virtual void GetLastChange(OrthancPlugins::IDatabaseBackendOutput& output) ORTHANC_OVERRIDE; |
137 | 156 |
138 virtual void GetLastExportedResource(); | 157 virtual void GetLastExportedResource(OrthancPlugins::IDatabaseBackendOutput& output) ORTHANC_OVERRIDE; |
139 | 158 |
140 virtual void GetMainDicomTags(int64_t id); | 159 virtual void GetMainDicomTags(OrthancPlugins::IDatabaseBackendOutput& output, |
141 | 160 int64_t id) ORTHANC_OVERRIDE; |
142 virtual std::string GetPublicId(int64_t resourceId); | 161 |
143 | 162 virtual std::string GetPublicId(int64_t resourceId) ORTHANC_OVERRIDE; |
144 virtual uint64_t GetResourceCount(OrthancPluginResourceType resourceType); | 163 |
145 | 164 virtual uint64_t GetResourceCount(OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE; |
146 virtual OrthancPluginResourceType GetResourceType(int64_t resourceId); | 165 |
147 | 166 virtual OrthancPluginResourceType GetResourceType(int64_t resourceId) ORTHANC_OVERRIDE; |
148 virtual uint64_t GetTotalCompressedSize(); | 167 |
149 | 168 virtual uint64_t GetTotalCompressedSize() ORTHANC_OVERRIDE; |
150 virtual uint64_t GetTotalUncompressedSize(); | 169 |
151 | 170 virtual uint64_t GetTotalUncompressedSize() ORTHANC_OVERRIDE; |
152 virtual bool IsExistingResource(int64_t internalId); | 171 |
153 | 172 virtual bool IsExistingResource(int64_t internalId) ORTHANC_OVERRIDE; |
154 virtual bool IsProtectedPatient(int64_t internalId); | 173 |
174 virtual bool IsProtectedPatient(int64_t internalId) ORTHANC_OVERRIDE; | |
155 | 175 |
156 virtual void ListAvailableMetadata(std::list<int32_t>& target /*out*/, | 176 virtual void ListAvailableMetadata(std::list<int32_t>& target /*out*/, |
157 int64_t id); | 177 int64_t id) ORTHANC_OVERRIDE; |
158 | 178 |
159 virtual void ListAvailableAttachments(std::list<int32_t>& target /*out*/, | 179 virtual void ListAvailableAttachments(std::list<int32_t>& target /*out*/, |
160 int64_t id); | 180 int64_t id) ORTHANC_OVERRIDE; |
161 | 181 |
162 virtual void LogChange(const OrthancPluginChange& change); | 182 virtual void LogChange(const OrthancPluginChange& change) ORTHANC_OVERRIDE; |
163 | 183 |
164 virtual void LogExportedResource(const OrthancPluginExportedResource& resource); | 184 virtual void LogExportedResource(const OrthancPluginExportedResource& resource) ORTHANC_OVERRIDE; |
165 | 185 |
166 virtual bool LookupAttachment(int64_t id, | 186 virtual bool LookupAttachment(OrthancPlugins::IDatabaseBackendOutput& output, |
167 int32_t contentType); | 187 int64_t id, |
188 int32_t contentType) ORTHANC_OVERRIDE; | |
168 | 189 |
169 virtual bool LookupGlobalProperty(std::string& target /*out*/, | 190 virtual bool LookupGlobalProperty(std::string& target /*out*/, |
170 int32_t property); | 191 int32_t property) ORTHANC_OVERRIDE; |
171 | 192 |
172 virtual void LookupIdentifier(std::list<int64_t>& target /*out*/, | 193 virtual void LookupIdentifier(std::list<int64_t>& target /*out*/, |
173 OrthancPluginResourceType resourceType, | 194 OrthancPluginResourceType resourceType, |
174 uint16_t group, | 195 uint16_t group, |
175 uint16_t element, | 196 uint16_t element, |
176 OrthancPluginIdentifierConstraint constraint, | 197 OrthancPluginIdentifierConstraint constraint, |
177 const char* value); | 198 const char* value) ORTHANC_OVERRIDE; |
178 | 199 |
179 virtual void LookupIdentifierRange(std::list<int64_t>& target /*out*/, | 200 virtual void LookupIdentifierRange(std::list<int64_t>& target /*out*/, |
180 OrthancPluginResourceType resourceType, | 201 OrthancPluginResourceType resourceType, |
181 uint16_t group, | 202 uint16_t group, |
182 uint16_t element, | 203 uint16_t element, |
183 const char* start, | 204 const char* start, |
184 const char* end); | 205 const char* end) ORTHANC_OVERRIDE; |
185 | 206 |
186 virtual bool LookupMetadata(std::string& target /*out*/, | 207 virtual bool LookupMetadata(std::string& target /*out*/, |
187 int64_t id, | 208 int64_t id, |
188 int32_t metadataType); | 209 int32_t metadataType) ORTHANC_OVERRIDE; |
189 | 210 |
190 virtual bool LookupParent(int64_t& parentId /*out*/, | 211 virtual bool LookupParent(int64_t& parentId /*out*/, |
191 int64_t resourceId); | 212 int64_t resourceId) ORTHANC_OVERRIDE; |
192 | 213 |
193 virtual bool LookupResource(int64_t& id /*out*/, | 214 virtual bool LookupResource(int64_t& id /*out*/, |
194 OrthancPluginResourceType& type /*out*/, | 215 OrthancPluginResourceType& type /*out*/, |
195 const char* publicId); | 216 const char* publicId) ORTHANC_OVERRIDE; |
196 | 217 |
197 virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/); | 218 virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/) ORTHANC_OVERRIDE; |
198 | 219 |
199 virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/, | 220 virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/, |
200 int64_t patientIdToAvoid); | 221 int64_t patientIdToAvoid) ORTHANC_OVERRIDE; |
201 | 222 |
202 virtual void SetGlobalProperty(int32_t property, | 223 virtual void SetGlobalProperty(int32_t property, |
203 const char* value); | 224 const char* value) ORTHANC_OVERRIDE; |
204 | 225 |
205 virtual void SetMainDicomTag(int64_t id, | 226 virtual void SetMainDicomTag(int64_t id, |
206 uint16_t group, | 227 uint16_t group, |
207 uint16_t element, | 228 uint16_t element, |
208 const char* value); | 229 const char* value) ORTHANC_OVERRIDE; |
209 | 230 |
210 virtual void SetIdentifierTag(int64_t id, | 231 virtual void SetIdentifierTag(int64_t id, |
211 uint16_t group, | 232 uint16_t group, |
212 uint16_t element, | 233 uint16_t element, |
213 const char* value); | 234 const char* value) ORTHANC_OVERRIDE; |
214 | 235 |
215 virtual void SetMetadata(int64_t id, | 236 virtual void SetMetadata(int64_t id, |
216 int32_t metadataType, | 237 int32_t metadataType, |
217 const char* value); | 238 const char* value) ORTHANC_OVERRIDE; |
218 | 239 |
219 virtual void SetProtectedPatient(int64_t internalId, | 240 virtual void SetProtectedPatient(int64_t internalId, |
220 bool isProtected); | 241 bool isProtected) ORTHANC_OVERRIDE; |
221 | 242 |
222 virtual void StartTransaction() | 243 virtual void StartTransaction() ORTHANC_OVERRIDE |
223 { | 244 { |
224 manager_.StartTransaction(); | 245 manager_.StartTransaction(); |
225 } | 246 } |
226 | 247 |
227 | 248 |
228 virtual void RollbackTransaction() | 249 virtual void RollbackTransaction() ORTHANC_OVERRIDE |
229 { | 250 { |
230 manager_.RollbackTransaction(); | 251 manager_.RollbackTransaction(); |
231 } | 252 } |
232 | 253 |
233 | 254 |
234 virtual void CommitTransaction() | 255 virtual void CommitTransaction() ORTHANC_OVERRIDE |
235 { | 256 { |
236 manager_.CommitTransaction(); | 257 manager_.CommitTransaction(); |
237 } | 258 } |
238 | 259 |
239 | 260 |
240 virtual uint32_t GetDatabaseVersion(); | 261 virtual uint32_t GetDatabaseVersion() ORTHANC_OVERRIDE; |
241 | 262 |
242 virtual void UpgradeDatabase(uint32_t targetVersion, | 263 virtual void UpgradeDatabase(uint32_t targetVersion, |
243 OrthancPluginStorageArea* storageArea); | 264 OrthancPluginStorageArea* storageArea) ORTHANC_OVERRIDE; |
244 | 265 |
245 virtual void ClearMainDicomTags(int64_t internalId); | 266 virtual void ClearMainDicomTags(int64_t internalId) ORTHANC_OVERRIDE; |
246 | 267 |
247 // For unit testing only! | 268 // For unit testing only! |
248 virtual uint64_t GetResourcesCount(); | 269 virtual uint64_t GetResourcesCount(); |
249 | 270 |
250 // For unit testing only! | 271 // For unit testing only! |
258 virtual void GetChildren(std::list<std::string>& childrenPublicIds, | 279 virtual void GetChildren(std::list<std::string>& childrenPublicIds, |
259 int64_t id); | 280 int64_t id); |
260 | 281 |
261 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 | 282 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
262 // New primitive since Orthanc 1.5.2 | 283 // New primitive since Orthanc 1.5.2 |
263 virtual void LookupResources(const std::vector<Orthanc::DatabaseConstraint>& lookup, | 284 virtual void LookupResources(OrthancPlugins::IDatabaseBackendOutput& output, |
285 const std::vector<Orthanc::DatabaseConstraint>& lookup, | |
264 OrthancPluginResourceType queryLevel, | 286 OrthancPluginResourceType queryLevel, |
265 uint32_t limit, | 287 uint32_t limit, |
266 bool requestSomeInstance); | 288 bool requestSomeInstance) ORTHANC_OVERRIDE; |
267 #endif | 289 #endif |
268 | 290 |
269 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 | 291 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
270 // New primitive since Orthanc 1.5.2 | 292 // New primitive since Orthanc 1.5.2 |
271 virtual void SetResourcesContent( | 293 virtual void SetResourcesContent( |
272 uint32_t countIdentifierTags, | 294 uint32_t countIdentifierTags, |
273 const OrthancPluginResourcesContentTags* identifierTags, | 295 const OrthancPluginResourcesContentTags* identifierTags, |
274 uint32_t countMainDicomTags, | 296 uint32_t countMainDicomTags, |
275 const OrthancPluginResourcesContentTags* mainDicomTags, | 297 const OrthancPluginResourcesContentTags* mainDicomTags, |
276 uint32_t countMetadata, | 298 uint32_t countMetadata, |
277 const OrthancPluginResourcesContentMetadata* metadata); | 299 const OrthancPluginResourcesContentMetadata* metadata) ORTHANC_OVERRIDE; |
278 #endif | 300 #endif |
279 | 301 |
280 // New primitive since Orthanc 1.5.2 | 302 // New primitive since Orthanc 1.5.2 |
281 virtual void GetChildrenMetadata(std::list<std::string>& target, | 303 virtual void GetChildrenMetadata(std::list<std::string>& target, |
282 int64_t resourceId, | 304 int64_t resourceId, |
283 int32_t metadata); | 305 int32_t metadata) ORTHANC_OVERRIDE; |
284 | 306 |
285 virtual void TagMostRecentPatient(int64_t patient); | 307 virtual void TagMostRecentPatient(int64_t patient) ORTHANC_OVERRIDE; |
286 | 308 |
287 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 | 309 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 |
288 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) | 310 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) |
289 // New primitive since Orthanc 1.5.4 | 311 // New primitive since Orthanc 1.5.4 |
290 virtual bool LookupResourceAndParent(int64_t& id, | 312 virtual bool LookupResourceAndParent(int64_t& id, |
291 OrthancPluginResourceType& type, | 313 OrthancPluginResourceType& type, |
292 std::string& parentPublicId, | 314 std::string& parentPublicId, |
293 const char* publicId); | 315 const char* publicId) ORTHANC_OVERRIDE; |
294 # endif | 316 # endif |
295 #endif | 317 #endif |
296 | 318 |
297 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 | 319 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 |
298 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) | 320 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) |
299 // New primitive since Orthanc 1.5.4 | 321 // New primitive since Orthanc 1.5.4 |
300 virtual void GetAllMetadata(std::map<int32_t, std::string>& result, | 322 virtual void GetAllMetadata(std::map<int32_t, std::string>& result, |
301 int64_t id); | 323 int64_t id) ORTHANC_OVERRIDE; |
302 # endif | 324 # endif |
303 #endif | 325 #endif |
304 }; | 326 }; |
305 } | 327 } |