Skip to content

Commit

Permalink
CIT025B date of deposit for new sword deposit
Browse files Browse the repository at this point in the history
  • Loading branch information
jo-pol committed Jan 12, 2024
1 parent 56af57f commit 8ea3ca4
Show file tree
Hide file tree
Showing 9 changed files with 68 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,8 @@ Dataset getMetadata() {
deposit.getDepositorUserId(),
deposit.restrictedFilesPresent(),
deposit.getHasOrganizationalIdentifier(),
deposit.getHasOrganizationalIdentifierVersion()
deposit.getHasOrganizationalIdentifierVersion(),
deposit.isUpdate()
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.joda.time.DateTime;
import org.w3c.dom.Document;
import org.w3c.dom.Node;

Expand All @@ -81,6 +82,7 @@
import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.TITLE;
import static nl.knaw.dans.ingest.core.service.XPathConstants.DDM_DCMI_METADATA;
import static nl.knaw.dans.ingest.core.service.XPathConstants.DDM_PROFILE;
import static nl.knaw.dans.ingest.core.service.mapper.mapping.Base.yyyymmddPattern;

@Slf4j
public class DepositToDvDatasetMetadataMapper {
Expand Down Expand Up @@ -122,8 +124,8 @@ public Dataset toDataverseDataset(
String depositorUserId,
boolean restrictedFilesPresent,
String hasOrganizationalIdentifier,
String hasOrganizationalIdentifierVersion
) throws MissingRequiredFieldException {
String hasOrganizationalIdentifierVersion,
boolean isUpdate) throws MissingRequiredFieldException {
var termsOfAccess = "";

if (activeMetadataBlocks.contains("citation")) {
Expand Down Expand Up @@ -180,6 +182,9 @@ else if (isMigration) {
citationFields.addContributors(getDcmiDdmDescriptions(ddm).filter(Description::hasDescriptionTypeOther), Contributor.toContributorValueObject); // CIT021A
citationFields.addDateOfDeposit(dateOfDeposit); // CIT025A
}
else if (!isUpdate) {
citationFields.addDateOfDeposit(DateTime.now().toString(yyyymmddPattern)); // CIT025B
}
citationFields.addDatesOfCollection(getDatesOfCollection(ddm)
.filter(DatesOfCollection::isValidDatesOfCollectionPattern), DatesOfCollection.toDateOfCollectionValue); // CIT026
citationFields.addSeries(getDcmiDdmDescriptions(ddm).filter(Description::isSeriesInformation), Description.toSeries); // CIT027
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public class Base {
// private static final DateFormat dateAvailableFormat = new SimpleDateFormat("yyyy-MM-dd");
private static final DateFormat dateAvailableFormat = new SimpleDateFormat("yyyy-MM-dd");

private static final DateTimeFormatter yyyymmddPattern = DateTimeFormat.forPattern("YYYY-MM-dd");
public static final DateTimeFormatter yyyymmddPattern = DateTimeFormat.forPattern("YYYY-MM-dd");

static boolean hasXsiType(Node node, String xsiType) {
var attributes = node.getAttributes();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,11 @@

import nl.knaw.dans.ingest.core.domain.VaultMetadata;
import nl.knaw.dans.lib.dataverse.model.dataset.CompoundMultiValueField;
import nl.knaw.dans.lib.dataverse.model.dataset.CompoundSingleValueField;
import org.junit.jupiter.api.Test;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.ALTERNATIVE_TITLE;
import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.CONTRIBUTOR;
Expand Down Expand Up @@ -64,7 +62,6 @@
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.createMapper;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.dcmi;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.getCompoundMultiValueField;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.getCompoundSingleValueField;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.getControlledMultiValueField;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.getPrimitiveMultiValueField;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.getPrimitiveSingleValueField;
Expand Down Expand Up @@ -108,7 +105,7 @@ void CIT002A_vault_metadata_other_id_maps_to_other_id() throws Exception {
+ "<ddm:DDM " + rootAttributes + ">"
+ minimalDdmProfile() + dcmi("")
+ "</ddm:DDM>");
var result = createMapper(true).toDataverseDataset(doc, null, null, null, mockedVaultMetadata, null,true, null, null);
var result = createMapper(true).toDataverseDataset(doc, null, null, null, mockedVaultMetadata, null,true, null, null, false);
var field = getCompoundMultiValueField("citation", OTHER_ID, result);

assertThat(field).hasSize(1);
Expand All @@ -124,7 +121,7 @@ void CIT002A_vault_metadata_other_id_is_ignored_when_not_migration() throws Exce
+ "<ddm:DDM " + rootAttributes + ">"
+ minimalDdmProfile() + dcmi("")
+ "</ddm:DDM>");
var result = createMapper(false).toDataverseDataset(doc, null, null, null, mockedVaultMetadata, null, true, null, null);
var result = createMapper(false).toDataverseDataset(doc, null, null, null, mockedVaultMetadata, null, true, null, null, false);
var field = getCompoundMultiValueField("citation", OTHER_ID, result);

assertThat(field).isNull();
Expand All @@ -136,7 +133,7 @@ void CIT00X_vault_metadata_other_id_maps_to_other_id() throws Exception {
+ "<ddm:DDM " + rootAttributes + ">"
+ minimalDdmProfile() + dcmi("")
+ "</ddm:DDM>");
var result = createMapper(true).toDataverseDataset(doc, "otherId:something", null, null, new VaultMetadata(), null, true, null, null);
var result = createMapper(true).toDataverseDataset(doc, "otherId:something", null, null, new VaultMetadata(), null, true, null, null, false);
var field = getCompoundMultiValueField("citation", OTHER_ID, result);

assertThat(field).hasSize(1);
Expand All @@ -153,7 +150,7 @@ void CIT002B_dct_identifier_type_easy2_maps_to_other_id() throws Exception {
+ minimalDdmProfile() + dcmi(""
+ "<dct:identifier xsi:type='id-type:EASY2'>easy-dataset:123</dct:identifier>")
+ "</ddm:DDM>");
var result = createMapper(true).toDataverseDataset(doc, null, null, null, new VaultMetadata(), null,true, null, null);
var result = createMapper(true).toDataverseDataset(doc, null, null, null, new VaultMetadata(), null,true, null, null, false);
var field = getCompoundMultiValueField("citation", OTHER_ID, result);

assertThat(field).hasSize(1);
Expand All @@ -170,7 +167,7 @@ void CIT002B_dct_identifier_type_easy2_is_ignored_when_not_migration() throws Ex
+ minimalDdmProfile() + dcmi(""
+ "<dct:identifier xsi:type='id-type:EASY2'>easy-dataset:123</dct:identifier>")
+ "</ddm:DDM>");
var result = createMapper(false).toDataverseDataset(doc, null, null, null, new VaultMetadata(), null,true, null, null);
var result = createMapper(false).toDataverseDataset(doc, null, null, null, new VaultMetadata(), null,true, null, null, false);
var field = getCompoundMultiValueField("citation", OTHER_ID, result);

assertThat(field).isNull();
Expand All @@ -183,7 +180,7 @@ void CIT004_typeless_dct_identifier_maps_to_other_id() throws Exception {
+ minimalDdmProfile() + dcmi(""
+ "<dct:identifier>typeless:123</dct:identifier>")
+ "</ddm:DDM>");
var result = createMapper(true).toDataverseDataset(doc, null, null, null, new VaultMetadata(), null,true, null, null);
var result = createMapper(true).toDataverseDataset(doc, null, null, null, new VaultMetadata(), null,true, null, null, false);
var field = getCompoundMultiValueField("citation", OTHER_ID, result);

assertThat(field).hasSize(1);
Expand Down Expand Up @@ -354,7 +351,7 @@ void CIT012A_dct_accessRights_is_ignored_when_not_migration() throws Exception {
+ dcmi("<dct:accessRights>Some story</dct:accessRights>")
+ "</ddm:DDM>");

var result = createMapper(false).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null,false, null, null);
var result = createMapper(false).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null,false, null, null, false);
var str = toPrettyJsonString(result);

assertThat(str).doesNotContain("<p>Some story</p>");
Expand Down Expand Up @@ -482,7 +479,7 @@ void mapping_skips_hidden() throws Exception {
var skipFields = List.of("dateOfDeposit", "publication");
var activeMetadataBlocks = Set.of("citation", "dansRights", "dansDataVaultMetadata");
var result = new DepositToDvDatasetMetadataMapper(true, activeMetadataBlocks, Map.of(), Map.of(), List.of(), config.getDataSuppliers(), skipFields, true)
.toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata,null, false, null, null);
.toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata,null, false, null, null, false);
var field = getCompoundMultiValueField("citation", PUBLICATION, result);
assertThat(field).isNull();
}
Expand All @@ -495,7 +492,7 @@ void CIT017A_dct_provenance_maps_to_notesText() throws Exception {
+ dcmi("<dct:provenance>copied xml to csv</dct:provenance>")
+ "</ddm:DDM>");

