Mercurial > hg > orthanc
comparison OrthancServer/Search/DatabaseLookup.cpp @ 3071:2df061cf2fec db-changes
getting rid of IFindConstraint hierarchy
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 02 Jan 2019 11:26:27 +0100 |
parents | ce272138f15e |
children | 1b05fd072c57 |
comparison
equal
deleted
inserted
replaced
3070:1bc4a1bb66e9 | 3071:2df061cf2fec |
---|---|
34 #include "../PrecompiledHeadersServer.h" | 34 #include "../PrecompiledHeadersServer.h" |
35 #include "DatabaseLookup.h" | 35 #include "DatabaseLookup.h" |
36 | 36 |
37 #include "../ServerToolbox.h" | 37 #include "../ServerToolbox.h" |
38 #include "../../Core/DicomParsing/FromDcmtkBridge.h" | 38 #include "../../Core/DicomParsing/FromDcmtkBridge.h" |
39 #include "../../Core/DicomParsing/ToDcmtkBridge.h" | |
39 | 40 |
40 namespace Orthanc | 41 namespace Orthanc |
41 { | 42 { |
42 DatabaseLookup::~DatabaseLookup() | 43 DatabaseLookup::~DatabaseLookup() |
43 { | 44 { |
80 { | 81 { |
81 for (size_t i = 0; i < constraints_.size(); i++) | 82 for (size_t i = 0; i < constraints_.size(); i++) |
82 { | 83 { |
83 assert(constraints_[i] != NULL); | 84 assert(constraints_[i] != NULL); |
84 if (!constraints_[i]->IsMatch(value)) | 85 if (!constraints_[i]->IsMatch(value)) |
86 { | |
87 return false; | |
88 } | |
89 } | |
90 | |
91 return true; | |
92 } | |
93 | |
94 | |
95 bool DatabaseLookup::IsMatch(DcmItem& item, | |
96 Encoding encoding) const | |
97 { | |
98 for (size_t i = 0; i < constraints_.size(); i++) | |
99 { | |
100 assert(constraints_[i] != NULL); | |
101 | |
102 DcmTagKey tag = ToDcmtkBridge::Convert(constraints_[i]->GetTag()); | |
103 | |
104 DcmElement* element = NULL; | |
105 if (!item.findAndGetElement(tag, element).good()) | |
106 { | |
107 if (constraints_[i]->IsMandatory()) | |
108 { | |
109 return false; | |
110 } | |
111 else | |
112 { | |
113 return true; | |
114 } | |
115 } | |
116 | |
117 if (element == NULL) | |
118 { | |
119 return false; | |
120 } | |
121 | |
122 std::set<DicomTag> ignoreTagLength; | |
123 std::auto_ptr<DicomValue> value(FromDcmtkBridge::ConvertLeafElement | |
124 (*element, DicomToJsonFlags_None, | |
125 ORTHANC_MAXIMUM_TAG_LENGTH, encoding, ignoreTagLength)); | |
126 | |
127 if (value->IsNull() || | |
128 value->IsBinary() || | |
129 !constraints_[i]->IsMatch(value->GetContent())) | |
85 { | 130 { |
86 return false; | 131 return false; |
87 } | 132 } |
88 } | 133 } |
89 | 134 |