comparison OrthancServer/Sources/Database/Compatibility/GenericFind.cpp @ 5773:3b7dce0e43c6 find-refactoring

handling of case limit=0
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 11 Sep 2024 21:21:42 +0200
parents 093a8693ba16
children b24b61331566
comparison
equal deleted inserted replaced
5772:093a8693ba16 5773:3b7dce0e43c6
127 !request.GetOrthancIdentifiers().HasPatientId() && 127 !request.GetOrthancIdentifiers().HasPatientId() &&
128 !request.GetOrthancIdentifiers().HasStudyId() && 128 !request.GetOrthancIdentifiers().HasStudyId() &&
129 !request.GetOrthancIdentifiers().HasSeriesId() && 129 !request.GetOrthancIdentifiers().HasSeriesId() &&
130 !request.GetOrthancIdentifiers().HasInstanceId()) 130 !request.GetOrthancIdentifiers().HasInstanceId())
131 { 131 {
132 if (request.HasLimits()) 132 if (!request.HasLimits())
133 {
134 transaction_.GetAllPublicIds(identifiers, request.GetLevel());
135 }
136 else if (request.GetLimitsCount() != 0)
133 { 137 {
134 transaction_.GetAllPublicIds(identifiers, request.GetLevel(), request.GetLimitsSince(), request.GetLimitsCount()); 138 transaction_.GetAllPublicIds(identifiers, request.GetLevel(), request.GetLimitsSince(), request.GetLimitsCount());
135 } 139 }
136 else 140 else
137 { 141 {
138 transaction_.GetAllPublicIds(identifiers, request.GetLevel()); 142 // Starting with Orthanc 1.12.5, "limit=0" means "no limit"
143 std::list<std::string> tmp;
144 transaction_.GetAllPublicIds(tmp, request.GetLevel());
145
146 size_t count = 0;
147 for (std::list<std::string>::const_iterator it = tmp.begin(); it != tmp.end(); ++it)
148 {
149 if (count >= request.GetLimitsSince())
150 {
151 identifiers.push_back(*it);
152 }
153
154 count++;
155 }
139 } 156 }
140 } 157 }
141 else if (IsRequestWithoutContraint(request) && 158 else if (IsRequestWithoutContraint(request) &&
142 request.GetLevel() == ResourceType_Patient && 159 request.GetLevel() == ResourceType_Patient &&
143 request.GetOrthancIdentifiers().HasPatientId() && 160 request.GetOrthancIdentifiers().HasPatientId() &&