comparison 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
comparison
equal deleted inserted replaced
5681:77875b51cf95 5682:fd4c5e064cbe
40 #include "../../OrthancFramework/Sources/MetricsRegistry.h" 40 #include "../../OrthancFramework/Sources/MetricsRegistry.h"
41 #include "../Plugins/Engine/OrthancPlugins.h" 41 #include "../Plugins/Engine/OrthancPlugins.h"
42 42
43 #include "OrthancConfiguration.h" 43 #include "OrthancConfiguration.h"
44 #include "OrthancRestApi/OrthancRestApi.h" 44 #include "OrthancRestApi/OrthancRestApi.h"
45 #include "ResourceFinder.h"
45 #include "Search/DatabaseLookup.h" 46 #include "Search/DatabaseLookup.h"
46 #include "ServerJobs/OrthancJobUnserializer.h" 47 #include "ServerJobs/OrthancJobUnserializer.h"
47 #include "ServerToolbox.h" 48 #include "ServerToolbox.h"
48 #include "StorageCommitmentReports.h" 49 #include "StorageCommitmentReports.h"
49 50
1552 if (hasModalitiesInStudyLookup) 1553 if (hasModalitiesInStudyLookup)
1553 { 1554 {
1554 fastLookup->RemoveConstraint(DICOM_TAG_MODALITIES_IN_STUDY); 1555 fastLookup->RemoveConstraint(DICOM_TAG_MODALITIES_IN_STUDY);
1555 } 1556 }
1556 1557
1557 { 1558 const size_t lookupLimit = (databaseLimit == 0 ? 0 : databaseLimit + 1);
1558 const size_t lookupLimit = (databaseLimit == 0 ? 0 : databaseLimit + 1); 1559
1560 if (false)
1561 {
1562 /**
1563 * EXPERIMENTAL VERSION
1564 **/
1565
1566 ResourceFinder finder(queryLevel, false /* TODO-FIND: don't expand for now */);
1567 finder.SetLimits(0, lookupLimit);
1568 finder.SetDatabaseLookup(*fastLookup);
1569 finder.SetLabels(lookup.GetLabels());
1570 finder.SetLabelsConstraint(lookup.GetLabelsConstraint());
1571
1572 if (queryLevel != ResourceType_Instance)
1573 {
1574 finder.SetRetrieveOneInstanceIdentifier(true);
1575 }
1576
1577 FindResponse response;
1578 finder.Execute(response, GetIndex());
1579
1580 resources.resize(response.GetSize());
1581 instances.resize(response.GetSize());
1582
1583 for (size_t i = 0; i < response.GetSize(); i++)
1584 {
1585 const FindResponse::Resource& resource = response.GetResourceByIndex(i);
1586 resources[i] = resource.GetIdentifier();
1587
1588 if (queryLevel == ResourceType_Instance)
1589 {
1590 instances[i] = resource.GetIdentifier();
1591 }
1592 else
1593 {
1594 instances[i] = resource.GetOneInstanceIdentifier();
1595 }
1596 }
1597 }
1598 else
1599 {
1600 /**
1601 * VERSION IN ORTHANC <= 1.12.4
1602 **/
1603
1559 GetIndex().ApplyLookupResources(resources, &instances, *fastLookup, queryLevel, 1604 GetIndex().ApplyLookupResources(resources, &instances, *fastLookup, queryLevel,
1560 lookup.GetLabels(), lookup.GetLabelsConstraint(), lookupLimit); 1605 lookup.GetLabels(), lookup.GetLabelsConstraint(), lookupLimit);
1561 } 1606 }
1562 1607
1563 bool complete = (databaseLimit == 0 || 1608 bool complete = (databaseLimit == 0 ||