var result = createMapper(true).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null,false, null, null);
var result = createMapper(true).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null,false, null, null, false);
var str = toPrettyJsonString(result);

assertThat(str).containsOnlyOnce("copied xml to csv");
Expand All @@ -513,7 +510,7 @@ void CIT017A_dct_provenance_maps_is_is_ignored_when_not_migration() throws Excep
+ dcmi("<dct:provenance>copied xml to csv</dct:provenance>")
+ "</ddm:DDM>");

var result = createMapper(false).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null,false, null, null);
var result = createMapper(false).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null,false, null, null, false);
var str = toPrettyJsonString(result);

assertThat(str).doesNotContain("copied xml to csv");
Expand Down Expand Up @@ -646,7 +643,7 @@ void CIT021A_description_type_other_maps_only_to_author_name() throws Exception
+ dcmi("<ddm:description descriptionType='Other'>Author from description other</ddm:description>")
+ "</ddm:DDM>");

var result = createMapper(true).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null,false, null, null);
var result = createMapper(true).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null,false, null, null, false);
var field = getCompoundMultiValueField("citation", CONTRIBUTOR, result);
var expected = "Author from description other";
assertThat(field).extracting(CONTRIBUTOR_NAME).extracting("value")
Expand All @@ -663,7 +660,7 @@ void CIT021A_description_type_other_is_ignored_when_not_migration() throws Excep
+ dcmi("<ddm:description descriptionType='Other'>Author from description other</ddm:description>")
+ "</ddm:DDM>");

