Mercurial > hg > orthanc
comparison OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp @ 5680:68fc5af30c03
added container class DatabaseConstraints
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 09 Jul 2024 10:09:57 +0200 |
parents | e47ac5e133b1 |
children | 77875b51cf95 |
comparison
equal
deleted
inserted
replaced
5678:e47ac5e133b1 | 5680:68fc5af30c03 |
---|---|
403 LoadTags(ResourceType_Study); | 403 LoadTags(ResourceType_Study); |
404 LoadTags(ResourceType_Series); | 404 LoadTags(ResourceType_Series); |
405 LoadTags(ResourceType_Instance); | 405 LoadTags(ResourceType_Instance); |
406 } | 406 } |
407 | 407 |
408 void NormalizeLookup(std::vector<DatabaseConstraint>& target, | 408 void NormalizeLookup(DatabaseConstraints& target, |
409 const DatabaseLookup& source, | 409 const DatabaseLookup& source, |
410 ResourceType queryLevel) const | 410 ResourceType queryLevel) const |
411 { | 411 { |
412 target.clear(); | 412 target.Clear(); |
413 target.reserve(source.GetConstraintsCount()); | |
414 | 413 |
415 for (size_t i = 0; i < source.GetConstraintsCount(); i++) | 414 for (size_t i = 0; i < source.GetConstraintsCount(); i++) |
416 { | 415 { |
417 ResourceType level; | 416 ResourceType level; |
418 DicomTagType type; | 417 DicomTagType type; |
427 queryLevel != ResourceType_Patient) | 426 queryLevel != ResourceType_Patient) |
428 { | 427 { |
429 level = ResourceType_Study; | 428 level = ResourceType_Study; |
430 } | 429 } |
431 | 430 |
432 target.push_back(source.GetConstraint(i).ConvertToDatabaseConstraint(level, type)); | 431 target.AddConstraint(source.GetConstraint(i).ConvertToDatabaseConstraint(level, type)); |
433 } | 432 } |
434 } | 433 } |
435 } | 434 } |
436 }; | 435 }; |
437 | 436 |
1685 | 1684 |
1686 result.clear(); | 1685 result.clear(); |
1687 | 1686 |
1688 DicomTagConstraint c(tag, ConstraintType_Equal, value, true, true); | 1687 DicomTagConstraint c(tag, ConstraintType_Equal, value, true, true); |
1689 | 1688 |
1690 std::vector<DatabaseConstraint> query; | 1689 DatabaseConstraints query; |
1691 query.push_back(c.ConvertToDatabaseConstraint(level, DicomTagType_Identifier)); | 1690 query.AddConstraint(c.ConvertToDatabaseConstraint(level, DicomTagType_Identifier)); |
1692 | 1691 |
1693 | 1692 |
1694 class Operations : public IReadOnlyOperations | 1693 class Operations : public IReadOnlyOperations |
1695 { | 1694 { |
1696 private: | 1695 private: |
1697 std::vector<std::string>& result_; | 1696 std::vector<std::string>& result_; |
1698 const std::vector<DatabaseConstraint>& query_; | 1697 const DatabaseConstraints& query_; |
1699 ResourceType level_; | 1698 ResourceType level_; |
1700 | 1699 |
1701 public: | 1700 public: |
1702 Operations(std::vector<std::string>& result, | 1701 Operations(std::vector<std::string>& result, |
1703 const std::vector<DatabaseConstraint>& query, | 1702 const DatabaseConstraints& query, |
1704 ResourceType level) : | 1703 ResourceType level) : |
1705 result_(result), | 1704 result_(result), |
1706 query_(query), | 1705 query_(query), |
1707 level_(level) | 1706 level_(level) |
1708 { | 1707 { |
1984 ResourceType queryLevel, | 1983 ResourceType queryLevel, |
1985 const std::set<std::string>& labels, | 1984 const std::set<std::string>& labels, |
1986 LabelsConstraint labelsConstraint, | 1985 LabelsConstraint labelsConstraint, |
1987 uint32_t limit) | 1986 uint32_t limit) |
1988 { | 1987 { |
1989 class Operations : public ReadOnlyOperationsT6<bool, const std::vector<DatabaseConstraint>&, ResourceType, | 1988 class Operations : public ReadOnlyOperationsT6<bool, const DatabaseConstraints&, ResourceType, |
1990 const std::set<std::string>&, LabelsConstraint, size_t> | 1989 const std::set<std::string>&, LabelsConstraint, size_t> |
1991 { | 1990 { |
1992 private: | 1991 private: |
1993 std::list<std::string> resourcesList_; | 1992 std::list<std::string> resourcesList_; |
1994 std::list<std::string> instancesList_; | 1993 std::list<std::string> instancesList_; |
2030 for (std::set<std::string>::const_iterator it = labels.begin(); it != labels.end(); ++it) | 2029 for (std::set<std::string>::const_iterator it = labels.begin(); it != labels.end(); ++it) |
2031 { | 2030 { |
2032 ServerToolbox::CheckValidLabel(*it); | 2031 ServerToolbox::CheckValidLabel(*it); |
2033 } | 2032 } |
2034 | 2033 |
2035 std::vector<DatabaseConstraint> normalized; | 2034 DatabaseConstraints normalized; |
2036 | 2035 |
2037 assert(mainDicomTagsRegistry_.get() != NULL); | 2036 assert(mainDicomTagsRegistry_.get() != NULL); |
2038 mainDicomTagsRegistry_->NormalizeLookup(normalized, lookup, queryLevel); | 2037 mainDicomTagsRegistry_->NormalizeLookup(normalized, lookup, queryLevel); |
2039 | 2038 |
2040 Operations operations; | 2039 Operations operations; |