mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-08 02:24:18 +00:00
Minor fixes to SWORDv2 to get ITs passing again. Smarter date parsing & make sure all files have a deposit date
This commit is contained in:
@@ -237,7 +237,7 @@ public class Swordv2IT extends AbstractWebClientIntegrationTest {
|
|||||||
String editLink = response.getHeaders().getLocation().toString();
|
String editLink = response.getHeaders().getLocation().toString();
|
||||||
|
|
||||||
// Body should include that link as the rel="edit" URL
|
// Body should include that link as the rel="edit" URL
|
||||||
assertThat(response.getBody(), containsString("<link href=\"" + editLink + "\" rel=\"edit\"/>"));
|
assertThat(response.getBody(), containsString("<link href=\"" + editLink + "\" rel=\"edit\""));
|
||||||
|
|
||||||
//----
|
//----
|
||||||
// STEP 2: Verify uploaded content can be read via SWORDv2
|
// STEP 2: Verify uploaded content can be read via SWORDv2
|
||||||
|
@@ -17,7 +17,11 @@ import java.util.Map;
|
|||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.dspace.content.Bitstream;
|
import org.dspace.content.Bitstream;
|
||||||
import org.dspace.content.Bundle;
|
import org.dspace.content.Bundle;
|
||||||
|
import org.dspace.content.DCDate;
|
||||||
import org.dspace.content.Item;
|
import org.dspace.content.Item;
|
||||||
|
import org.dspace.content.MetadataValue;
|
||||||
|
import org.dspace.content.factory.ContentServiceFactory;
|
||||||
|
import org.dspace.content.service.ItemService;
|
||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
import org.swordapp.server.OriginalDeposit;
|
import org.swordapp.server.OriginalDeposit;
|
||||||
@@ -28,6 +32,9 @@ public abstract class GenericStatementDisseminator
|
|||||||
implements SwordStatementDisseminator {
|
implements SwordStatementDisseminator {
|
||||||
protected SwordUrlManager urlManager;
|
protected SwordUrlManager urlManager;
|
||||||
|
|
||||||
|
protected ItemService itemService = ContentServiceFactory.getInstance()
|
||||||
|
.getItemService();
|
||||||
|
|
||||||
protected void populateStatement(Context context, Item item,
|
protected void populateStatement(Context context, Item item,
|
||||||
Statement statement)
|
Statement statement)
|
||||||
throws DSpaceSwordException {
|
throws DSpaceSwordException {
|
||||||
@@ -78,6 +85,7 @@ public abstract class GenericStatementDisseminator
|
|||||||
bitstream));
|
bitstream));
|
||||||
deposit.setMediaType(bitstream
|
deposit.setMediaType(bitstream
|
||||||
.getFormat(context).getMIMEType());
|
.getFormat(context).getMIMEType());
|
||||||
|
deposit.setDepositedOn(this.getDateOfDeposit(item));
|
||||||
originalDeposits.add(deposit);
|
originalDeposits.add(deposit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -173,4 +181,14 @@ public abstract class GenericStatementDisseminator
|
|||||||
}
|
}
|
||||||
return swordBundle;
|
return swordBundle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Date getDateOfDeposit(Item item) {
|
||||||
|
List<MetadataValue> values = itemService.getMetadata(item, "dc", "date", "accessioned", Item.ANY);
|
||||||
|
Date date = new Date();
|
||||||
|
if (values != null && values.size() > 0) {
|
||||||
|
String strDate = values.get(0).getValue();
|
||||||
|
date = new DCDate(strDate).toDate();
|
||||||
|
}
|
||||||
|
return date;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -8,8 +8,6 @@
|
|||||||
package org.dspace.sword2;
|
package org.dspace.sword2;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -28,6 +26,7 @@ import org.dspace.core.Constants;
|
|||||||
import org.dspace.core.Context;
|
import org.dspace.core.Context;
|
||||||
import org.dspace.services.ConfigurationService;
|
import org.dspace.services.ConfigurationService;
|
||||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||||
|
import org.dspace.util.MultiFormatDateParser;
|
||||||
import org.swordapp.server.DepositReceipt;
|
import org.swordapp.server.DepositReceipt;
|
||||||
import org.swordapp.server.SwordError;
|
import org.swordapp.server.SwordError;
|
||||||
import org.swordapp.server.SwordServerException;
|
import org.swordapp.server.SwordServerException;
|
||||||
@@ -284,14 +283,8 @@ public class ReceiptGenerator {
|
|||||||
List<MetadataValue> dcv = itemService.getMetadataByMetadataString(
|
List<MetadataValue> dcv = itemService.getMetadataByMetadataString(
|
||||||
result.getItem(), "dc.date.issued");
|
result.getItem(), "dc.date.issued");
|
||||||
if (dcv != null && !dcv.isEmpty()) {
|
if (dcv != null && !dcv.isEmpty()) {
|
||||||
try {
|
Date published = MultiFormatDateParser.parse(dcv.get(0).getValue());
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
Date published = sdf.parse(dcv.get(0).getValue());
|
|
||||||
receipt.getWrappedEntry().setPublished(published);
|
receipt.getWrappedEntry().setPublished(published);
|
||||||
} catch (ParseException e) {
|
|
||||||
// we tried, but never mind
|
|
||||||
log.warn("Couldn't add published date", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -305,14 +298,8 @@ public class ReceiptGenerator {
|
|||||||
List<MetadataValue> dcv = itemService.getMetadataByMetadataString(
|
List<MetadataValue> dcv = itemService.getMetadataByMetadataString(
|
||||||
item, "dc.date.issued");
|
item, "dc.date.issued");
|
||||||
if (dcv != null && dcv.size() == 1) {
|
if (dcv != null && dcv.size() == 1) {
|
||||||
try {
|
Date published = MultiFormatDateParser.parse(dcv.get(0).getValue());
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
Date published = sdf.parse(dcv.get(0).getValue());
|
|
||||||
receipt.getWrappedEntry().setPublished(published);
|
receipt.getWrappedEntry().setPublished(published);
|
||||||
} catch (ParseException e) {
|
|
||||||
// we tried, but never mind
|
|
||||||
log.warn("Couldn't add published date", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -329,14 +316,8 @@ public class ReceiptGenerator {
|
|||||||
List<MetadataValue> dcv = itemService.getMetadataByMetadataString(
|
List<MetadataValue> dcv = itemService.getMetadataByMetadataString(
|
||||||
result.getItem(), config);
|
result.getItem(), config);
|
||||||
if (dcv != null && dcv.size() == 1) {
|
if (dcv != null && dcv.size() == 1) {
|
||||||
try {
|
Date updated = MultiFormatDateParser.parse(dcv.get(0).getValue());
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
Date updated = sdf.parse(dcv.get(0).getValue());
|
|
||||||
receipt.getWrappedEntry().setUpdated(updated);
|
receipt.getWrappedEntry().setUpdated(updated);
|
||||||
} catch (ParseException e) {
|
|
||||||
// we tried, but never mind
|
|
||||||
log.warn("Couldn't add last updated date", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -352,14 +333,8 @@ public class ReceiptGenerator {
|
|||||||
List<MetadataValue> dcv = itemService.getMetadataByMetadataString(
|
List<MetadataValue> dcv = itemService.getMetadataByMetadataString(
|
||||||
item, config);
|
item, config);
|
||||||
if (dcv != null && dcv.size() == 1) {
|
if (dcv != null && dcv.size() == 1) {
|
||||||
try {
|
Date updated = MultiFormatDateParser.parse(dcv.get(0).getValue());
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
Date updated = sdf.parse(dcv.get(0).getValue());
|
|
||||||
receipt.getWrappedEntry().setUpdated(updated);
|
receipt.getWrappedEntry().setUpdated(updated);
|
||||||
} catch (ParseException e) {
|
|
||||||
// we tried, but never mind
|
|
||||||
log.warn("Couldn't add last updated date", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user