From ff2a13d163400d63ee581796a80e46058a02814b Mon Sep 17 00:00:00 2001 From: Nicolas Rod <Nicolas.Rod@unige.ch> Date: Mon, 11 Sep 2023 14:58:26 +0200 Subject: [PATCH] feat(RepresentationInfo): [DLCM-2611] add field to store the eventual DUA file mimeType --- .../ch/dlcm/model/oais/RepresentationInfo.java | 16 ++++++++++++---- ...bmissionInfoPackageRemoteResourceService.java | 7 +++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/DLCM-Model/src/main/java/ch/dlcm/model/oais/RepresentationInfo.java b/DLCM-Model/src/main/java/ch/dlcm/model/oais/RepresentationInfo.java index 622234df02..c431622cbe 100644 --- a/DLCM-Model/src/main/java/ch/dlcm/model/oais/RepresentationInfo.java +++ b/DLCM-Model/src/main/java/ch/dlcm/model/oais/RepresentationInfo.java @@ -29,14 +29,12 @@ import static ch.unige.solidify.SolidifyConstants.DB_ID_LENGTH; import static ch.unige.solidify.SolidifyConstants.DB_LONG_STRING_LENGTH; import static ch.unige.solidify.SolidifyConstants.RES_ID_FIELD; -import java.time.LocalDate; import java.time.OffsetDateTime; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; - import javax.persistence.Column; import javax.persistence.Embeddable; import javax.persistence.Embedded; @@ -46,7 +44,6 @@ import javax.validation.Valid; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; -import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema.AccessMode; @@ -80,6 +77,9 @@ public class RepresentationInfo implements EmbeddableEntity { @Enumerated(EnumType.STRING) private DataUsePolicy dataUsePolicy; + @Schema(description = "The data use policy file mimetype if it exists.") + private String duaFileMimeType; + @Schema(description = "The compliance level of the package.") private ComplianceLevel complianceLevel; @@ -143,6 +143,7 @@ public class RepresentationInfo implements EmbeddableEntity { this.statusMessage = info.statusMessage; this.containsUpdatedMetadata = info.containsUpdatedMetadata; this.dataUsePolicy = info.dataUsePolicy; + this.duaFileMimeType = info.duaFileMimeType; this.contentStructurePublic = info.contentStructurePublic; } @@ -235,6 +236,10 @@ public class RepresentationInfo implements EmbeddableEntity { return this.dataUsePolicy; } + public String getDuaFileMimeType() { + return this.duaFileMimeType; + } + public Boolean getContentStructurePublic() { return Objects.requireNonNullElse(this.contentStructurePublic, false); } @@ -306,11 +311,14 @@ public class RepresentationInfo implements EmbeddableEntity { this.dataUsePolicy = dataUsePolicy; } + public void setDuaFileMimeType(String duaFileMimeType) { + this.duaFileMimeType = duaFileMimeType; + } + public void setContentStructurePublic(Boolean structureContentPublic) { this.contentStructurePublic = structureContentPublic; } - /*******************************/ public void setName(String name) { diff --git a/DLCM-ResourceServerCommon/src/main/java/ch/dlcm/service/rest/abstractservice/SubmissionInfoPackageRemoteResourceService.java b/DLCM-ResourceServerCommon/src/main/java/ch/dlcm/service/rest/abstractservice/SubmissionInfoPackageRemoteResourceService.java index 6a6e5227a9..9b82f31dc7 100644 --- a/DLCM-ResourceServerCommon/src/main/java/ch/dlcm/service/rest/abstractservice/SubmissionInfoPackageRemoteResourceService.java +++ b/DLCM-ResourceServerCommon/src/main/java/ch/dlcm/service/rest/abstractservice/SubmissionInfoPackageRemoteResourceService.java @@ -27,6 +27,7 @@ import java.net.URI; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,6 +55,7 @@ import ch.dlcm.model.oais.RepresentationInfo; import ch.dlcm.model.oais.SipDataFile; import ch.dlcm.model.oais.SubmissionInfoPackage; import ch.dlcm.model.preingest.Deposit; +import ch.dlcm.model.preingest.DepositDataFile; import ch.dlcm.rest.DLCMActionName; import ch.dlcm.rest.ResourceName; @@ -257,6 +259,11 @@ public abstract class SubmissionInfoPackageRemoteResourceService extends RemoteR info.setComplianceLevel(deposit.getComplianceLevel()); info.setContainsUpdatedMetadata(deposit.getContainsUpdatedMetadata()); info.setDataUsePolicy(deposit.getDataUsePolicy()); + Optional<DepositDataFile> duaFileOpt = deposit.getDataFiles().stream().filter(f -> f.getDataType() == DataCategory.ArchiveDataUseAgreement) + .findFirst(); + if (duaFileOpt.isPresent()) { + info.setDuaFileMimeType(duaFileOpt.get().getContentType()); + } info.setContentStructurePublic(deposit.getContentStructurePublic()); return info; } -- GitLab