diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionTemplateTypeStatus.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionTemplateTypeStatus.java index 8967908b4..0084e3201 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionTemplateTypeStatus.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionTemplateTypeStatus.java @@ -1,5 +1,6 @@ package eu.eudat.commons.enums; +import com.fasterxml.jackson.annotation.JsonValue; import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.Map; @@ -15,6 +16,7 @@ public enum DescriptionTemplateTypeStatus implements DatabaseEnum { this.value = value; } + @JsonValue public Short getValue() { return value; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintExtraFieldDataType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintExtraFieldDataType.java new file mode 100644 index 000000000..1c4ed1f84 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintExtraFieldDataType.java @@ -0,0 +1,33 @@ +package eu.eudat.commons.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import eu.eudat.data.converters.enums.DatabaseEnum; + +import java.util.Map; + +public enum DmpBlueprintExtraFieldDataType implements DatabaseEnum { + + Text((short) 0), + RichTex((short) 1), + Date((short) 2), + Number((short) 3), + ; + + private final Short value; + + DmpBlueprintExtraFieldDataType(Short value) { + this.value = value; + } + + @JsonValue + public Short getValue() { + return value; + } + + private static final Map map = EnumUtils.getEnumValueMap(DmpBlueprintExtraFieldDataType.class); + + public static DmpBlueprintExtraFieldDataType of(Short i) { + return map.get(i); + } + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintExtraFieldType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintExtraFieldType.java deleted file mode 100644 index 45d040f5b..000000000 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintExtraFieldType.java +++ /dev/null @@ -1,31 +0,0 @@ -package eu.eudat.commons.enums; - -import eu.eudat.data.converters.enums.DatabaseEnum; - -import java.util.Map; - -public enum DmpBlueprintExtraFieldType implements DatabaseEnum { - - Text((short) 0), - RichTex((short) 1), - Date((short) 2), - Number((short) 3), - ; - - private final Short value; - - DmpBlueprintExtraFieldType(Short value) { - this.value = value; - } - - public Short getValue() { - return value; - } - - private static final Map map = EnumUtils.getEnumValueMap(DmpBlueprintExtraFieldType.class); - - public static DmpBlueprintExtraFieldType of(Short i) { - return map.get(i); - } - -} diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintFieldCategory.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintFieldCategory.java index 88bcf3529..f4c712944 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintFieldCategory.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintFieldCategory.java @@ -1,5 +1,6 @@ package eu.eudat.commons.enums; +import com.fasterxml.jackson.annotation.JsonValue; import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.Map; @@ -14,6 +15,7 @@ public enum DmpBlueprintFieldCategory implements DatabaseEnum { this.value = value; } + @JsonValue public Short getValue() { return value; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintStatus.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintStatus.java index 3f12347e1..91c2e52f5 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintStatus.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintStatus.java @@ -1,5 +1,6 @@ package eu.eudat.commons.enums; +import com.fasterxml.jackson.annotation.JsonValue; import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.Map; @@ -15,6 +16,7 @@ public enum DmpBlueprintStatus implements DatabaseEnum { this.value = value; } + @JsonValue public Short getValue() { return value; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintSystemFieldType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintSystemFieldType.java index 087178474..283ead523 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintSystemFieldType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpBlueprintSystemFieldType.java @@ -1,5 +1,6 @@ package eu.eudat.commons.enums; +import com.fasterxml.jackson.annotation.JsonValue; import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.Map; @@ -23,6 +24,7 @@ public enum DmpBlueprintSystemFieldType implements DatabaseEnum { this.value = value; } + @JsonValue public Short getValue() { return value; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpStatus.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpStatus.java index 2c4d4d4bb..fdc048d71 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpStatus.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpStatus.java @@ -1,5 +1,6 @@ package eu.eudat.commons.enums; +import com.fasterxml.jackson.annotation.JsonValue; import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.Map; @@ -15,6 +16,7 @@ public enum DmpStatus implements DatabaseEnum { } @Override + @JsonValue public Short getValue() { return null; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/EntityType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/EntityType.java index 79002fcd7..e5e2002b3 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/EntityType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/EntityType.java @@ -1,5 +1,6 @@ package eu.eudat.commons.enums; +import com.fasterxml.jackson.annotation.JsonValue; import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.Map; @@ -15,6 +16,7 @@ public enum EntityType implements DatabaseEnum { } @Override + @JsonValue public Short getValue() { return value; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ExternalReferencesType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ExternalReferencesType.java index 002c63117..8fbaafbab 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ExternalReferencesType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ExternalReferencesType.java @@ -1,5 +1,6 @@ package eu.eudat.commons.enums; +import com.fasterxml.jackson.annotation.JsonValue; import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.Map; @@ -25,6 +26,7 @@ public enum ExternalReferencesType implements DatabaseEnum { this.value = value; } + @JsonValue public Short getValue() { return value; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/IsActive.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/IsActive.java index 4bb2737af..0f0116b93 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/IsActive.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/IsActive.java @@ -1,5 +1,6 @@ package eu.eudat.commons.enums; +import com.fasterxml.jackson.annotation.JsonValue; import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.Map; @@ -15,6 +16,7 @@ public enum IsActive implements DatabaseEnum { this.value = value; } + @JsonValue public Short getValue() { return value; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ProviderType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ProviderType.java index cf34c5045..3172582a4 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ProviderType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ProviderType.java @@ -1,5 +1,6 @@ package eu.eudat.commons.enums; +import com.fasterxml.jackson.annotation.JsonValue; import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.HashMap; @@ -25,6 +26,7 @@ public enum ProviderType implements DatabaseEnum { this.value = value; } + @JsonValue public Integer getValue() { return this.value; } private static final Map map = EnumUtils.getEnumValueMap(ProviderType.class); diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/UserSettingsType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/UserSettingsType.java index 4e0edbd26..4b6f136e4 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/UserSettingsType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/UserSettingsType.java @@ -1,5 +1,6 @@ package eu.eudat.commons.enums; +import com.fasterxml.jackson.annotation.JsonValue; import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.Map; @@ -15,6 +16,7 @@ public enum UserSettingsType implements DatabaseEnum { this.value = value; } + @JsonValue public Short getValue() { return value; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/ExtraFieldEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/ExtraFieldEntity.java index d1df40ba6..2a578254d 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/ExtraFieldEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/ExtraFieldEntity.java @@ -1,19 +1,16 @@ package eu.eudat.commons.types.dmpblueprint; -import eu.eudat.commons.enums.DmpBlueprintExtraFieldType; -import org.w3c.dom.Document; +import eu.eudat.commons.enums.DmpBlueprintExtraFieldDataType; import org.w3c.dom.Element; -import java.util.UUID; - public class ExtraFieldEntity extends FieldEntity { - private DmpBlueprintExtraFieldType type; + private DmpBlueprintExtraFieldDataType type; - public DmpBlueprintExtraFieldType getType() { + public DmpBlueprintExtraFieldDataType getType() { return type; } - public void setType(DmpBlueprintExtraFieldType type) { + public void setType(DmpBlueprintExtraFieldDataType type) { this.type = type; } @@ -25,7 +22,7 @@ public class ExtraFieldEntity extends FieldEntity { @Override public ExtraFieldEntity fromXmlChild(Element item) { - this.type = DmpBlueprintExtraFieldType.of(Short.parseShort(item.getAttribute("type"))); + this.type = DmpBlueprintExtraFieldDataType.of(Short.parseShort(item.getAttribute("type"))); return this; } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/FieldEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/FieldEntity.java index f1a96e4f9..8cc0750cc 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/FieldEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/FieldEntity.java @@ -1,8 +1,6 @@ package eu.eudat.commons.types.dmpblueprint; -import eu.eudat.commons.enums.DmpBlueprintExtraFieldType; import eu.eudat.commons.enums.DmpBlueprintFieldCategory; -import eu.eudat.commons.enums.DmpBlueprintSystemFieldType; import eu.eudat.commons.types.xml.XmlSerializable; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/DmpBlueprintEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/DmpBlueprintEntity.java index a6b7d8111..cc62a0a2f 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/data/DmpBlueprintEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/data/DmpBlueprintEntity.java @@ -30,9 +30,10 @@ public class DmpBlueprintEntity implements DataEntity private UUID id; public static final String _id = "id"; - @Column(name = "\"label\"") + @Column(name = "\"label\"", length = DmpBlueprintEntity._labelLength, nullable = false) private String label; public static final String _label = "label"; + public static final int _labelLength = 250; @Type(eu.eudat.configurations.typedefinition.XMLType.class) @Column(name = "\"definition\"", columnDefinition = "xml", nullable = true) diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DatabaseEnum.java b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DatabaseEnum.java index aae8e87b1..0aa11ec96 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DatabaseEnum.java +++ b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DatabaseEnum.java @@ -1,5 +1,8 @@ package eu.eudat.data.converters.enums; +import com.fasterxml.jackson.annotation.JsonValue; + public interface DatabaseEnum { + @JsonValue T getValue(); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/DescriptionTemplateTypeCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/DescriptionTemplateTypeCensor.java index 39a1f409c..32aad1807 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/DescriptionTemplateTypeCensor.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/DescriptionTemplateTypeCensor.java @@ -28,7 +28,7 @@ public class DescriptionTemplateTypeCensor extends BaseCensor { public void censor(FieldSet fields, UUID userId) { logger.debug(new DataLogEntry("censoring fields", fields)); - if (fields.isEmpty()) + if (fields == null || fields.isEmpty()) return; this.authService.authorizeForce(Permission.BrowseDescriptionTemplateType); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/DmpBlueprintCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/DmpBlueprintCensor.java index ddac38048..538c8cd78 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/DmpBlueprintCensor.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/DmpBlueprintCensor.java @@ -35,7 +35,7 @@ public class DmpBlueprintCensor extends BaseCensor { public void censor(FieldSet fields, UUID userId) { logger.debug(new DataLogEntry("censoring fields", fields)); - if (fields.isEmpty()) + if (fields == null || fields.isEmpty()) return; this.authService.authorizeForce(Permission.BrowseDmpBlueprint); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/EntityDoiCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/EntityDoiCensor.java index 55cfed580..9edbb60f2 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/EntityDoiCensor.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/EntityDoiCensor.java @@ -28,7 +28,7 @@ public class EntityDoiCensor extends BaseCensor{ public void censor(FieldSet fields, UUID userId) { logger.debug(new DataLogEntry("censoring fields", fields)); - if (fields.isEmpty()) + if (fields == null || fields.isEmpty()) return; this.authService.authorizeForce(Permission.BrowseEntityDoi); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/DefinitionCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/DefinitionCensor.java index ae0df0d8c..5db844e62 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/DefinitionCensor.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/DefinitionCensor.java @@ -35,7 +35,7 @@ public class DefinitionCensor extends BaseCensor { public void censor(FieldSet fields, UUID userId) { logger.debug(new DataLogEntry("censoring fields", fields)); - if (fields.isEmpty()) + if (fields == null || fields.isEmpty()) return; this.authService.authorizeForce(Permission.BrowseDmpBlueprint); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/DescriptionTemplatesCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/DescriptionTemplatesCensor.java index 49c8c7bbf..9a8969f8e 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/DescriptionTemplatesCensor.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/DescriptionTemplatesCensor.java @@ -30,7 +30,7 @@ public class DescriptionTemplatesCensor extends BaseCensor { public void censor(FieldSet fields, UUID userId) { logger.debug(new DataLogEntry("censoring fields", fields)); - if (fields.isEmpty()) + if (fields == null || fields.isEmpty()) return; this.authService.authorizeForce(Permission.BrowseDmpBlueprint); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/FieldCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/FieldCensor.java index 305abb271..181f601fe 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/FieldCensor.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/FieldCensor.java @@ -30,7 +30,7 @@ public class FieldCensor extends BaseCensor { public void censor(FieldSet fields, UUID userId) { logger.debug(new DataLogEntry("censoring fields", fields)); - if (fields.isEmpty()) + if (fields == null || fields.isEmpty()) return; this.authService.authorizeForce(Permission.BrowseDmpBlueprint); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/SectionCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/SectionCensor.java index 1e1e85c3b..951020bf2 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/SectionCensor.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/dmpblueprintdefinition/SectionCensor.java @@ -35,7 +35,7 @@ public class SectionCensor extends BaseCensor { public void censor(FieldSet fields, UUID userId) { logger.debug(new DataLogEntry("censoring fields", fields)); - if (fields.isEmpty()) + if (fields == null || fields.isEmpty()) return; this.authService.authorizeForce(Permission.BrowseDmpBlueprint); diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/ExtraField.java b/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/ExtraField.java index ba5aca079..b17162849 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/ExtraField.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/ExtraField.java @@ -1,17 +1,17 @@ package eu.eudat.model.dmpblueprintdefinition; -import eu.eudat.commons.enums.DmpBlueprintExtraFieldType; +import eu.eudat.commons.enums.DmpBlueprintExtraFieldDataType; public class ExtraField extends Field { public final static String _type = "type"; - private DmpBlueprintExtraFieldType type; + private DmpBlueprintExtraFieldDataType type; - public DmpBlueprintExtraFieldType getType() { + public DmpBlueprintExtraFieldDataType getType() { return type; } - public void setType(DmpBlueprintExtraFieldType type) { + public void setType(DmpBlueprintExtraFieldDataType type) { this.type = type; } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/Section.java b/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/Section.java index c3de893f3..844f2912c 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/Section.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/Section.java @@ -1,12 +1,6 @@ package eu.eudat.model.dmpblueprintdefinition; -import eu.eudat.commons.enums.DmpBlueprintExtraFieldType; -import eu.eudat.commons.enums.DmpBlueprintFieldCategory; -import eu.eudat.commons.enums.DmpBlueprintSystemFieldType; -import eu.eudat.commons.types.dmpblueprint.DescriptionTemplateEntity; -import eu.eudat.commons.types.dmpblueprint.FieldEntity; - import java.util.List; import java.util.UUID; diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/DmpBlueprintPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/DmpBlueprintPersist.java new file mode 100644 index 000000000..4bbd57818 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/DmpBlueprintPersist.java @@ -0,0 +1,78 @@ +package eu.eudat.model.persist; + +import eu.eudat.commons.enums.DmpBlueprintStatus; +import eu.eudat.commons.validation.FieldNotNullIfOtherSet; +import eu.eudat.commons.validation.ValidEnum; +import eu.eudat.commons.validation.ValidId; +import eu.eudat.data.DmpBlueprintEntity; +import eu.eudat.model.dmpblueprintdefinition.Definition; +import eu.eudat.model.persist.dmpblueprintdefinition.DefinitionPersist; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; + +import java.util.UUID; + +@FieldNotNullIfOtherSet(message = "{validation.hashempty}") +public class DmpBlueprintPersist { + @ValidId(message = "{validation.invalidid}") + private UUID id; + + @NotNull(message = "{validation.empty}") + @NotEmpty(message = "{validation.empty}") + @Size(max = DmpBlueprintEntity._labelLength, message = "{validation.largerthanmax}") + private String label = null; + + @NotNull(message = "{validation.empty}") + @Valid + private DefinitionPersist definition = null; + + @ValidEnum(message = "{validation.empty}") + private DmpBlueprintStatus status; + + private String hash; + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public DefinitionPersist getDefinition() { + return definition; + } + + public void setDefinition(DefinitionPersist definition) { + this.definition = definition; + } + + public DmpBlueprintStatus getStatus() { + return status; + } + + public void setStatus(DmpBlueprintStatus status) { + this.status = status; + } + + public String getHash() { + return hash; + } + + public void setHash(String hash) { + this.hash = hash; + } +} + + + diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/DefinitionPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/DefinitionPersist.java new file mode 100644 index 000000000..7ef128fb3 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/DefinitionPersist.java @@ -0,0 +1,21 @@ +package eu.eudat.model.persist.dmpblueprintdefinition; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; + +import java.util.List; + +public class DefinitionPersist { + + @NotNull(message = "{validation.empty}") + @Valid + private List sections = null; + + public List getSections() { + return sections; + } + + public void setSections(List sections) { + this.sections = sections; + } +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/DescriptionTemplatePersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/DescriptionTemplatePersist.java new file mode 100644 index 000000000..781cb7fe3 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/DescriptionTemplatePersist.java @@ -0,0 +1,67 @@ +package eu.eudat.model.persist.dmpblueprintdefinition; + +import eu.eudat.commons.validation.ValidId; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; + +import java.util.UUID; + +public class DescriptionTemplatePersist { + @NotNull(message = "{validation.empty}") + @ValidId(message = "{validation.invalidid}") + private UUID id = null; + + @NotNull(message = "{validation.empty}") + @ValidId(message = "{validation.invalidid}") + private UUID descriptionTemplateId = null; + + @NotNull(message = "{validation.empty}") + @NotEmpty(message = "{validation.empty}") + private String label = null; + + @NotNull(message = "{validation.empty}") + private Integer minMultiplicity = null; + + @NotNull(message = "{validation.empty}") + private Integer maxMultiplicity = null; + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public UUID getDescriptionTemplateId() { + return descriptionTemplateId; + } + + public void setDescriptionTemplateId(UUID descriptionTemplateId) { + this.descriptionTemplateId = descriptionTemplateId; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public Integer getMinMultiplicity() { + return minMultiplicity; + } + + public void setMinMultiplicity(Integer minMultiplicity) { + this.minMultiplicity = minMultiplicity; + } + + public Integer getMaxMultiplicity() { + return maxMultiplicity; + } + + public void setMaxMultiplicity(Integer maxMultiplicity) { + this.maxMultiplicity = maxMultiplicity; + } +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/ExtraFieldPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/ExtraFieldPersist.java new file mode 100644 index 000000000..296cc4ed3 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/ExtraFieldPersist.java @@ -0,0 +1,19 @@ +package eu.eudat.model.persist.dmpblueprintdefinition; + +import eu.eudat.commons.enums.DmpBlueprintExtraFieldDataType; +import eu.eudat.commons.validation.ValidEnum; + + +public class ExtraFieldPersist extends FieldPersist { + + @ValidEnum(message = "{validation.empty}") + private DmpBlueprintExtraFieldDataType dataType; + + public DmpBlueprintExtraFieldDataType getDataType() { + return dataType; + } + + public void setDataType(DmpBlueprintExtraFieldDataType dataType) { + this.dataType = dataType; + } +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/FieldPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/FieldPersist.java new file mode 100644 index 000000000..95aaf8a31 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/FieldPersist.java @@ -0,0 +1,102 @@ +package eu.eudat.model.persist.dmpblueprintdefinition; + +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import eu.eudat.commons.enums.DmpBlueprintFieldCategory; +import eu.eudat.commons.validation.ValidEnum; +import eu.eudat.commons.validation.ValidId; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; + +import java.util.UUID; + + +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + include = JsonTypeInfo.As.PROPERTY, + property = "category") +@JsonSubTypes({ + @JsonSubTypes.Type(value = SystemFieldPersist.class, name = "System"), + @JsonSubTypes.Type(value = ExtraFieldPersist.class, name = "Extra") +}) +public abstract class FieldPersist { + @NotNull(message = "{validation.empty}") + @ValidId(message = "{validation.invalidid}") + private UUID id = null; + + @ValidEnum(message = "{validation.empty}") + private DmpBlueprintFieldCategory category; + + @NotNull(message = "{validation.empty}") + @NotEmpty(message = "{validation.empty}") + private String label = null; + + + @NotNull(message = "{validation.empty}") + @NotEmpty(message = "{validation.empty}") + private String placeholder = null; + + private String description; + + @NotNull(message = "{validation.empty}") + private Integer ordinal = null; + + @NotNull(message = "{validation.empty}") + private Boolean required = null; + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public DmpBlueprintFieldCategory getCategory() { + return category; + } + + public void setCategory(DmpBlueprintFieldCategory category) { + this.category = category; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getPlaceholder() { + return placeholder; + } + + public void setPlaceholder(String placeholder) { + this.placeholder = placeholder; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Integer getOrdinal() { + return ordinal; + } + + public void setOrdinal(Integer ordinal) { + this.ordinal = ordinal; + } + + public Boolean getRequired() { + return required; + } + + public void setRequired(Boolean required) { + this.required = required; + } +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/SectionPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/SectionPersist.java new file mode 100644 index 000000000..3ae066faa --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/SectionPersist.java @@ -0,0 +1,94 @@ +package eu.eudat.model.persist.dmpblueprintdefinition; + + +import eu.eudat.commons.validation.ValidId; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; + +import java.util.List; +import java.util.UUID; + +public class SectionPersist { + + @NotNull(message = "{validation.empty}") + @ValidId(message = "{validation.invalidid}") + private UUID id = null; + + private String description; + + @NotNull(message = "{validation.empty}") + @NotEmpty(message = "{validation.empty}") + private String label = null; + + @NotNull(message = "{validation.empty}") + private Integer ordinal = null; + + @NotNull(message = "{validation.empty}") + private Boolean hasTemplates = null; + + @Valid + @NotNull(message = "{validation.empty}") + private List fields = null; + + @Valid + private List descriptionTemplates = null; + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Integer getOrdinal() { + return ordinal; + } + + public void setOrdinal(Integer ordinal) { + this.ordinal = ordinal; + } + + public Boolean getHasTemplates() { + return hasTemplates; + } + + public void setHasTemplates(Boolean hasTemplates) { + this.hasTemplates = hasTemplates; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getDescriptionTemplates() { + return descriptionTemplates; + } + + public void setDescriptionTemplates(List descriptionTemplates) { + this.descriptionTemplates = descriptionTemplates; + } +} + + diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/SystemFieldPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/SystemFieldPersist.java new file mode 100644 index 000000000..e160ba582 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/dmpblueprintdefinition/SystemFieldPersist.java @@ -0,0 +1,17 @@ +package eu.eudat.model.persist.dmpblueprintdefinition; + +import eu.eudat.commons.enums.DmpBlueprintSystemFieldType; +import eu.eudat.commons.validation.ValidEnum; + +public class SystemFieldPersist extends FieldPersist { + @ValidEnum(message = "{validation.empty}") + private DmpBlueprintSystemFieldType systemFieldType; + + public DmpBlueprintSystemFieldType getSystemFieldType() { + return systemFieldType; + } + + public void setSystemFieldType(DmpBlueprintSystemFieldType systemFieldType) { + this.systemFieldType = systemFieldType; + } +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/dmpblueprint/DmpBlueprintService.java b/dmp-backend/core/src/main/java/eu/eudat/service/dmpblueprint/DmpBlueprintService.java index faa160a3b..9c6178965 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/dmpblueprint/DmpBlueprintService.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/dmpblueprint/DmpBlueprintService.java @@ -1,6 +1,7 @@ package eu.eudat.service.dmpblueprint; import eu.eudat.model.DmpBlueprint; +import eu.eudat.model.persist.DmpBlueprintPersist; import gr.cite.tools.exception.MyApplicationException; import gr.cite.tools.exception.MyForbiddenException; import gr.cite.tools.exception.MyNotFoundException; @@ -12,7 +13,7 @@ import java.util.UUID; public interface DmpBlueprintService { -// DmpBlueprint persist(DmpBlueprintPersist model, FieldSet fields) throws MyForbiddenException, MyValidationException, MyApplicationException, MyNotFoundException, InvalidApplicationException; + DmpBlueprint persist(DmpBlueprintPersist model, FieldSet fields) throws MyForbiddenException, MyValidationException, MyApplicationException, MyNotFoundException, InvalidApplicationException; void deleteAndSave(UUID id) throws MyForbiddenException, InvalidApplicationException; diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/dmpblueprint/DmpBlueprintServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/dmpblueprint/DmpBlueprintServiceImpl.java index 0b1794cd7..3646a9b12 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/dmpblueprint/DmpBlueprintServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/dmpblueprint/DmpBlueprintServiceImpl.java @@ -2,19 +2,20 @@ package eu.eudat.service.dmpblueprint; import eu.eudat.authorization.AuthorizationFlags; import eu.eudat.authorization.Permission; -import eu.eudat.commons.JsonHandlingService; +import eu.eudat.commons.enums.DmpBlueprintFieldCategory; import eu.eudat.commons.enums.IsActive; +import eu.eudat.commons.types.dmpblueprint.*; +import eu.eudat.commons.types.xml.XmlBuilder; import eu.eudat.convention.ConventionService; import eu.eudat.data.DmpBlueprintEntity; -import eu.eudat.errorcode.ErrorThesaurusProperties; -import eu.eudat.event.EventBroker; import eu.eudat.model.DmpBlueprint; import eu.eudat.model.builder.DmpBlueprintBuilder; import eu.eudat.model.deleter.DmpBlueprintDeleter; +import eu.eudat.model.persist.DmpBlueprintPersist; +import eu.eudat.model.persist.dmpblueprintdefinition.*; import gr.cite.commons.web.authz.service.AuthorizationService; import gr.cite.tools.data.builder.BuilderFactory; import gr.cite.tools.data.deleter.DeleterFactory; -import gr.cite.tools.data.query.QueryFactory; import gr.cite.tools.exception.MyApplicationException; import gr.cite.tools.exception.MyForbiddenException; import gr.cite.tools.exception.MyNotFoundException; @@ -24,14 +25,17 @@ import gr.cite.tools.fieldset.FieldSet; import gr.cite.tools.logging.LoggerService; import gr.cite.tools.logging.MapLogEntry; import jakarta.persistence.EntityManager; +import org.jetbrains.annotations.NotNull; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.stereotype.Service; +import org.w3c.dom.Document; import javax.management.InvalidApplicationException; import java.time.Instant; +import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -50,15 +54,9 @@ public class DmpBlueprintServiceImpl implements DmpBlueprintService { private final ConventionService conventionService; - private final ErrorThesaurusProperties errors; private final MessageSource messageSource; - private final EventBroker eventBroker; - - private final QueryFactory queryFactory; - - private final JsonHandlingService jsonHandlingService; @Autowired public DmpBlueprintServiceImpl( @@ -67,58 +65,128 @@ public class DmpBlueprintServiceImpl implements DmpBlueprintService { DeleterFactory deleterFactory, BuilderFactory builderFactory, ConventionService conventionService, - ErrorThesaurusProperties errors, - MessageSource messageSource, - EventBroker eventBroker, - QueryFactory queryFactory, - JsonHandlingService jsonHandlingService) { + MessageSource messageSource) { this.entityManager = entityManager; this.authorizationService = authorizationService; this.deleterFactory = deleterFactory; this.builderFactory = builderFactory; this.conventionService = conventionService; - this.errors = errors; this.messageSource = messageSource; - this.eventBroker = eventBroker; - this.queryFactory = queryFactory; - this.jsonHandlingService = jsonHandlingService; } -// public DmpBlueprint persist(DmpBlueprintPersist model, FieldSet fields) throws MyForbiddenException, MyValidationException, MyApplicationException, MyNotFoundException, InvalidApplicationException { -// logger.debug(new MapLogEntry("persisting data dmpBlueprint").And("model", model).And("fields", fields)); -// -// this.authorizationService.authorizeForce(Permission.EditDmpBlueprint); -// -// Boolean isUpdate = this.conventionService.isValidGuid(model.getId()); -// -// DmpBlueprintEntity data; -// if (isUpdate) { -// data = this.entityManager.find(DmpBlueprintEntity.class, model.getId()); -// if (data == null) -// throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{model.getId(), DmpBlueprint.class.getSimpleName()}, LocaleContextHolder.getLocale())); -// } else { -// data = new DmpBlueprintEntity(); -// data.setId(UUID.randomUUID()); -// data.setIsActive(IsActive.Active); -// data.setCreatedAt(Instant.now()); -// } -// -// data.setName(model.getName()); -// data.setStatus(model.getStatus()); -// data.setUpdatedAt(Instant.now()); -// if (isUpdate) -// this.entityManager.merge(data); -// else -// this.entityManager.persist(data); -// -// this.entityManager.flush(); -// -// this.eventBroker.emit(new DmpBlueprintTouchedEvent(data.getId())); -// return this.builderFactory.builder(DmpBlueprintBuilder.class).authorize(AuthorizationFlags.OwnerOrPermission).build(BaseFieldSet.build(fields, DmpBlueprint._id), data); -// } + public DmpBlueprint persist(DmpBlueprintPersist model, FieldSet fields) throws MyForbiddenException, MyValidationException, MyApplicationException, MyNotFoundException, InvalidApplicationException { + logger.debug(new MapLogEntry("persisting data").And("model", model).And("fields", fields)); + + this.authorizationService.authorizeForce(Permission.EditDmpBlueprint); + + Boolean isUpdate = this.conventionService.isValidGuid(model.getId()); + + DmpBlueprintEntity data; + if (isUpdate) { + data = this.entityManager.find(DmpBlueprintEntity.class, model.getId()); + if (data == null) + throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{model.getId(), DmpBlueprint.class.getSimpleName()}, LocaleContextHolder.getLocale())); + } else { + data = new DmpBlueprintEntity(); + data.setId(UUID.randomUUID()); + data.setIsActive(IsActive.Active); + data.setCreatedAt(Instant.now()); + } + + data.setLabel(model.getLabel()); + data.setStatus(model.getStatus()); + data.setUpdatedAt(Instant.now()); + + Document document = XmlBuilder.getDocument(); + if (document == null) throw new InvalidApplicationException("Can not create document"); + document.appendChild(this.buildDefinitionEntity(model.getDefinition()).toXml(document)); + data.setDefinition(XmlBuilder.generateXml(document)); + + if (isUpdate) this.entityManager.merge(data); + else this.entityManager.persist(data); + + this.entityManager.flush(); + + return this.builderFactory.builder(DmpBlueprintBuilder.class).authorize(AuthorizationFlags.OwnerOrPermission).build(BaseFieldSet.build(fields, DmpBlueprint._id), data); + } + + private @NotNull DefinitionEntity buildDefinitionEntity(DefinitionPersist persist){ + DefinitionEntity data = new DefinitionEntity(); + if (persist == null) return data; + if (!this.conventionService.isListNullOrEmpty(persist.getSections())){ + data.setSections(new ArrayList<>()); + for (SectionPersist sectionPersist: persist.getSections()) { + data.getSections().add(this.buildSectionEntity(sectionPersist)); + } + } + + return data; + } + + private @NotNull SectionEntity buildSectionEntity(SectionPersist persist){ + SectionEntity data = new SectionEntity(); + if (persist == null) return data; + + data.setId(persist.getId()); + data.setDescription(persist.getDescription()); + data.setLabel(persist.getLabel()); + data.setOrdinal(persist.getOrdinal()); + data.setHasTemplates(persist.getHasTemplates()); + if (!this.conventionService.isListNullOrEmpty(persist.getFields())){ + data.setFields(new ArrayList<>()); + for (FieldPersist fieldPersist: persist.getFields()) { + data.getFields().add(this.buildExtraFieldEntity(fieldPersist)); + } + } + + if (!this.conventionService.isListNullOrEmpty(persist.getDescriptionTemplates())){ + data.setDescriptionTemplates(new ArrayList<>()); + for (DescriptionTemplatePersist descriptionTemplatePersist: persist.getDescriptionTemplates()) { + data.getDescriptionTemplates().add(this.buildDescriptionTemplateEntity(descriptionTemplatePersist)); + } + } + + return data; + } + + private @NotNull DescriptionTemplateEntity buildDescriptionTemplateEntity(DescriptionTemplatePersist persist){ + DescriptionTemplateEntity data = new DescriptionTemplateEntity(); + if (persist == null) return data; + + data.setId(persist.getId()); + data.setDescriptionTemplateId(persist.getDescriptionTemplateId()); + data.setLabel(persist.getLabel()); + data.setMaxMultiplicity(persist.getMaxMultiplicity()); + data.setMinMultiplicity(persist.getMinMultiplicity()); + + return data; + } + + private @NotNull FieldEntity buildExtraFieldEntity(FieldPersist persist){ + if (persist == null) return new ExtraFieldEntity(); + FieldEntity data; + if (DmpBlueprintFieldCategory.Extra.equals(persist.getCategory())){ + ExtraFieldEntity dataTyped = new ExtraFieldEntity(); + dataTyped.setType(((ExtraFieldPersist)persist).getDataType()); + data = dataTyped; + } else { + SystemFieldEntity dataTyped = new SystemFieldEntity(); + dataTyped.setType(((SystemFieldPersist)persist).getSystemFieldType()); + data = dataTyped; + } + data.setId(persist.getId()); + data.setCategory(persist.getCategory()); + data.setLabel(persist.getLabel()); + data.setPlaceholder(persist.getPlaceholder()); + data.setDescription(persist.getDescription()); + data.setOrdinal(persist.getOrdinal()); + data.setRequired(persist.getRequired()); + + return data; + } public void deleteAndSave(UUID id) throws MyForbiddenException, InvalidApplicationException { - logger.debug("deleting dataset: {}", id); + logger.debug("deleting : {}", id); this.authorizationService.authorizeForce(Permission.DeleteDmpBlueprint); diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DmpBlueprintController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DmpBlueprintController.java index d89da4267..68772288c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DmpBlueprintController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DmpBlueprintController.java @@ -6,6 +6,7 @@ import eu.eudat.data.DmpBlueprintEntity; import eu.eudat.model.DmpBlueprint; import eu.eudat.model.builder.DmpBlueprintBuilder; import eu.eudat.model.censorship.DmpBlueprintCensor; +import eu.eudat.model.persist.DmpBlueprintPersist; import eu.eudat.model.result.QueryResult; import eu.eudat.query.DmpBlueprintQuery; import eu.eudat.query.lookup.DmpBlueprintLookup; @@ -20,6 +21,7 @@ import gr.cite.tools.exception.MyNotFoundException; import gr.cite.tools.fieldset.FieldSet; import gr.cite.tools.logging.LoggerService; import gr.cite.tools.logging.MapLogEntry; +import gr.cite.tools.validation.MyValidate; import jakarta.transaction.Transactional; import org.slf4j.LoggerFactory; import org.springframework.context.MessageSource; @@ -63,7 +65,7 @@ public class DmpBlueprintController { } @PostMapping("query") - public QueryResult Query(@RequestBody DmpBlueprintLookup lookup) throws MyApplicationException, MyForbiddenException { + public QueryResult query(@RequestBody DmpBlueprintLookup lookup) throws MyApplicationException, MyForbiddenException { logger.debug("querying {}", DmpBlueprint.class.getSimpleName()); this.censorFactory.censor(DmpBlueprintCensor.class).censor(lookup.getProject(), null); @@ -81,7 +83,7 @@ public class DmpBlueprintController { } @GetMapping("{id}") - public DmpBlueprint Get(@PathVariable("id") UUID id, FieldSet fieldSet, Locale locale) throws MyApplicationException, MyForbiddenException, MyNotFoundException { + public DmpBlueprint get(@PathVariable("id") UUID id, FieldSet fieldSet) throws MyApplicationException, MyForbiddenException, MyNotFoundException { logger.debug(new MapLogEntry("retrieving" + DmpBlueprint.class.getSimpleName()).And("id", id).And("fields", fieldSet)); this.censorFactory.censor(DmpBlueprintCensor.class).censor(fieldSet, null); @@ -100,23 +102,25 @@ public class DmpBlueprintController { return model; } -// @PostMapping("persist") -// @Transactional -// public DmpBlueprint Persist(@MyValidate @RequestBody DmpBlueprintPersist model, FieldSet fieldSet) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException { -// logger.debug(new MapLogEntry("persisting" + DmpBlueprint.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet)); -// DmpBlueprint persisted = this.dmpBlueprintService.persist(model, fieldSet); -// -// this.auditService.track(AuditableAction.DmpBlueprint_Persist, Map.ofEntries( -// new AbstractMap.SimpleEntry("model", model), -// new AbstractMap.SimpleEntry("fields", fieldSet) -// )); -// //this.auditService.trackIdentity(AuditableAction.IdentityTracking_Action); -// return persisted; -// } + @PostMapping("persist") + @Transactional + public DmpBlueprint persist(@MyValidate @RequestBody DmpBlueprintPersist model, FieldSet fieldSet) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException { + logger.debug(new MapLogEntry("persisting" + DmpBlueprint.class.getSimpleName()).And("model", model).And("fieldSet", fieldSet)); + this.censorFactory.censor(DmpBlueprintCensor.class).censor(fieldSet, null); + + DmpBlueprint persisted = this.dmpBlueprintService.persist(model, fieldSet); + + this.auditService.track(AuditableAction.DmpBlueprint_Persist, Map.ofEntries( + new AbstractMap.SimpleEntry("model", model), + new AbstractMap.SimpleEntry("fields", fieldSet) + )); + //this.auditService.trackIdentity(AuditableAction.IdentityTracking_Action); + return persisted; + } @DeleteMapping("{id}") @Transactional - public void Delete(@PathVariable("id") UUID id) throws MyForbiddenException, InvalidApplicationException { + public void delete(@PathVariable("id") UUID id) throws MyForbiddenException, InvalidApplicationException { logger.debug(new MapLogEntry("retrieving" + DmpBlueprint.class.getSimpleName()).And("id", id)); this.dmpBlueprintService.deleteAndSave(id); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/dmpXml/dmpBlueprintModel/ExtraField.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/dmpXml/dmpBlueprintModel/ExtraField.java index 2532f52af..e638a457f 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/dmpXml/dmpBlueprintModel/ExtraField.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/dmpXml/dmpBlueprintModel/ExtraField.java @@ -1,6 +1,6 @@ package eu.eudat.logic.utilities.documents.xml.dmpXml.dmpBlueprintModel; -import eu.eudat.commons.enums.DmpBlueprintExtraFieldType; +import eu.eudat.commons.enums.DmpBlueprintExtraFieldDataType; import eu.eudat.commons.enums.DmpBlueprintFieldCategory; import eu.eudat.commons.types.dmpblueprint.ExtraFieldEntity; @@ -87,7 +87,7 @@ public class ExtraField { ExtraFieldEntity systemField = new ExtraFieldEntity(); systemField.setId(UUID.fromString(this.id)); systemField.setCategory(DmpBlueprintFieldCategory.Extra); - systemField.setType(DmpBlueprintExtraFieldType.of(this.type)); + systemField.setType(DmpBlueprintExtraFieldDataType.of(this.type)); systemField.setLabel(this.label); systemField.setPlaceholder(this.placeholder); systemField.setDescription(this.description); diff --git a/dmp-backend/web/src/main/resources/messages.properties b/dmp-backend/web/src/main/resources/messages.properties index c50261916..7547f0630 100644 --- a/dmp-backend/web/src/main/resources/messages.properties +++ b/dmp-backend/web/src/main/resources/messages.properties @@ -8,4 +8,12 @@ project.startDate.overlapping=Period Start cannot overlap Period dataset.public=Dataset Has Been Made Public datamanagementplannewversion.version.notacceptable=There is already a newer version than the one you submitted datamanagementplannewversion.version.notnext=The version you submitted is not the Subsequent value -project.external.edit = Editing External Projects Is Not Allowed \ No newline at end of file +project.external.edit = Editing External Projects Is Not Allowed + +validation.empty=Value cannot be empty +validation.hashempty=Hash must be set +validation.lowerthanmin=Value must be larger than {value} +validation.largerthanmax=Value must be less than {value} +validation.invalidid=Not valid id +General_ItemNotFound=Item {0} of type {1} not found +Validation_Required={0} is required \ No newline at end of file diff --git a/dmp-backend/web/src/main/resources/messages_el.properties b/dmp-backend/web/src/main/resources/messages_el.properties index 4651a8316..096430c06 100644 --- a/dmp-backend/web/src/main/resources/messages_el.properties +++ b/dmp-backend/web/src/main/resources/messages_el.properties @@ -6,4 +6,11 @@ grantTableRequest.length.negative=Το μέγεθος του table δεν μπο datasetprofile.label.null=Το ονομα του ορισμου ενος Dataset δεν μπορει να ειναι κενο project.startDate.overlapping=Η Αρχικη Περιοδος δεν μπορει να ειναι Μεγαλυτερη της τελικης dataset.public=Το Dataset δημοσιοποιηθηκε σε ολους -project.external.edit = Δεν επιτρέπεται η επεξεργασία εξωτερικών Projects \ No newline at end of file +project.external.edit = Δεν επιτρέπεται η επεξεργασία εξωτερικών Projects + +validation.empty=el-Value cannot be empty +validation.hashempty=el-Hash must be set +validation.lowerthanmin=el-Value must be larger than {value} +validation.largerthanmax=el-Value must be less than {value} +validation.invalidid=el-Not valid id +General_ItemNotFound=el-Item {0} of type {1} not found \ No newline at end of file diff --git a/dmp-frontend/src/app/core/common/enum/dmp-blueprint-status.ts b/dmp-frontend/src/app/core/common/enum/dmp-blueprint-status.ts index ee173ee82..d3ad87694 100644 --- a/dmp-frontend/src/app/core/common/enum/dmp-blueprint-status.ts +++ b/dmp-frontend/src/app/core/common/enum/dmp-blueprint-status.ts @@ -1,4 +1,4 @@ export enum DmpBlueprintStatus { Draft = 'Draft', Finalized = 'Finalized' -} \ No newline at end of file +}