Mercurial > hg > orthanc
diff OrthancServer/Sources/ServerContext.cpp @ 5682:fd4c5e064cbe find-refactoring
started refactoring of ServerContext::Apply()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 09 Jul 2024 11:17:34 +0200 |
parents | 56859a7ffa99 |
children | 9b3816c21008 |
line wrap: on
line diff
--- a/OrthancServer/Sources/ServerContext.cpp Tue Jul 09 10:15:15 2024 +0200 +++ b/OrthancServer/Sources/ServerContext.cpp Tue Jul 09 11:17:34 2024 +0200 @@ -42,6 +42,7 @@ #include "OrthancConfiguration.h" #include "OrthancRestApi/OrthancRestApi.h" +#include "ResourceFinder.h" #include "Search/DatabaseLookup.h" #include "ServerJobs/OrthancJobUnserializer.h" #include "ServerToolbox.h" @@ -1554,8 +1555,52 @@ fastLookup->RemoveConstraint(DICOM_TAG_MODALITIES_IN_STUDY); } + const size_t lookupLimit = (databaseLimit == 0 ? 0 : databaseLimit + 1); + + if (false) { - const size_t lookupLimit = (databaseLimit == 0 ? 0 : databaseLimit + 1); + /** + * EXPERIMENTAL VERSION + **/ + + ResourceFinder finder(queryLevel, false /* TODO-FIND: don't expand for now */); + finder.SetLimits(0, lookupLimit); + finder.SetDatabaseLookup(*fastLookup); + finder.SetLabels(lookup.GetLabels()); + finder.SetLabelsConstraint(lookup.GetLabelsConstraint()); + + if (queryLevel != ResourceType_Instance) + { + finder.SetRetrieveOneInstanceIdentifier(true); + } + + FindResponse response; + finder.Execute(response, GetIndex()); + + resources.resize(response.GetSize()); + instances.resize(response.GetSize()); + + for (size_t i = 0; i < response.GetSize(); i++) + { + const FindResponse::Resource& resource = response.GetResourceByIndex(i); + resources[i] = resource.GetIdentifier(); + + if (queryLevel == ResourceType_Instance) + { + instances[i] = resource.GetIdentifier(); + } + else + { + instances[i] = resource.GetOneInstanceIdentifier(); + } + } + } + else + { + /** + * VERSION IN ORTHANC <= 1.12.4 + **/ + GetIndex().ApplyLookupResources(resources, &instances, *fastLookup, queryLevel, lookup.GetLabels(), lookup.GetLabelsConstraint(), lookupLimit); }