From 943e7bc23e935ff31c15a7399904d242ed0dc67c Mon Sep 17 00:00:00 2001 From: amentis Date: Fri, 19 Apr 2024 15:01:14 +0300 Subject: [PATCH] change build dmp persist for validation with reference single option --- .../eu/eudat/service/dmp/DmpServiceImpl.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/dmp/DmpServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/dmp/DmpServiceImpl.java index 22dfeedd7..c0bfd7030 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/dmp/DmpServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/dmp/DmpServiceImpl.java @@ -1074,7 +1074,7 @@ public class DmpServiceImpl implements DmpService { if (!this.conventionService.isListNullOrEmpty(sectionEntity.getFields())){ for (eu.eudat.commons.types.dmpblueprint.FieldEntity fieldEntity: sectionEntity.getFields()) { - if (!this.conventionService.isListNullOrEmpty(dmpReferenceEntities)) { + if (!this.conventionService.isListNullOrEmpty(dmpReferenceEntities) && fieldEntity.getCategory().equals(DmpBlueprintFieldCategory.ReferenceType)) { List referencePersists = new ArrayList<>(); for (DmpReferenceEntity dmpReferenceEntity : dmpReferenceEntities) { DmpReferenceData referenceData = this.jsonHandlingService.fromJsonSafe(DmpReferenceData.class, dmpReferenceEntity.getData()); @@ -1082,21 +1082,21 @@ public class DmpServiceImpl implements DmpService { ReferenceEntity reference = referencesFromAllFields.stream().filter(x -> x.getId().equals(dmpReferenceEntity.getReferenceId())).collect(Collectors.toList()).getFirst(); if (referenceData.getBlueprintFieldId().equals(fieldEntity.getId()) && reference != null) { referencePersists.add(this.buildReferencePersist(reference)); - // found reference - dmpBlueprintValues.put(fieldEntity.getId(), this.buildDmpBlueprintValuePersist(fieldEntity.getId(), null, referencePersists)); } + // put references + dmpBlueprintValues.put(fieldEntity.getId(), this.buildDmpBlueprintValuePersist(fieldEntity.getId(), null, referencePersists, ((ReferenceTypeFieldEntity)fieldEntity).getMultipleSelect())); } } else if (!this.conventionService.isListNullOrEmpty(data.getDmpBlueprintValues())) { for (DmpBlueprintValueEntity value : data.getDmpBlueprintValues()) { if (value.getFieldId().equals(fieldEntity.getId())) { // found value - dmpBlueprintValues.put(fieldEntity.getId(), this.buildDmpBlueprintValuePersist(fieldEntity.getId(), value.getValue(), null)); + dmpBlueprintValues.put(fieldEntity.getId(), this.buildDmpBlueprintValuePersist(fieldEntity.getId(), value.getValue(), null, null)); } else { - dmpBlueprintValues.put(fieldEntity.getId(), this.buildDmpBlueprintValuePersist(fieldEntity.getId(), null, null)); + dmpBlueprintValues.put(fieldEntity.getId(), this.buildDmpBlueprintValuePersist(fieldEntity.getId(), null, null, null)); } } } else { - dmpBlueprintValues.put(fieldEntity.getId(), this.buildDmpBlueprintValuePersist(fieldEntity.getId(), null, null)); + dmpBlueprintValues.put(fieldEntity.getId(), this.buildDmpBlueprintValuePersist(fieldEntity.getId(), null, null, null)); } } @@ -1157,13 +1157,15 @@ public class DmpServiceImpl implements DmpService { return persist; } - private @NotNull DmpBlueprintValuePersist buildDmpBlueprintValuePersist(UUID fieldId, String fieldValue, List referencePersists){ + private @NotNull DmpBlueprintValuePersist buildDmpBlueprintValuePersist(UUID fieldId, String fieldValue, List referencePersists, Boolean multipleSelect){ DmpBlueprintValuePersist persist = new DmpBlueprintValuePersist(); persist.setFieldId(fieldId); - if (!this.conventionService.isListNullOrEmpty(referencePersists)){ + if (!this.conventionService.isListNullOrEmpty(referencePersists) && multipleSelect){ persist.setReferences(referencePersists); + }else if (!this.conventionService.isListNullOrEmpty(referencePersists)){ + persist.setReference(referencePersists.getFirst()); }else if (fieldValue != null){ persist.setFieldValue(fieldValue); }