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:
Tim Donohue
2024-03-19 17:10:25 -05:00
parent acebaa8d1f
commit 20f14d23ae
3 changed files with 28 additions and 35 deletions

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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);
}
}
}
}