comparison OrthancServer/Sources/ServerContext.cpp @ 5714:2b05428843d2 find-refactoring

removed dangerous overload of ResourceFinder::Execute()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 13 Jul 2024 00:20:33 +0200
parents 708952bd869c
children 593e110de3d8 796cb17db15c
comparison
equal deleted inserted replaced
5713:d851a54e49b7 5714:2b05428843d2
1554 if (hasModalitiesInStudyLookup) 1554 if (hasModalitiesInStudyLookup)
1555 { 1555 {
1556 fastLookup->RemoveConstraint(DICOM_TAG_MODALITIES_IN_STUDY); 1556 fastLookup->RemoveConstraint(DICOM_TAG_MODALITIES_IN_STUDY);
1557 } 1557 }
1558 1558
1559 if (true) 1559 const size_t lookupLimit = (databaseLimit == 0 ? 0 : databaseLimit + 1);
1560 { 1560 GetIndex().ApplyLookupResources(resources, &instances, *fastLookup, queryLevel, labels, labelsConstraint, lookupLimit);
1561 /**
1562 * EXPERIMENTAL VERSION
1563 **/
1564
1565 ResourceFinder finder(queryLevel, false /* TODO-FIND: don't expand for now */);
1566 finder.SetDatabaseLimits(databaseLimit);
1567 finder.SetDatabaseLookup(lookup);
1568 finder.SetLabels(labels);
1569 finder.SetLabelsConstraint(labelsConstraint);
1570
1571 if (queryLevel != ResourceType_Instance)
1572 {
1573 finder.SetRetrieveOneInstanceIdentifier(true);
1574 }
1575
1576 FindResponse response;
1577 finder.Execute(response, GetIndex());
1578
1579 resources.resize(response.GetSize());
1580 instances.resize(response.GetSize());
1581
1582 for (size_t i = 0; i < response.GetSize(); i++)
1583 {
1584 const FindResponse::Resource& resource = response.GetResourceByIndex(i);
1585 resources[i] = resource.GetIdentifier();
1586
1587 if (queryLevel == ResourceType_Instance)
1588 {
1589 instances[i] = resource.GetIdentifier();
1590 }
1591 else
1592 {
1593 instances[i] = resource.GetOneInstanceIdentifier();
1594 }
1595 }
1596 }
1597 else
1598 {
1599 /**
1600 * VERSION IN ORTHANC <= 1.12.4
1601 **/
1602
1603 const size_t lookupLimit = (databaseLimit == 0 ? 0 : databaseLimit + 1);
1604 GetIndex().ApplyLookupResources(resources, &instances, *fastLookup, queryLevel, labels, labelsConstraint, lookupLimit);
1605 }
1606 1561
1607 bool complete = (databaseLimit == 0 || 1562 bool complete = (databaseLimit == 0 ||
1608 resources.size() <= databaseLimit); 1563 resources.size() <= databaseLimit);
1609 1564
1610 LOG(INFO) << "Number of candidate resources after fast DB filtering on main DICOM tags: " << resources.size(); 1565 LOG(INFO) << "Number of candidate resources after fast DB filtering on main DICOM tags: " << resources.size();