From 8eb98758feef8d0a585e43d20e9cdb30278ab0ba Mon Sep 17 00:00:00 2001 From: William Welling Date: Fri, 19 Jan 2024 12:50:26 -0600 Subject: [PATCH] Add license file rest objects to data license --- .../app/rest/model/step/DataLicense.java | 27 +++++++++--- .../rest/submit/step/ProxyLicenseStep.java | 44 +++++++++++++++---- 2 files changed, 57 insertions(+), 14 deletions(-) diff --git a/dspace/modules/server/src/main/java/org/dspace/app/rest/model/step/DataLicense.java b/dspace/modules/server/src/main/java/org/dspace/app/rest/model/step/DataLicense.java index afbf6d5de59..84766d35d4b 100644 --- a/dspace/modules/server/src/main/java/org/dspace/app/rest/model/step/DataLicense.java +++ b/dspace/modules/server/src/main/java/org/dspace/app/rest/model/step/DataLicense.java @@ -7,8 +7,12 @@ */ package org.dspace.app.rest.model.step; +import java.util.ArrayList; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty.Access; +import com.fasterxml.jackson.annotation.JsonUnwrapped; /** * TAMU Customization - Customized DTO to expose the section license during in progress submission. @@ -23,9 +27,14 @@ public class DataLicense implements SectionData { @JsonProperty(access = Access.READ_ONLY) private String acceptanceDate; + private boolean granted = false; + + // TAMU Cusomtization - selected license private String selected; - private boolean granted = false; + // TAMU Cusomtization - proxy license + @JsonUnwrapped + private List files; public String getUrl() { return url; @@ -43,6 +52,14 @@ public void setAcceptanceDate(String acceptanceDate) { this.acceptanceDate = acceptanceDate; } + public boolean isGranted() { + return granted; + } + + public void setGranted(boolean granted) { + this.granted = granted; + } + public String getSelected() { return selected; } @@ -51,12 +68,12 @@ public void setSelected(String selected) { this.selected = selected; } - public boolean isGranted() { - return granted; + public List getFiles() { + return files; } - public void setGranted(boolean granted) { - this.granted = granted; + public void setFiles(List files) { + this.files = files; } } diff --git a/dspace/modules/server/src/main/java/org/dspace/app/rest/submit/step/ProxyLicenseStep.java b/dspace/modules/server/src/main/java/org/dspace/app/rest/submit/step/ProxyLicenseStep.java index c5c9cae9c40..0c41bc37b7b 100644 --- a/dspace/modules/server/src/main/java/org/dspace/app/rest/submit/step/ProxyLicenseStep.java +++ b/dspace/modules/server/src/main/java/org/dspace/app/rest/submit/step/ProxyLicenseStep.java @@ -2,6 +2,7 @@ import java.io.BufferedInputStream; import java.io.InputStream; +import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; @@ -12,6 +13,7 @@ import org.dspace.app.rest.model.ErrorRest; import org.dspace.app.rest.model.patch.Operation; import org.dspace.app.rest.model.step.DataLicense; +import org.dspace.app.rest.model.step.UploadBitstreamRest; import org.dspace.app.rest.repository.WorkspaceItemRestRepository; import org.dspace.app.rest.submit.SubmissionService; import org.dspace.app.rest.submit.UploadableStep; @@ -34,6 +36,8 @@ public class ProxyLicenseStep extends LicenseStep implements UploadableStep { private static final String LICENSE_STEP_SELECTED_OPERATION_ENTRY = "selected"; + private static final String PROXY_LICENSE_NAME = "PERMISSION"; + private static final String DCTERMS_RIGHTSDATE = "dcterms.accessRights"; private static final String DCTERMS_ALTERNATIVE = "dcterms.alternative"; @@ -49,14 +53,28 @@ public DataLicense getData(SubmissionService submissionService, InProgressSubmis DataLicense result = new DataLicense(); - Bitstream bitstream = bitstreamService - .getBitstreamByName(obj.getItem(), Constants.LICENSE_BUNDLE_NAME, Constants.LICENSE_BITSTREAM_NAME); + List bundles = itemService.getBundles(obj.getItem(), Constants.LICENSE_BUNDLE_NAME); + + Bitstream licenseBitstream = null; + Bitstream proxyBitstream = null; + + for (Bundle bundle : bundles) { + for (Bitstream bitstream : bundle.getBitstreams()) { + if (bitstream.getName().equals(Constants.LICENSE_BITSTREAM_NAME)) { + licenseBitstream = bitstream; + } else if (bitstream.getName().startsWith(PROXY_LICENSE_NAME)) { + proxyBitstream = bitstream; + } + } + } + + List files = new ArrayList<>(); - if (bitstream != null) { - String selected = bitstreamService.getMetadata(bitstream, DCTERMS_ALTERNATIVE); + if (licenseBitstream != null) { + String selected = bitstreamService.getMetadata(licenseBitstream, DCTERMS_ALTERNATIVE); result.setSelected(selected); - String acceptanceDate = bitstreamService.getMetadata(bitstream, DCTERMS_RIGHTSDATE); + String acceptanceDate = bitstreamService.getMetadata(licenseBitstream, DCTERMS_RIGHTSDATE); if (StringUtils.isNotBlank(acceptanceDate)) { result.setAcceptanceDate(acceptanceDate); @@ -67,9 +85,17 @@ public DataLicense getData(SubmissionService submissionService, InProgressSubmis result.setUrl( configurationService.getProperty("dspace.server.url") + "/api/" + BitstreamRest.CATEGORY + "/" + English - .plural(BitstreamRest.NAME) + "/" + bitstream.getID() + "/content"); + .plural(BitstreamRest.NAME) + "/" + licenseBitstream.getID() + "/content"); + + files.add(submissionService.buildUploadBitstream(configurationService, licenseBitstream)); } + if (proxyBitstream != null) { + files.add(submissionService.buildUploadBitstream(configurationService, proxyBitstream)); + } + + result.setFiles(files); + System.out.println("\nProxyLicenseStep.getData\n"); System.out.println("\tselected: " + result.getSelected()); System.out.println("\tacceptance date: " + result.getAcceptanceDate()); @@ -111,7 +137,7 @@ public ErrorRest upload(Context context, SubmissionService submissionService, Su if (licenseBundles.size() > 0) { licenseBundle = licenseBundles.get(0); for (Bitstream bitstream: licenseBundle.getBitstreams()) { - if (bitstream.getName().startsWith("PERMISSION")) { + if (bitstream.getName().startsWith(PROXY_LICENSE_NAME)) { System.out.println("\n\nremove bitstream: " + bitstream.getName() + "\n\n"); bundleService.removeBitstream(context, licenseBundle, bitstream); break; @@ -128,8 +154,8 @@ public ErrorRest upload(Context context, SubmissionService submissionService, Su System.out.println("\t\tfilename: " + filename); String[] parts = filename.split("\\."); String permissionLicenseName = parts.length == 1 - ? "PERMISSION.license" - : String.join(".", "PERMISSION", parts[parts.length - 1]); + ? String.join(".", PROXY_LICENSE_NAME, "license") + : String.join(".", PROXY_LICENSE_NAME, parts[parts.length - 1]); System.out.println("\t\tset proxy bitstream name: " + permissionLicenseName); proxyBitstream.setName(context, permissionLicenseName);