var result = createMapper(false).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null, false, null, null);
var result = createMapper(false).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null, false, null, null, false);
var field = getCompoundMultiValueField("citation", CONTRIBUTOR, result);
var expected = "Author from description other";
assertThat(field).isNull();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,27 +15,33 @@
*/
package nl.knaw.dans.ingest.core.service.mapper;

import org.joda.time.DateTime;
import org.junit.jupiter.api.Test;

import java.util.List;

import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.AUTHOR;
import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.AUTHOR_NAME;
import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.DATE_OF_DEPOSIT;
import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.DESCRIPTION;
import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.DESCRIPTION_VALUE;
import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.DISTRIBUTION_DATE;
import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.PRODUCTION_DATE;
import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.SUBJECT;
import static nl.knaw.dans.ingest.core.service.DepositDatasetFieldNames.TITLE;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.*;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.createMapper;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.dcmi;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.ddmWithCustomProfileContent;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.getCompoundMultiValueField;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.getControlledMultiValueField;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.getPrimitiveSingleValueField;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.mapDdmToDataset;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.minimalDdmProfile;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.readDocumentFromString;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.rootAttributes;
import static nl.knaw.dans.ingest.core.service.mapper.MappingTestHelper.toPrettyJsonString;
import static nl.knaw.dans.ingest.core.service.mapper.mapping.Base.yyyymmddPattern;
import static org.assertj.core.api.Assertions.assertThat;

public class CitationMetadataFromProfileTest {
Expand Down Expand Up @@ -194,4 +200,36 @@ void CIT025_date_available_maps_to_distribution_date() throws Exception{
assertThat(getPrimitiveSingleValueField("citation", DISTRIBUTION_DATE, result))
.isEqualTo("2014-12-01");
}

@Test
void CIT025B_current_date_deposit_for_new_deposit() throws Exception{
var doc = readDocumentFromString("<ddm:DDM " + rootAttributes + ">" + minimalDdmProfile() + dcmi("") + "</ddm:DDM>");

var result = createMapper(false).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata,null, false, null, null, false);

assertThat(getPrimitiveSingleValueField("citation", DATE_OF_DEPOSIT, result))
.isEqualTo(DateTime.now().toString(yyyymmddPattern));
}

@Test
void CIT025B_no_current_date_deposit_for_migration() throws Exception{
var doc = readDocumentFromString("<ddm:DDM " + rootAttributes + ">" + minimalDdmProfile() + dcmi("") + "</ddm:DDM>");

String dateOfDeposit = "2023-02-27";
var result = createMapper(true).toDataverseDataset(doc, null, dateOfDeposit, mockedContact, mockedVaultMetadata,null, false, null, null, false);

assertThat(getPrimitiveSingleValueField("citation", DATE_OF_DEPOSIT, result))
.isEqualTo(dateOfDeposit);
}

