comparison OrthancServer/Search/DatabaseConstraint.cpp @ 3078:147497152ce3 db-changes

fix
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 03 Jan 2019 12:47:17 +0100
parents aae1d6d31fef
children df1b17be20f6
comparison
equal deleted inserted replaced
3077:aae1d6d31fef 3078:147497152ce3
174 constraintType_(Plugins::Convert(constraint.type)), 174 constraintType_(Plugins::Convert(constraint.type)),
175 caseSensitive_(constraint.isCaseSensitive), 175 caseSensitive_(constraint.isCaseSensitive),
176 mandatory_(constraint.isMandatory) 176 mandatory_(constraint.isMandatory)
177 { 177 {
178 if (constraintType_ != ConstraintType_List && 178 if (constraintType_ != ConstraintType_List &&
179 values_.size() != 1) 179 constraint.valuesCount != 1)
180 { 180 {
181 throw OrthancException(ErrorCode_ParameterOutOfRange); 181 throw OrthancException(ErrorCode_ParameterOutOfRange);
182 } 182 }
183 183
184 values_.resize(constraint.valuesCount); 184 values_.resize(constraint.valuesCount);
185 185
186 for (uint32_t i = 0; i < constraint.valuesCount; i++) 186 for (uint32_t i = 0; i < constraint.valuesCount; i++)
187 { 187 {
188 assert(constraint.values[i] != NULL);
188 values_[i].assign(constraint.values[i]); 189 values_[i].assign(constraint.values[i]);
189 } 190 }
190 } 191 }
191 #endif 192 #endif
192 193
221 void DatabaseConstraint::EncodeForPlugins(OrthancPluginDatabaseConstraint& constraint, 222 void DatabaseConstraint::EncodeForPlugins(OrthancPluginDatabaseConstraint& constraint,
222 std::vector<const char*>& tmpValues) const 223 std::vector<const char*>& tmpValues) const
223 { 224 {
224 memset(&constraint, 0, sizeof(constraint)); 225 memset(&constraint, 0, sizeof(constraint));
225 226
227 tmpValues.resize(values_.size());
228
229 for (size_t i = 0; i < values_.size(); i++)
230 {
231 tmpValues[i] = values_[i].c_str();
232 }
233
226 constraint.level = Plugins::Convert(level_); 234 constraint.level = Plugins::Convert(level_);
227 constraint.tagGroup = tag_.GetGroup(); 235 constraint.tagGroup = tag_.GetGroup();
228 constraint.tagElement = tag_.GetElement(); 236 constraint.tagElement = tag_.GetElement();
229 constraint.isIdentifierTag = isIdentifier_; 237 constraint.isIdentifierTag = isIdentifier_;
230 constraint.isCaseSensitive = caseSensitive_; 238 constraint.isCaseSensitive = caseSensitive_;
231 constraint.isMandatory = mandatory_; 239 constraint.isMandatory = mandatory_;
232 constraint.type = Plugins::Convert(constraintType_); 240 constraint.type = Plugins::Convert(constraintType_);
233 constraint.valuesCount = values_.size(); 241 constraint.valuesCount = values_.size();
234 242 constraint.values = (tmpValues.empty() ? NULL : &tmpValues[0]);
235 tmpValues.resize(values_.size());
236
237 for (size_t i = 0; i < values_.size(); i++)
238 {
239 tmpValues[i] = values_[i].c_str();
240 }
241 } 243 }
242 #endif 244 #endif
243 } 245 }