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(); 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

View File

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

View File

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