Mercurial > hg > orthanc
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 } |