comparison OrthancServer/Search/Compatibility/DatabaseLookup.cpp @ 3075:ead8576a02ef db-changes

IDatabaseWrapper::ApplyLookupResources now returns lists
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 02 Jan 2019 18:39:25 +0100
parents 5ebd2ef5e7ae
children 195ba4cbac3f
comparison
equal deleted inserted replaced
3074:495c5edce708 3075:ead8576a02ef
310 310
311 return database.GetPublicId(resource); 311 return database.GetPublicId(resource);
312 } 312 }
313 313
314 314
315 void DatabaseLookup::ApplyLookupResources(std::vector<std::string>& resourcesId, 315 void DatabaseLookup::ApplyLookupResources(std::list<std::string>& resourcesId,
316 std::vector<std::string>* instancesId, 316 std::list<std::string>* instancesId,
317 const std::vector<DatabaseConstraint>& lookup, 317 const std::vector<DatabaseConstraint>& lookup,
318 ResourceType queryLevel, 318 ResourceType queryLevel,
319 size_t limit) 319 size_t limit)
320 { 320 {
321 // This is a re-implementation of 321 // This is a re-implementation of
387 resources.resize(limit); 387 resources.resize(limit);
388 } 388 }
389 389
390 // Get the public ID of all the selected resources 390 // Get the public ID of all the selected resources
391 391
392 resourcesId.resize(resources.size());
393
394 if (instancesId != NULL)
395 {
396 instancesId->resize(resources.size());
397 }
398
399 size_t pos = 0; 392 size_t pos = 0;
400 393
401 for (std::list<int64_t>::const_iterator 394 for (std::list<int64_t>::const_iterator
402 it = resources.begin(); it != resources.end(); ++it, pos++) 395 it = resources.begin(); it != resources.end(); ++it, pos++)
403 { 396 {
404 assert(database_.GetResourceType(*it) == queryLevel); 397 assert(database_.GetResourceType(*it) == queryLevel);
405 398
406 resourcesId[pos] = database_.GetPublicId(*it); 399 const std::string resource = database_.GetPublicId(*it);
400 resourcesId.push_back(resource);
407 401
408 if (instancesId != NULL) 402 if (instancesId != NULL)
409 { 403 {
410 // Collect one child instance for each of the selected resources
411 if (queryLevel == ResourceType_Instance) 404 if (queryLevel == ResourceType_Instance)
412 { 405 {
413 (*instancesId) [pos] = resourcesId[pos]; 406 // The resource is itself the instance
407 instancesId->push_back(resource);
414 } 408 }
415 else 409 else
416 { 410 {
417 (*instancesId) [pos] = GetOneInstance(database_, *it, queryLevel); 411 // Collect one child instance for each of the selected resources
412 instancesId->push_back(GetOneInstance(database_, *it, queryLevel));
418 } 413 }
419 } 414 }
420 } 415 }
421 } 416 }
422 } 417 }