mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 10:04:21 +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();
|
||||
|
||||
// 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
|
||||
|
@@ -17,7 +17,11 @@ import java.util.Map;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.dspace.content.Bitstream;
|
||||
import org.dspace.content.Bundle;
|
||||
import org.dspace.content.DCDate;
|
||||
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.services.factory.DSpaceServicesFactory;
|
||||
import org.swordapp.server.OriginalDeposit;
|
||||
@@ -28,6 +32,9 @@ public abstract class GenericStatementDisseminator
|
||||
implements SwordStatementDisseminator {
|
||||
protected SwordUrlManager urlManager;
|
||||
|
||||
protected ItemService itemService = ContentServiceFactory.getInstance()
|
||||
.getItemService();
|
||||
|
||||
protected void populateStatement(Context context, Item item,
|
||||
Statement statement)
|
||||
throws DSpaceSwordException {
|
||||
@@ -78,6 +85,7 @@ public abstract class GenericStatementDisseminator
|
||||
bitstream));
|
||||
deposit.setMediaType(bitstream
|
||||
.getFormat(context).getMIMEType());
|
||||
deposit.setDepositedOn(this.getDateOfDeposit(item));
|
||||
originalDeposits.add(deposit);
|
||||
}
|
||||
}
|
||||
@@ -173,4 +181,14 @@ public abstract class GenericStatementDisseminator
|
||||
}
|
||||
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;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -28,6 +26,7 @@ import org.dspace.core.Constants;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.services.ConfigurationService;
|
||||
import org.dspace.services.factory.DSpaceServicesFactory;
|
||||
import org.dspace.util.MultiFormatDateParser;
|
||||
import org.swordapp.server.DepositReceipt;
|
||||
import org.swordapp.server.SwordError;
|
||||
import org.swordapp.server.SwordServerException;
|
||||
@@ -284,14 +283,8 @@ public class ReceiptGenerator {
|
||||
List<MetadataValue> dcv = itemService.getMetadataByMetadataString(
|
||||
result.getItem(), "dc.date.issued");
|
||||
if (dcv != null && !dcv.isEmpty()) {
|
||||
try {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Date published = sdf.parse(dcv.get(0).getValue());
|
||||
Date published = MultiFormatDateParser.parse(dcv.get(0).getValue());
|
||||
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(
|
||||
item, "dc.date.issued");
|
||||
if (dcv != null && dcv.size() == 1) {
|
||||
try {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Date published = sdf.parse(dcv.get(0).getValue());
|
||||
Date published = MultiFormatDateParser.parse(dcv.get(0).getValue());
|
||||
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(
|
||||
result.getItem(), config);
|
||||
if (dcv != null && dcv.size() == 1) {
|
||||
try {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Date updated = sdf.parse(dcv.get(0).getValue());
|
||||
Date updated = MultiFormatDateParser.parse(dcv.get(0).getValue());
|
||||
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(
|
||||
item, config);
|
||||
if (dcv != null && dcv.size() == 1) {
|
||||
try {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Date updated = sdf.parse(dcv.get(0).getValue());
|
||||
Date updated = MultiFormatDateParser.parse(dcv.get(0).getValue());
|
||||
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