# HG changeset patch # User Sebastien Jodogne # Date 1680942363 -7200 # Node ID 82921a29349a2b4b06857f51643fe6e9dc35098e # Parent a8774581adfc2fd0d995e76b58e98e55d3692024 implemented IDatabaseBackend::ListAllLabels() diff -r a8774581adfc -r 82921a29349a Framework/Plugins/DatabaseBackendAdapterV4.cpp --- a/Framework/Plugins/DatabaseBackendAdapterV4.cpp Fri Apr 07 22:32:15 2023 +0200 +++ b/Framework/Plugins/DatabaseBackendAdapterV4.cpp Sat Apr 08 10:26:03 2023 +0200 @@ -1196,7 +1196,15 @@ case Orthanc::DatabasePluginMessages::OPERATION_LIST_LABELS: { std::list labels; - backend.ListLabels(labels, manager, request.list_labels().id()); + + if (request.list_labels().single_resource()) + { + backend.ListLabels(labels, manager, request.list_labels().id()); + } + else + { + backend.ListAllLabels(labels, manager); + } response.mutable_list_available_attachments()->mutable_attachments()->Reserve(labels.size()); for (std::list::const_iterator it = labels.begin(); it != labels.end(); ++it) diff -r a8774581adfc -r 82921a29349a Framework/Plugins/IDatabaseBackend.h --- a/Framework/Plugins/IDatabaseBackend.h Fri Apr 07 22:32:15 2023 +0200 +++ b/Framework/Plugins/IDatabaseBackend.h Sat Apr 08 10:26:03 2023 +0200 @@ -338,5 +338,9 @@ virtual void ListLabels(std::list& target, DatabaseManager& manager, int64_t resource) = 0; + + // New in Orthanc 1.12.0 + virtual void ListAllLabels(std::list& target, + DatabaseManager& manager) = 0; }; } diff -r a8774581adfc -r 82921a29349a Framework/Plugins/IndexBackend.cpp --- a/Framework/Plugins/IndexBackend.cpp Fri Apr 07 22:32:15 2023 +0200 +++ b/Framework/Plugins/IndexBackend.cpp Sat Apr 08 10:26:03 2023 +0200 @@ -2688,6 +2688,18 @@ } + void IndexBackend::ListAllLabels(std::list& target, + DatabaseManager& manager) + { + DatabaseManager::CachedStatement statement( + STATEMENT_FROM_HERE, manager, + "SELECT DISTINCT label FROM Labels"); + + Dictionary args; + ReadListOfStrings(target, statement, args); + } + + void IndexBackend::Register(IndexBackend* backend, size_t countConnections, unsigned int maxDatabaseRetries) diff -r a8774581adfc -r 82921a29349a Framework/Plugins/IndexBackend.h --- a/Framework/Plugins/IndexBackend.h Fri Apr 07 22:32:15 2023 +0200 +++ b/Framework/Plugins/IndexBackend.h Sat Apr 08 10:26:03 2023 +0200 @@ -392,6 +392,9 @@ virtual void ListLabels(std::list& target, DatabaseManager& manager, int64_t resource) ORTHANC_OVERRIDE; + + virtual void ListAllLabels(std::list& target, + DatabaseManager& manager) ORTHANC_OVERRIDE; /** * "maxDatabaseRetries" is to handle