@Test
void CIT025B_no_deposit_date_for_update_deposit() throws Exception{
var doc = readDocumentFromString("<ddm:DDM " + rootAttributes + ">" + minimalDdmProfile() + dcmi("") + "</ddm:DDM>");

String dateOfDeposit = "2023-02-27";
var result = createMapper(false).toDataverseDataset(doc, null, dateOfDeposit, mockedContact, mockedVaultMetadata,null, false, null, null, true);

assertThat(getPrimitiveSingleValueField("citation", DATE_OF_DEPOSIT, result))
.isEqualTo(null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,15 @@ public class DansDataVaultMetadataTest {
public void VLT008_userId_should_map_to_dataSupplier_from_config_yml() throws Exception {
var vaultMetadata = new VaultMetadata("", "", "", "", "");

var result = mapper.toDataverseDataset(ddmWithCustomProfileContent(""), null, null, null, vaultMetadata, "user001",false, null, null);
var result = mapper.toDataverseDataset(ddmWithCustomProfileContent(""), null, null, null, vaultMetadata, "user001",false, null, null, false);
assertThat(getPrimitiveSingleValueField("dansDataVaultMetadata", "dansDataSupplier", result))
.isEqualTo("The Organization Name");
}

@Test
public void VLT008_dataSupplier_should_ignore_not_configured_userId() throws Exception {
var vaultMetadata = new VaultMetadata("", "", "", "", "");
var result = mapper.toDataverseDataset(ddmWithCustomProfileContent(""), null, null, null, vaultMetadata, "xxx",false, null, null);
var result = mapper.toDataverseDataset(ddmWithCustomProfileContent(""), null, null, null, vaultMetadata, "xxx",false, null, null, false);
assertThat(getFieldNamesOfMetadataBlocks(result).get("dansArchaeologyMetadata"))
.doesNotContain("dansDataSupplier");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -84,7 +83,7 @@ void to_dataverse_dataset() throws Exception {

var vaultMetadata = new VaultMetadata("pid", "bagId", "nbn", "otherId:something", "swordToken");

var result = mapper.toDataverseDataset(doc, null, null, null, vaultMetadata, null,false, null, null);
var result = mapper.toDataverseDataset(doc, null, null, null, vaultMetadata, null,false, null, null, false);
var str = new ObjectMapper()
.writer()
.withDefaultPrettyPrinter()
Expand All @@ -98,7 +97,7 @@ void toDataverseDataset_should_not_have_doi() throws Exception {

var vaultMetadata = new VaultMetadata("pid", "bagId", "nbn", "doi:a/b", "swordToken");

var result = mapper.toDataverseDataset(doc, null, null, null, vaultMetadata, null,false, null, null);
var result = mapper.toDataverseDataset(doc, null, null, null, vaultMetadata, null,false, null, null, false);
var str = new ObjectMapper()
.writer()
.withDefaultPrettyPrinter()
Expand All @@ -115,7 +114,7 @@ void toDataverseDataset_should_include_otherId_from_vault_metadata() throws Exce

var vaultMetadata = new VaultMetadata("pid", "bagId", "nbn", "doi:a/b", "swordToken");

var result = mapper.toDataverseDataset(doc, null, null, null, vaultMetadata, null,false, "org-id", null);
var result = mapper.toDataverseDataset(doc, null, null, null, vaultMetadata, null,false, "org-id", null, false);
var str = new ObjectMapper()
.writer()
.withDefaultPrettyPrinter()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public static Document readDocumentFromString(String xml) throws ParserConfigura
}

static Dataset mapDdmToDataset(Document ddm, boolean restrictedFilesPresent) {
return createMapper(true).toDataverseDataset(ddm, null, "2023-02-27", mockedContact, mockedVaultMetadata,null, restrictedFilesPresent, null, null);
return createMapper(true).toDataverseDataset(ddm, null, "2023-02-27", mockedContact, mockedVaultMetadata,null, restrictedFilesPresent, null, null, false);
}

static DepositToDvDatasetMetadataMapper createMapper(boolean isMigration) {
Expand Down
Loading

0 comments on commit 8ea3ca4

Please sign in to comment.