DS-3743 implement upload and license step section

This commit is contained in:
Luigi Andrea Pascarelli
2017-11-08 17:24:45 +01:00
parent 23c3f3ed58
commit 83da4d9fe7
8 changed files with 149 additions and 20 deletions

View File

@@ -7,12 +7,8 @@
*/
package org.dspace.app.rest.model;
import java.util.List;
import org.dspace.app.rest.RestResourceController;
import com.fasterxml.jackson.annotation.JsonIgnore;
/**
* The MetadataSchema REST Resource
*

View File

@@ -7,7 +7,32 @@
*/
package org.dspace.app.rest.model.step;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonProperty.Access;
public class DataLicense implements SectionData {
@JsonProperty(access = Access.READ_ONLY)
private String url;
private String acceptanceDate;
public String getAcceptanceDate() {
return acceptanceDate;
}
public void setAcceptanceDate(String acceptanceDate) {
this.acceptanceDate = acceptanceDate;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}

View File

@@ -7,6 +7,72 @@
*/
package org.dspace.app.rest.model.step;
import java.util.ArrayList;
import java.util.List;
import org.dspace.app.rest.model.CheckSumRest;
import org.dspace.app.rest.model.MetadataEntryRest;
import org.dspace.app.rest.model.step.DataUpload.UploadBitstreamRest;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
public class DataUpload implements SectionData {
@JsonUnwrapped
private List<UploadBitstreamRest> files;
public List<UploadBitstreamRest> getFiles() {
if(files==null) {
files = new ArrayList<UploadBitstreamRest>();
}
return files;
}
public void setFiles(List<UploadBitstreamRest> files) {
this.files = files;
}
public class UploadBitstreamRest {
private List<MetadataEntryRest> metadata;
private Long sizeBytes;
private CheckSumRest checkSum;
private String url;
public List<MetadataEntryRest> getMetadata() {
return metadata;
}
public void setMetadata(List<MetadataEntryRest> metadata) {
this.metadata = metadata;
}
public Long getSizeBytes() {
return sizeBytes;
}
public void setSizeBytes(Long sizeBytes) {
this.sizeBytes = sizeBytes;
}
public CheckSumRest getCheckSum() {
return checkSum;
}
public void setCheckSum(CheckSumRest checkSum) {
this.checkSum = checkSum;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
public UploadBitstreamRest createUploadBitstreamRest() {
return new UploadBitstreamRest();
}
}

View File

@@ -9,14 +9,12 @@ package org.dspace.app.rest.submit;
import java.io.Serializable;
import org.dspace.app.rest.model.RestModel;
import org.dspace.app.rest.model.step.SectionData;
import org.dspace.app.util.SubmissionStepConfig;
import org.dspace.content.WorkspaceItem;
public interface AbstractRestProcessingStep {
public <T extends Serializable> T getData(WorkspaceItem obj, SubmissionStepConfig config);
public <T extends Serializable> T getData(WorkspaceItem obj, SubmissionStepConfig config) throws Exception;
}

View File

@@ -38,7 +38,7 @@ public class DescribeStep extends org.dspace.submit.step.DescribeStep implements
}
@Override
public SectionData getData(WorkspaceItem obj, SubmissionStepConfig config) {
public DataDescribe getData(WorkspaceItem obj, SubmissionStepConfig config) {
DataDescribe data = new DataDescribe();
try {
DCInputSet inputConfig = inputReader.getInputsByFormName(config.getId());

View File

@@ -7,19 +7,29 @@
*/
package org.dspace.app.rest.submit.step;
import org.dspace.app.rest.model.RestModel;
import org.dspace.app.rest.model.step.SectionData;
import org.atteo.evo.inflector.English;
import org.dspace.app.rest.model.BitstreamRest;
import org.dspace.app.rest.model.step.DataLicense;
import org.dspace.app.rest.submit.AbstractRestProcessingStep;
import org.dspace.app.util.SubmissionStepConfig;
import org.dspace.content.Bitstream;
import org.dspace.content.WorkspaceItem;
import org.dspace.core.Constants;
public class LicenseStep extends org.dspace.submit.step.LicenseStep implements AbstractRestProcessingStep {
private static final String DC_RIGHTS_DATE = "dc.rights.date";
@Override
public SectionData getData(WorkspaceItem obj, SubmissionStepConfig config) {
// TODO Auto-generated method stub
return null;
public DataLicense getData(WorkspaceItem obj, SubmissionStepConfig config) throws Exception {
DataLicense result = new DataLicense();
Bitstream bitstream = bitstreamService.getBitstreamByName(obj.getItem(), Constants.LICENSE_BUNDLE_NAME, Constants.LICENSE_BITSTREAM_NAME);
if(bitstream!=null) {
String acceptanceDate = bitstreamService.getMetadata(bitstream, DC_RIGHTS_DATE);
result.setAcceptanceDate(acceptanceDate);
result.setUrl(configurationService.getProperty("dspace.url")+"/api/"+BitstreamRest.CATEGORY +"/"+ English.plural(BitstreamRest.NAME) + "/" + bitstream.getID() + "/content");
}
return result;
}
}

View File

@@ -7,17 +7,51 @@
*/
package org.dspace.app.rest.submit.step;
import org.dspace.app.rest.model.step.SectionData;
import java.util.ArrayList;
import java.util.List;
import org.atteo.evo.inflector.English;
import org.dspace.app.rest.model.BitstreamRest;
import org.dspace.app.rest.model.CheckSumRest;
import org.dspace.app.rest.model.MetadataEntryRest;
import org.dspace.app.rest.model.step.DataUpload;
import org.dspace.app.rest.submit.AbstractRestProcessingStep;
import org.dspace.app.util.SubmissionStepConfig;
import org.dspace.content.Bitstream;
import org.dspace.content.Bundle;
import org.dspace.content.MetadataValue;
import org.dspace.content.WorkspaceItem;
import org.dspace.core.Constants;
public class UploadStep extends org.dspace.submit.step.UploadStep implements AbstractRestProcessingStep {
@Override
public SectionData getData(WorkspaceItem obj, SubmissionStepConfig config) {
// TODO Auto-generated method stub
return null;
public DataUpload getData(WorkspaceItem obj, SubmissionStepConfig config) throws Exception {
DataUpload result = new DataUpload();
List<Bundle> bundles = itemService.getBundles(obj.getItem(), Constants.CONTENT_BUNDLE_NAME);
for(Bundle bundle : bundles) {
for(Bitstream source : bundle.getBitstreams()) {
DataUpload.UploadBitstreamRest b = result.createUploadBitstreamRest();
List<MetadataEntryRest> metadata = new ArrayList<MetadataEntryRest>();
for (MetadataValue mv : source.getMetadata()) {
MetadataEntryRest me = new MetadataEntryRest();
me.setKey(mv.getMetadataField().toString('.'));
me.setValue(mv.getValue());
me.setLanguage(mv.getLanguage());
metadata.add(me);
}
b.setMetadata(metadata);
CheckSumRest checksum = new CheckSumRest();
checksum.setCheckSumAlgorithm(source.getChecksumAlgorithm());
checksum.setValue(source.getChecksum());
b.setCheckSum(checksum);
b.setSizeBytes(source.getSize());
b.setUrl(configurationService.getProperty("dspace.url")+"/api/"+BitstreamRest.CATEGORY +"/"+ English.plural(BitstreamRest.NAME) + "/" + source.getID() + "/content");
result.getFiles().add(b);
}
}
return result;
}

View File

@@ -28,8 +28,8 @@ dspace.hostname = localhost
# DSpace base host URL. Include port number etc.
dspace.baseUrl = http://localhost:8080
# The user interface you will be using for DSpace. Common usage is either xmlui or jspui
dspace.ui = xmlui
# The user interface you will be using for DSpace.
dspace.ui = dspace-spring-rest
# Full link your end users will use to access DSpace. In most cases, this will be the baseurl followed by
# the context path to the UI you are using.