@@ -151,7 +151,7 @@ private void validateAnswer(Concept question, FormElement formElement, Object va
151151 if (value == null || (value instanceof String && ((String ) value ).trim ().isEmpty ())) {
152152 return ;
153153 }
154-
154+
155155 ConceptDataType dataType = ConceptDataType .valueOf (question .getDataType ());
156156 switch (dataType ) {
157157 case Coded :
@@ -182,8 +182,7 @@ private void validateAnswer(Concept question, FormElement formElement, Object va
182182 case PhoneNumber :
183183 validatePhoneNumberValue (question , value , errorMessages );
184184 break ;
185- case Image :
186- case ImageV2 :
185+ case Image , ImageV2 , Signature :
187186 validateImageValue (question , value , errorMessages );
188187 break ;
189188 default :
@@ -193,7 +192,7 @@ private void validateAnswer(Concept question, FormElement formElement, Object va
193192
194193 private void validateCodedValue (Concept question , Object value , List <String > errorMessages ) {
195194 if (question .getConceptAnswers ().stream ().noneMatch (ans -> ans .getAnswerConcept ().getUuid ().equals (value ))) {
196- errorMessages .add (String .format ("Concept answer '%s' not found in Concept '%s' (%s)" ,
195+ errorMessages .add (String .format ("Concept answer '%s' not found in Concept '%s' (%s)" ,
197196 value , question .getName (), question .getUuid ()));
198197 }
199198 }
@@ -257,9 +256,9 @@ private void validateSubjectValue(Concept question, Object value, List<String> e
257256 if (keyValues != null && keyValues .containsKey (KeyType .subjectTypeUUID )) {
258257 KeyValue keyValue = keyValues .get (KeyType .subjectTypeUUID );
259258 String subjectTypeUuid = keyValue .getValue ().toString ();
260-
259+
261260 SubjectType subjectType = subjectTypeRepository .findByUuid (subjectTypeUuid );
262-
261+
263262 if (subjectType != null && individualRepository .findByLegacyIdOrUuidAndSubjectType ((String ) value , subjectType ) == null ) {
264263 errorMessages .add (formatErrorMessage (question , value ));
265264 }
@@ -278,33 +277,33 @@ private void validateLocationValue(Concept question, Object value, List<String>
278277 if (keyValues != null && keyValues .containsKey (KeyType .lowestAddressLevelTypeUUIDs )) {
279278 KeyValue keyValue = keyValues .get (KeyType .lowestAddressLevelTypeUUIDs );
280279 Object keyValueObj = keyValue .getValue ();
281-
280+
282281 if (keyValueObj instanceof List <?>) {
283282 // Safe cast with instanceof check
284283 @ SuppressWarnings ("unchecked" )
285284 List <String > lowestLevelUuids = (List <String >) keyValueObj ;
286-
285+
287286 List <AddressLevelType > lowestLevels = lowestLevelUuids .stream ()
288287 .map (addressLevelTypeRepository ::findByUuid )
289288 .filter (Objects ::nonNull )
290289 .toList ();
291-
290+
292291 boolean isValid = lowestLevels .stream ()
293292 .map (AddressLevelType ::getAddressLevels )
294293 .flatMap (Collection ::stream )
295294 .map (AddressLevel ::getUuid )
296295 .toList ()
297296 .contains (value );
298-
297+
299298 if (!isValid ) {
300299 errorMessages .add (formatErrorMessage (question , value ));
301300 }
302301 } else {
303- errorMessages .add (String .format ("Invalid lowest address level type for concept '%s'" ,
302+ errorMessages .add (String .format ("Invalid lowest address level type for concept '%s'" ,
304303 question .getName ()));
305304 }
306305 } else {
307- errorMessages .add (String .format ("Missing lowest address level type for concept '%s'" ,
306+ errorMessages .add (String .format ("Missing lowest address level type for concept '%s'" ,
308307 question .getName ()));
309308 }
310309 } catch (Exception e ) {
@@ -330,8 +329,8 @@ private void validateImageValue(Concept question, Object value, List<String> err
330329 URL dummyUrl = s3Service .generateMediaUploadUrl ("dummy.jpg" , HttpMethod .PUT );
331330 // Use non-deprecated constructor for URL
332331 URL imageUrl = new URI (value .toString ()).toURL ();
333-
334- if (!Objects .equals (dummyUrl .getProtocol (), imageUrl .getProtocol ()) ||
332+
333+ if (!Objects .equals (dummyUrl .getProtocol (), imageUrl .getProtocol ()) ||
335334 !Objects .equals (dummyUrl .getHost (), imageUrl .getHost ())) {
336335 errorMessages .add (formatErrorMessage (question , value ));
337336 }
@@ -362,7 +361,7 @@ private void splitQuestionGroupValueIfRequiredAndThenValidate(FormElement formEl
362361 validateCollectionItem (formElement , qGroupValue , formMapping , errorMessages );
363362 }
364363 }
365-
364+
366365 private void validateChildObservation (FormElement questionGroupFormElement , Map <String , Object > qGroupValueInstance , FormMapping formMapping , List <String > errorMessages ) {
367366 LinkedHashMap <String , FormElement > formElements = formMappingService .getEntityConceptMapForSpecificQuestionGroupFormElement (questionGroupFormElement , formMapping , INCLUDE_VOIDED_FORM_ELEMENTS );
368367 List <ObservationRequest > observationRequests = qGroupValueInstance .entrySet ().stream ().map (this ::createObservationRequest ).collect (Collectors .toList ());
@@ -379,14 +378,14 @@ private void validateChildObservation(FormElement questionGroupFormElement, Map<
379378
380379 validateConceptValuesAreOfRequiredType (observationRequests , formElements , formMapping , errorMessages );
381380 }
382-
381+
383382 private void validateCollectionItem (FormElement formElement , Object item , FormMapping formMapping , List <String > errorMessages ) {
384383 if (item instanceof Map ) {
385384 @ SuppressWarnings ("unchecked" )
386385 Map <String , Object > valueMap = (Map <String , Object >) item ;
387386 validateChildObservation (formElement , valueMap , formMapping , errorMessages );
388387 } else {
389- errorMessages .add (String .format ("Invalid question group value type for concept '%s'" ,
388+ errorMessages .add (String .format ("Invalid question group value type for concept '%s'" ,
390389 formElement .getConcept ().getName ()));
391390 }
392391 }
0 commit comments