Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ public void replaceMetadataSingle(Context context, DSpaceObject dso, MetadataFie
ProvenanceMessageTemplates.ITEM_REPLACE_SINGLE_METADATA.getTemplate(), item,
messageProvider.getMessage(bitstream),
messageProvider.getMetadata(messageProvider.getMetadataField(metadataField), oldMtdVal));
addProvenanceMetadata(context, item, msg);;
addProvenanceMetadata(context, item, msg);
}
} catch (SQLException | AuthorizeException e) {
log.error("Unable to add new provenance metadata when replacing metadata in a item.", e);
Expand Down Expand Up @@ -325,7 +325,9 @@ private void addProvenanceMetadata(Context context, Item item, String msg)

private String extractAccessConditions(List<AccessCondition> accessConditions) {
return accessConditions.stream()
.map(AccessCondition::getName)
.map(ac -> ac.getName() +
(ac.getStartDate() != null ? " [from: " + ac.getStartDate().toString() + "]" : "") +
(ac.getEndDate() != null ? " [till: " + ac.getEndDate().toString() + "]" : ""))
.collect(Collectors.joining(";"));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
Expand All @@ -28,6 +29,9 @@
import java.util.regex.Pattern;
import javax.ws.rs.core.MediaType;

import org.dspace.app.bulkaccesscontrol.model.AccessCondition;
import org.dspace.app.bulkaccesscontrol.model.AccessConditionBitstream;
import org.dspace.app.bulkaccesscontrol.model.BulkAccessControlInput;
import org.dspace.app.rest.model.patch.AddOperation;
import org.dspace.app.rest.model.patch.Operation;
import org.dspace.app.rest.model.patch.RemoveOperation;
Expand Down Expand Up @@ -55,6 +59,7 @@
import org.dspace.content.service.clarin.ClarinLicenseLabelService;
import org.dspace.content.service.clarin.ClarinLicenseService;
import org.dspace.core.Constants;
import org.dspace.core.ProvenanceService;
import org.dspace.discovery.SearchServiceException;
import org.hamcrest.Matchers;
import org.junit.After;
Expand All @@ -72,6 +77,8 @@ public class ProvenanceServiceIT extends AbstractControllerIntegrationTest {
private ClarinLicenseLabelService clarinLicenseLabelService;
@Autowired
private ClarinLicenseService clarinLicenseService;
@Autowired
private ProvenanceService provenanceService;

private Collection collection;
private Item item;
Expand Down Expand Up @@ -371,6 +378,33 @@ public void moveItemColTest() throws Exception {
deleteCollection(col.getID());
}

@Test
public void checkEmbargoProvenanceTest() throws Exception {
context.setCurrentUser(admin);
Bitstream bitstream = createBitstream(item, Constants.CONTENT_BUNDLE_NAME);

BulkAccessControlInput bulk = new BulkAccessControlInput();
AccessConditionBitstream bitstreamNode = new AccessConditionBitstream();
List<AccessCondition> acList = new ArrayList<>();
Calendar cal = Calendar.getInstance();
cal.set(2030, Calendar.JANUARY, 1, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
AccessCondition embargo = new AccessCondition("embargo", "test", cal.getTime(), null);
acList.add(embargo);
bitstreamNode.setAccessConditions(acList);
bulk.setBitstream(bitstreamNode);

provenanceService.setBitstreamPolicies(context, bitstream, item, bulk);

// Build full expected message
String expected = "Access condition (embargo [from: " + cal.getTime() + "]) was added to bitstream ("
+ bitstream.getID() + ") by first (admin) last (admin) ("
+ admin.getEmail() + ") on ";

objectCheck(itemService.find(context, item.getID()), expected);

deleteBitstream(bitstream);
}

private String provenanceMetadataModified(String metadata) {
// Regex to match the date pattern
Expand Down