comparison OrthancServer/Sources/Database/Compatibility/DatabaseLookup.cpp @ 5680:68fc5af30c03

added container class DatabaseConstraints
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 09 Jul 2024 10:09:57 +0200
parents f7adfb22e20e
children
comparison
equal deleted inserted replaced
5678:e47ac5e133b1 5680:68fc5af30c03
151 151
152 152
153 static void ApplyLevel(SetOfResources& candidates, 153 static void ApplyLevel(SetOfResources& candidates,
154 IDatabaseWrapper::ITransaction& transaction, 154 IDatabaseWrapper::ITransaction& transaction,
155 ILookupResources& compatibility, 155 ILookupResources& compatibility,
156 const std::vector<DatabaseConstraint>& lookup, 156 const DatabaseConstraints& lookup,
157 ResourceType level) 157 ResourceType level)
158 { 158 {
159 typedef std::set<const DatabaseConstraint*> SetOfConstraints; 159 typedef std::set<const DatabaseConstraint*> SetOfConstraints;
160 typedef std::map<DicomTag, SetOfConstraints> Identifiers; 160 typedef std::map<DicomTag, SetOfConstraints> Identifiers;
161 161
164 // tags" constraints 164 // tags" constraints
165 165
166 Identifiers identifiers; 166 Identifiers identifiers;
167 SetOfConstraints mainTags; 167 SetOfConstraints mainTags;
168 168
169 for (size_t i = 0; i < lookup.size(); i++) 169 for (size_t i = 0; i < lookup.GetSize(); i++)
170 { 170 {
171 if (lookup[i].GetLevel() == level) 171 const DatabaseConstraint& constraint = lookup.GetConstraint(i);
172 { 172
173 if (lookup[i].IsIdentifier()) 173 if (constraint.GetLevel() == level)
174 { 174 {
175 identifiers[lookup[i].GetTag()].insert(&lookup[i]); 175 if (constraint.IsIdentifier())
176 {
177 identifiers[constraint.GetTag()].insert(&constraint);
176 } 178 }
177 else 179 else
178 { 180 {
179 mainTags.insert(&lookup[i]); 181 mainTags.insert(&constraint);
180 } 182 }
181 } 183 }
182 } 184 }
183 185
184 186
304 } 306 }
305 307
306 308
307 void DatabaseLookup::ApplyLookupResources(std::list<std::string>& resourcesId, 309 void DatabaseLookup::ApplyLookupResources(std::list<std::string>& resourcesId,
308 std::list<std::string>* instancesId, 310 std::list<std::string>* instancesId,
309 const std::vector<DatabaseConstraint>& lookup, 311 const DatabaseConstraints& lookup,
310 ResourceType queryLevel, 312 ResourceType queryLevel,
311 size_t limit) 313 size_t limit)
312 { 314 {
313 // This is a re-implementation of 315 // This is a re-implementation of
314 // "../../../Resources/Graveyard/DatabaseOptimizations/LookupResource.cpp" 316 // "../../../Resources/Graveyard/DatabaseOptimizations/LookupResource.cpp"
318 ResourceType_Series < ResourceType_Instance); 320 ResourceType_Series < ResourceType_Instance);
319 321
320 ResourceType upperLevel = queryLevel; 322 ResourceType upperLevel = queryLevel;
321 ResourceType lowerLevel = queryLevel; 323 ResourceType lowerLevel = queryLevel;
322 324
323 for (size_t i = 0; i < lookup.size(); i++) 325 for (size_t i = 0; i < lookup.GetSize(); i++)
324 { 326 {
325 ResourceType level = lookup[i].GetLevel(); 327 ResourceType level = lookup.GetConstraint(i).GetLevel();
326 328
327 if (level < upperLevel) 329 if (level < upperLevel)
328 { 330 {
329 upperLevel = level; 331 upperLevel = level;
330 } 332 }