Skip to content
This repository has been archived by the owner on Jan 9, 2025. It is now read-only.

Commit

Permalink
DD-1679 mapping for dc:contributor in migration CIT021B
Browse files Browse the repository at this point in the history
  • Loading branch information
janvanmansum committed Oct 22, 2024
1 parent bde9e8d commit 4681cc9
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ else if (isMigration) {
if (isMigration) {
citationFields.addNotesText(getProvenance(ddm)); // CIT017A
citationFields.addContributors(getDcmiDdmDescriptions(ddm).filter(Description::hasDescriptionTypeOther), Contributor.toContributorValueObject); // CIT021A
citationFields.addContributors(getDcmiContributors(ddm), Contributor.toContributorValueObject); // CIT021B
}
if (dateOfDeposit != null) {
citationFields.addDateOfDeposit(dateOfDeposit); // CIT025A and CIT025B (first dataset versions)
Expand Down Expand Up @@ -346,6 +347,10 @@ Stream<Node> getDcmiDdmDescriptions(Document ddm) {
return XPathEvaluator.nodes(ddm, DDM_DCMI_METADATA + "/ddm:description");
}

Stream<Node> getDcmiContributors(Document ddm) {
return XPathEvaluator.nodes(ddm, DDM_DCMI_METADATA + "/dcterms:contributor", DDM_DCMI_METADATA + "/dc:contributor");
}

Stream<Node> getProvenance(Document ddm) {
return XPathEvaluator.nodes(ddm, DDM_DCMI_METADATA + "/dcterms:provenance");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public final class Contributor extends Base {
.filter(n -> !DcxDaiOrganization.isRightsHolderOrFunder(n))
.ifPresent(n -> DcxDaiOrganization.toContributorValueObject.build(builder, n));
}
else if ("description".equals(node.getLocalName())) {
else if ("description".equals(node.getLocalName()) || "contributor".equals(node.getLocalName())) {
builder.addSubfield(CONTRIBUTOR_NAME, node.getTextContent());
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -651,6 +651,61 @@ void CIT021A_description_type_other_is_ignored_when_not_migration() throws Excep
assertThat(toPrettyJsonString(result)).doesNotContain(expected);
}

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

var result = createMapper(true).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null, false, null, null);
var field = getCompoundMultiValueField("citation", CONTRIBUTOR, result);
var expected = "Author from dc contributor";
assertThat(field).extracting(CONTRIBUTOR_NAME).extracting("value")
.containsOnly(expected);
// not as description and author
assertThat(toPrettyJsonString(result)).containsOnlyOnce(expected);
}

@Test
void CIT021B_dcterms_contributor_is_mapped_to_contributor_if_migration() throws Exception {
var doc = readDocumentFromString(""
+ "<ddm:DDM " + rootAttributes + ">"
+ minimalDdmProfile()
+ dcmi(""
+ " <dct:contributor>Author from dcterms contributor</dct:contributor>")
+ "</ddm:DDM>");

var result = createMapper(true).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null, false, null, null);
var field = getCompoundMultiValueField("citation", CONTRIBUTOR, result);
var expected = "Author from dcterms contributor";
assertThat(field).extracting(CONTRIBUTOR_NAME).extracting("value")
.containsOnly(expected);
// not as description and author
assertThat(toPrettyJsonString(result)).containsOnlyOnce(expected);
}


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

var result = createMapper(false).toDataverseDataset(doc, null, "2023-02-27", mockedContact, mockedVaultMetadata, null, false, null, null);
var field = getCompoundMultiValueField("citation", CONTRIBUTOR, result);
var notExpected = "Author from dc contributor";
assertThat(field).isNull();
// not as description and author
assertThat(toPrettyJsonString(result)).doesNotContain(notExpected);
}


@Test
void CIT022_ddm_funder_maps_to_grant_number() throws Exception {
var doc = readDocumentFromString(""
Expand Down

0 comments on commit 4681cc9

Please sign in to comment.