diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpproperties/DmpPropertiesPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpproperties/DmpPropertiesPersist.java index 38e7e2002..5ac92a9ac 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpproperties/DmpPropertiesPersist.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpproperties/DmpPropertiesPersist.java @@ -13,10 +13,12 @@ import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.List; +import java.util.Map; +import java.util.UUID; public class DmpPropertiesPersist { - private List dmpBlueprintValues; + private Map dmpBlueprintValues; public static final String _dmpBlueprintValues = "dmpBlueprintValues"; @@ -24,11 +26,11 @@ public class DmpPropertiesPersist { public static final String _contacts = "contacts"; - public List getDmpBlueprintValues() { + public Map getDmpBlueprintValues() { return dmpBlueprintValues; } - public void setDmpBlueprintValues(List dmpBlueprintValues) { + public void setDmpBlueprintValues(Map dmpBlueprintValues) { this.dmpBlueprintValues = dmpBlueprintValues; } @@ -63,16 +65,17 @@ public class DmpPropertiesPersist { @Override protected List specifications(DmpPropertiesPersist item) { return Arrays.asList( - this.refSpec() + this.mapSpec() .iff(() -> this.status == DmpStatus.Finalized && !this.isNull(item.getDmpBlueprintValues())) .on(DmpPropertiesPersist._dmpBlueprintValues) .over(item.getDmpBlueprintValues()) - .using(() -> this.validatorFactory.validator(DmpBlueprintValuePersist.DmpBlueprintValuePersistValidator.class)), - this.refSpec() + .mapKey((k) -> ((UUID)k).toString()) + .using((itm) -> this.validatorFactory.validator(DmpBlueprintValuePersist.DmpBlueprintValuePersistValidator.class)), + this.navSpec() .iff(() -> this.status == DmpStatus.Finalized && !this.isNull(item.getContacts())) .on(DmpPropertiesPersist._contacts) .over(item.getContacts()) - .using(() -> this.validatorFactory.validator(DmpContactPersist.DmpContactPersistValidator.class)) + .using((itm) -> this.validatorFactory.validator(DmpContactPersist.DmpContactPersistValidator.class)) ); } 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 089b2ce34..13f583790 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 @@ -569,9 +569,9 @@ public class DmpServiceImpl implements DmpService { data.getContacts().add(this.buildDmpContactEntity(contactPersist)); } } - if (!this.conventionService.isListNullOrEmpty(persist.getDmpBlueprintValues())){ + if (persist.getDmpBlueprintValues() == null && !persist.getDmpBlueprintValues().isEmpty()){ data.setDmpBlueprintValues(new ArrayList<>()); - for (DmpBlueprintValuePersist fieldValuePersist: persist.getDmpBlueprintValues()) { + for (DmpBlueprintValuePersist fieldValuePersist: persist.getDmpBlueprintValues().values()) { if (!this.conventionService.isNullOrEmpty(fieldValuePersist.getFieldValue())) data.getDmpBlueprintValues().add(this.buildDmpBlueprintValueEntity(fieldValuePersist)); } } @@ -604,8 +604,8 @@ public class DmpServiceImpl implements DmpService { private @NotNull List buildDmpReferencePersists(DmpPropertiesPersist persist){ List dmpReferencePersists = new ArrayList<>(); - if (!this.conventionService.isListNullOrEmpty(persist.getDmpBlueprintValues())){ - for (DmpBlueprintValuePersist fieldValuePersist: persist.getDmpBlueprintValues()) { + if (persist.getDmpBlueprintValues() == null && !persist.getDmpBlueprintValues().isEmpty()){ + for (DmpBlueprintValuePersist fieldValuePersist: persist.getDmpBlueprintValues().values()) { if (this.conventionService.isNullOrEmpty(fieldValuePersist.getFieldValue()) && !this.conventionService.isListNullOrEmpty( fieldValuePersist.getReferences())) { for (ReferencePersist referencePersist : fieldValuePersist.getReferences()) { DmpReferencePersist dmpReferencePersist = new DmpReferencePersist();