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 622234df02d5d5d8f8a360ad32d7797542fa605a..c431622cbed4729c27e9dcd6494e85b6c09f6e1a 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 6a6e5227a967df7339dcc803431872005d945852..9b82f31dc7c693d5119eeea6486c061afb8bdeeb 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; }