From c6eb80ef47bedb6578ca08d0ed3b1c1b51fa4a06 Mon Sep 17 00:00:00 2001 From: Stefano Maffei Date: Mon, 25 Mar 2024 16:55:03 +0100 Subject: [PATCH 1/7] [CST-14245] improvement in metadata generators --- .../ItemSimpleAuthorityMetadataGenerator.java | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java b/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java index b78eb9737c4..49d4cfde23b 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java @@ -110,13 +110,12 @@ public List buildAggregate(String checkAuthorityName, SolrDocument docum protected void buildSingleExtraByMetadata(MetadataValueDTO metadataValue, Map extras) { if (metadataValue == null) { - putValueInExtras(extras, ""); + return; + } + if (StringUtils.isNotBlank(metadataValue.getAuthority())) { + putValueInExtras(extras, metadataValue.getValue() + "::" + metadataValue.getAuthority()); } else { - if (StringUtils.isNotBlank(metadataValue.getAuthority())) { - putValueInExtras(extras, metadataValue.getValue() + "::" + metadataValue.getAuthority()); - } else { - putValueInExtras(extras, metadataValue.getValue()); - } + putValueInExtras(extras, metadataValue.getValue()); } } @@ -125,16 +124,27 @@ protected void buildSingleExtraByRP(SolrDocument solrDocument, Map { + buildSingleExtraByMetadata(metadataValue, extras); + }); } } private void putValueInExtras(Map extras, String value) { if (useAsData) { - extras.put("data-" + keyId, value); + String key = "data-" + keyId; + if (extras.containsKey(key)) { + extras.put(key, extras.get(key) + "|||" + value); + } else { + extras.put(key, value); + } } if (useForDisplay) { - extras.put(keyId, value); + if (extras.containsKey(keyId)) { + extras.put(keyId, extras.get(keyId) + "|||" + value); + } else { + extras.put(keyId, value); + } } } From 9423b4f1a0c7c2251d1aab6c89ec388495034ee7 Mon Sep 17 00:00:00 2001 From: Stefano Maffei Date: Tue, 26 Mar 2024 08:38:30 +0100 Subject: [PATCH 2/7] [CST-14245] added alternative names # Conflicts: # dspace-api/src/main/java/org/dspace/content/authority/ItemAuthority.java --- .../content/authority/ItemAuthority.java | 37 +++++++++++-------- .../org/dspace/util/ItemAuthorityUtils.java | 14 ++++++- dspace/config/spring/api/discovery.xml | 24 +++++++++++- 3 files changed, 58 insertions(+), 17 deletions(-) diff --git a/dspace-api/src/main/java/org/dspace/content/authority/ItemAuthority.java b/dspace-api/src/main/java/org/dspace/content/authority/ItemAuthority.java index 173ea83f62a..762b69e8646 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/ItemAuthority.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/ItemAuthority.java @@ -161,21 +161,28 @@ private Choices getMatches(String text, int start, int limit, String locale, boo private List getChoiceListFromQueryResults(SolrDocumentList results, String searchTitle, boolean onlyExactMatches) { return results - .stream() - .map(doc -> { - String title; - if (onlyExactMatches && isForceInternalTitle() || !onlyExactMatches) { - Object fieldValue = doc.getFieldValue("dc.title"); - title = fieldValue instanceof String ? (String) fieldValue - : ((ArrayList) fieldValue).get(0); - } else { - title = searchTitle; - } - Map extras = ItemAuthorityUtils.buildExtra(getPluginInstanceName(), doc); - return new Choice((String) doc.getFieldValue("search.resourceid"), - title, - title, extras); - }).collect(Collectors.toList()); + .stream() + .map(doc -> { + String title = searchTitle; + List objectNames = List.of(); + if (onlyExactMatches && isForceInternalTitle() || !onlyExactMatches) { + Object fieldValue = doc.getFieldValue("objectname"); + if (fieldValue != null) { + if (fieldValue instanceof String) { + title = (String) fieldValue; + } else { + objectNames = (ArrayList) fieldValue; + title = objectNames.get(0); + } + } + } + String uuid = (String) doc.getFieldValue("search.resourceid"); + Map extras = ItemAuthorityUtils.buildExtra(getPluginInstanceName(), + doc, objectNames, uuid); + return new Choice(uuid, + title, + title, extras); + }).collect(Collectors.toList()); } @Override diff --git a/dspace-api/src/main/java/org/dspace/util/ItemAuthorityUtils.java b/dspace-api/src/main/java/org/dspace/util/ItemAuthorityUtils.java index 82a073d9e63..3fd5e76b401 100644 --- a/dspace-api/src/main/java/org/dspace/util/ItemAuthorityUtils.java +++ b/dspace-api/src/main/java/org/dspace/util/ItemAuthorityUtils.java @@ -25,7 +25,8 @@ public class ItemAuthorityUtils { private static DSpace dspace = new DSpace(); private ItemAuthorityUtils() {} - public static Map buildExtra(String authorityName, SolrDocument item) { + public static Map buildExtra(String authorityName, SolrDocument item, + List objectNames, String uuid) { Map extras = new HashMap(); List generators = dspace.getServiceManager() .getServicesByType(ItemAuthorityExtraMetadataGenerator.class); @@ -35,6 +36,17 @@ public static Map buildExtra(String authorityName, SolrDocument extras.putAll(extrasTmp); } } + if (objectNames.size() > 1) { + String alternativeNameKey = "alternative-names"; + objectNames.forEach(alternativeName -> { + String alternative = alternativeName + "::" + uuid; + if (extras.containsKey(alternativeNameKey)) { + extras.put(alternativeNameKey, extras.get(alternativeNameKey) + "|||" + alternative); + } else { + extras.put(alternativeNameKey, alternative); + } + }); + } return extras; } diff --git a/dspace/config/spring/api/discovery.xml b/dspace/config/spring/api/discovery.xml index 8adb1233282..ec6bf5882af 100644 --- a/dspace/config/spring/api/discovery.xml +++ b/dspace/config/spring/api/discovery.xml @@ -1800,7 +1800,29 @@ - + + + + + + dc.title + crisrp.fullName + crisrp.name + crisrp.name.variant + crisproject.title + crisou.name + unibe.document.title + crisdo.name + crisfunding.fundingname + + + + + + + + From cbf300565b8b14fe5cd872d3fba4dcd35ab8ffc5 Mon Sep 17 00:00:00 2001 From: Stefano Maffei Date: Fri, 12 Apr 2024 10:50:55 +0200 Subject: [PATCH 3/7] [DSC-1631] added indexer for object name --- .../config/spring/api/test-discovery.xml | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/dspace-server-webapp/src/test/data/dspaceFolder/config/spring/api/test-discovery.xml b/dspace-server-webapp/src/test/data/dspaceFolder/config/spring/api/test-discovery.xml index 867dd0b8d9f..5064a49f723 100644 --- a/dspace-server-webapp/src/test/data/dspaceFolder/config/spring/api/test-discovery.xml +++ b/dspace-server-webapp/src/test/data/dspaceFolder/config/spring/api/test-discovery.xml @@ -4342,6 +4342,28 @@ + + + + + + dc.title + crisrp.fullName + crisrp.name + crisrp.name.variant + crisproject.title + crisou.name + unibe.document.title + crisdo.name + crisfunding.fundingname + + + + + + + From 28fee4108ac684ba336973fc1946dc5e75125e34 Mon Sep 17 00:00:00 2001 From: Stefano Maffei Date: Tue, 26 Mar 2024 12:05:59 +0100 Subject: [PATCH 4/7] [DSC-1631] added test for alternative names # Conflicts: # dspace-server-webapp/src/test/data/dspaceFolder/config/spring/api/test-discovery.xml # dspace-server-webapp/src/test/java/org/dspace/app/rest/ItemAuthorityIT.java --- .../ItemSimpleAuthorityMetadataGenerator.java | 1 - .../org/dspace/app/rest/ItemAuthorityIT.java | 55 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java b/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java index 49d4cfde23b..fa61571d2e1 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java @@ -99,7 +99,6 @@ public List buildAggregate(String checkAuthorityName, SolrDocument docum } } else { Map extras = new HashMap(); - putValueInExtras(extras, ""); choiceList.add(new Choice((String) document.getFieldValue("search.resourceid"), title, title, extras)); } diff --git a/dspace-server-webapp/src/test/java/org/dspace/app/rest/ItemAuthorityIT.java b/dspace-server-webapp/src/test/java/org/dspace/app/rest/ItemAuthorityIT.java index cdfbf2f29b1..12aba6fe1da 100644 --- a/dspace-server-webapp/src/test/java/org/dspace/app/rest/ItemAuthorityIT.java +++ b/dspace-server-webapp/src/test/java/org/dspace/app/rest/ItemAuthorityIT.java @@ -149,6 +149,61 @@ public void singleItemAuthorityTest() throws Exception { ))) .andExpect(jsonPath("$.page.totalElements", Matchers.is(3))); } + @Test + public void alternativeNamesAuthorityTest() throws Exception { + context.turnOffAuthorisationSystem(); + + parentCommunity = CommunityBuilder.createCommunity(context).build(); + Collection col1 = CollectionBuilder.createCollection(context, parentCommunity) + .withName("Test collection") + .build(); + + Item orgUnit_1 = ItemBuilder.createItem(context, col1) + .withTitle("OrgUnit_1") + .withEntityType("orgunit") + .build(); + + Item author_1 = ItemBuilder.createItem(context, col1) + .withTitle("Author 1") + .withVariantName("Author Variant") + .withEntityType("person") + .withPersonMainAffiliation(orgUnit_1.getName(), orgUnit_1.getID().toString()) + .build(); + + Item author_2 = ItemBuilder.createItem(context, col1) + .withTitle("Author 2") + .withVariantName("Author 2 Variant") + .withPersonMainAffiliation(orgUnit_1.getName(), orgUnit_1.getID().toString()) + .withEntityType("person") + .build(); + + Item author_3 = ItemBuilder.createItem(context, col1) + .withTitle("Author 3") + .withPersonMainAffiliation(orgUnit_1.getName(), orgUnit_1.getID().toString()) + .withEntityType("person") + .build(); + + context.restoreAuthSystemState(); + String author1Alternatives = "Author 1::" + author_1.getID() + "|||Author Variant::" + author_1.getID(); + Map author1Extras = Map.of("alternative-names", author1Alternatives); + String author2Alternatives = "Author 2::" + author_2.getID() + "|||Author 2 Variant::" + author_2.getID(); + Map author2Extras = Map.of("alternative-names", author2Alternatives); + String token = getAuthToken(eperson.getEmail(), password); + getClient(token).perform(get("/api/submission/vocabularies/AuthorAuthority/entries") + .param("metadata", "dc.contributor.author") + .param("collection", col1.getID().toString()) + .param("filter", "author")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$._embedded.entries", Matchers.containsInAnyOrder( + ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(author_1.getID().toString(), + "Author 1", "Author 1", "vocabularyEntry", author1Extras), + ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(author_2.getID().toString(), + "Author 2", "Author 2", "vocabularyEntry", author2Extras), + ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(author_3.getID().toString(), + "Author 3", "Author 3", "vocabularyEntry", Map.of()) + ))) + .andExpect(jsonPath("$.page.totalElements", Matchers.is(3))); + } @Test public void multiItemAuthorityTest() throws Exception { From a1f3459799a32fc9fa70753df968430dabeeb140 Mon Sep 17 00:00:00 2001 From: Stefano Maffei Date: Fri, 29 Mar 2024 11:52:30 +0100 Subject: [PATCH 5/7] [CST-14245] remove duplicated from extras in authority lookup --- .../ItemSimpleAuthorityMetadataGenerator.java | 27 +++++++++++++++++++ .../org/dspace/util/ItemAuthorityUtils.java | 6 +++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java b/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java index fa61571d2e1..8ce3f7ffe96 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/ItemSimpleAuthorityMetadataGenerator.java @@ -13,6 +13,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; @@ -111,6 +112,9 @@ protected void buildSingleExtraByMetadata(MetadataValueDTO metadataValue, Map extras) { + String key = keyId; + if (useAsData) { + key = "data-" + keyId; + } + String values = extras.get(key); + if (values == null) { + return false; + } + + String valueToFind = StringUtils.isNotBlank(metadataValue.getAuthority()) + ? metadataValue.getValue() + "::" + metadataValue.getAuthority() + : metadataValue.getValue(); + + if (values.contains("|||")) { + // so it's multivalues + String splittedVals[] = values.split(Pattern.quote("|||")); + return ArrayUtils.contains(splittedVals, valueToFind); + } + return values.equals(valueToFind); + + } + protected void buildSingleExtraByRP(SolrDocument solrDocument, Map extras) { List metadataValues = getMetadataValueDTOsFromSolr(schema, element, qualifier, solrDocument); if (metadataValues.isEmpty()) { diff --git a/dspace-api/src/main/java/org/dspace/util/ItemAuthorityUtils.java b/dspace-api/src/main/java/org/dspace/util/ItemAuthorityUtils.java index 3fd5e76b401..595994bde67 100644 --- a/dspace-api/src/main/java/org/dspace/util/ItemAuthorityUtils.java +++ b/dspace-api/src/main/java/org/dspace/util/ItemAuthorityUtils.java @@ -11,6 +11,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.solr.common.SolrDocument; import org.dspace.content.authority.Choice; @@ -36,9 +37,10 @@ public static Map buildExtra(String authorityName, SolrDocument extras.putAll(extrasTmp); } } - if (objectNames.size() > 1) { + Set alternativeNames = Set.copyOf(objectNames); + if (alternativeNames.size() > 1) { String alternativeNameKey = "alternative-names"; - objectNames.forEach(alternativeName -> { + alternativeNames.forEach(alternativeName -> { String alternative = alternativeName + "::" + uuid; if (extras.containsKey(alternativeNameKey)) { extras.put(alternativeNameKey, extras.get(alternativeNameKey) + "|||" + alternative); From 847dd583dc2b1727f7f8e0c300a8c85225ce602f Mon Sep 17 00:00:00 2001 From: Stefano Maffei Date: Fri, 12 Apr 2024 12:04:18 +0200 Subject: [PATCH 6/7] [DSC-1631] fixes for multiple values selection in authority dropdown --- .../content/authority/ItemAuthority.java | 5 ++ .../discovery/ObjectNameIndexPlugin.java | 69 +++++++++++++++++++ .../config/spring/api/test-discovery.xml | 22 ------ dspace/config/spring/api/discovery.xml | 38 +++++----- 4 files changed, 90 insertions(+), 44 deletions(-) create mode 100644 dspace-api/src/main/java/org/dspace/discovery/ObjectNameIndexPlugin.java diff --git a/dspace-api/src/main/java/org/dspace/content/authority/ItemAuthority.java b/dspace-api/src/main/java/org/dspace/content/authority/ItemAuthority.java index 762b69e8646..b3a61d4ec45 100644 --- a/dspace-api/src/main/java/org/dspace/content/authority/ItemAuthority.java +++ b/dspace-api/src/main/java/org/dspace/content/authority/ItemAuthority.java @@ -174,6 +174,11 @@ private List getChoiceListFromQueryResults(SolrDocumentList results, Str objectNames = (ArrayList) fieldValue; title = objectNames.get(0); } + } else { + title = ((ArrayList) doc.getFieldValue("dc.title")) + .stream() + .findFirst() + .orElse(searchTitle); } } String uuid = (String) doc.getFieldValue("search.resourceid"); diff --git a/dspace-api/src/main/java/org/dspace/discovery/ObjectNameIndexPlugin.java b/dspace-api/src/main/java/org/dspace/discovery/ObjectNameIndexPlugin.java new file mode 100644 index 00000000000..d4a3c8914f8 --- /dev/null +++ b/dspace-api/src/main/java/org/dspace/discovery/ObjectNameIndexPlugin.java @@ -0,0 +1,69 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE and NOTICE files at the root of the source + * tree and available online at + * + * http://www.dspace.org/license/ + */ +package org.dspace.discovery; + +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.solr.common.SolrInputDocument; +import org.dspace.content.Item; +import org.dspace.content.MetadataValue; +import org.dspace.content.service.ItemService; +import org.dspace.core.Context; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * Implementation of {@link ObjectNameIndexPlugin} which indexes the objectname + * to retrieve alternatives + * + * @author Stefano Maffei at 4science.com + * + */ +public class ObjectNameIndexPlugin implements SolrServiceIndexPlugin { + + @Autowired + private ItemService itemService; + + public static String OBJECT_NAME_INDEX = "objectname"; + + public static List fields; + + @SuppressWarnings("rawtypes") + @Override + public void additionalIndex(Context context, IndexableObject dso, SolrInputDocument document) { + if (!(dso.getIndexedObject() instanceof Item)) { + return; + } + + Item item = (Item) dso.getIndexedObject(); + List metadataValues = getMetadataValues(item, fields); + + metadataValues.forEach(textValue -> document.addField(OBJECT_NAME_INDEX, textValue)); + } + + private List getMetadataValues(Item item, List metadataFields) { + return metadataFields.stream() + .flatMap(metadataField -> getMetadataValues(item, metadataField).stream()) + .collect(Collectors.toList()); + } + + private List getMetadataValues(Item item, String metadataField) { + return itemService.getMetadataByMetadataString(item, metadataField).stream() + .map(MetadataValue::getValue) + .collect(Collectors.toList()); + } + + public static List getFields() { + return fields; + } + + public static void setFields(List fields) { + ObjectNameIndexPlugin.fields = fields; + } + +} diff --git a/dspace-server-webapp/src/test/data/dspaceFolder/config/spring/api/test-discovery.xml b/dspace-server-webapp/src/test/data/dspaceFolder/config/spring/api/test-discovery.xml index 5064a49f723..867dd0b8d9f 100644 --- a/dspace-server-webapp/src/test/data/dspaceFolder/config/spring/api/test-discovery.xml +++ b/dspace-server-webapp/src/test/data/dspaceFolder/config/spring/api/test-discovery.xml @@ -4342,28 +4342,6 @@ - - - - - - dc.title - crisrp.fullName - crisrp.name - crisrp.name.variant - crisproject.title - crisou.name - unibe.document.title - crisdo.name - crisfunding.fundingname - - - - - - - diff --git a/dspace/config/spring/api/discovery.xml b/dspace/config/spring/api/discovery.xml index ec6bf5882af..b55e7eee514 100644 --- a/dspace/config/spring/api/discovery.xml +++ b/dspace/config/spring/api/discovery.xml @@ -50,6 +50,22 @@ + + + + dc.title + crisrp.name + crisrp.name.variant + crisrp.name.translated + crisrp.fullName + crisproject.title + crisou.name + unibe.document.title + crisdo.name + crisfunding.fundingname + + + @@ -1800,28 +1816,6 @@ - - - - - - dc.title - crisrp.fullName - crisrp.name - crisrp.name.variant - crisproject.title - crisou.name - unibe.document.title - crisdo.name - crisfunding.fundingname - - - - - - - From 6fe39967451574e51a6800f73760a9583e682db6 Mon Sep 17 00:00:00 2001 From: eskander Date: Fri, 19 Apr 2024 10:42:58 +0200 Subject: [PATCH 7/7] [DSC-1631] fixed broken ITs --- .../org/dspace/app/rest/ItemAuthorityIT.java | 34 +++++++++---------- .../org/dspace/app/rest/OrcidAuthorityIT.java | 9 +++-- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/dspace-server-webapp/src/test/java/org/dspace/app/rest/ItemAuthorityIT.java b/dspace-server-webapp/src/test/java/org/dspace/app/rest/ItemAuthorityIT.java index 12aba6fe1da..fd7a3379c05 100644 --- a/dspace-server-webapp/src/test/java/org/dspace/app/rest/ItemAuthorityIT.java +++ b/dspace-server-webapp/src/test/java/org/dspace/app/rest/ItemAuthorityIT.java @@ -127,25 +127,19 @@ public void singleItemAuthorityTest() throws Exception { Map.of("data-oairecerif_author_affiliation", "OrgUnit_1::" + orgUnit_1.getID(), "oairecerif_author_affiliation", "OrgUnit_1::" - + orgUnit_1.getID(), - "data-person_identifier_orcid", "", - "person_identifier_orcid", "")), + + orgUnit_1.getID())), ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(author_2.getID().toString(), "Author 2", "Author 2", "vocabularyEntry", Map.of("data-oairecerif_author_affiliation", "OrgUnit_1::" + orgUnit_1.getID(), "oairecerif_author_affiliation", "OrgUnit_1::" - + orgUnit_1.getID(), - "data-person_identifier_orcid", "", - "person_identifier_orcid", "")), + + orgUnit_1.getID())), ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(author_3.getID().toString(), "Author 3", "Author 3", "vocabularyEntry", Map.of("data-oairecerif_author_affiliation", "OrgUnit_2::" + orgUnit_2.getID(), "oairecerif_author_affiliation", "OrgUnit_2::" - + orgUnit_2.getID(), - "data-person_identifier_orcid", "", - "person_identifier_orcid", "")) + + orgUnit_2.getID())) ))) .andExpect(jsonPath("$.page.totalElements", Matchers.is(3))); } @@ -185,9 +179,15 @@ public void alternativeNamesAuthorityTest() throws Exception { context.restoreAuthSystemState(); String author1Alternatives = "Author 1::" + author_1.getID() + "|||Author Variant::" + author_1.getID(); - Map author1Extras = Map.of("alternative-names", author1Alternatives); + Map author1Extras = Map.of( + "data-oairecerif_author_affiliation", "OrgUnit_1::" + orgUnit_1.getID(), + "oairecerif_author_affiliation", "OrgUnit_1::" + orgUnit_1.getID(), + "alternative-names", author1Alternatives); String author2Alternatives = "Author 2::" + author_2.getID() + "|||Author 2 Variant::" + author_2.getID(); - Map author2Extras = Map.of("alternative-names", author2Alternatives); + Map author2Extras = Map.of( + "data-oairecerif_author_affiliation", "OrgUnit_1::" + orgUnit_1.getID(), + "oairecerif_author_affiliation", "OrgUnit_1::" + orgUnit_1.getID(), + "alternative-names", author2Alternatives); String token = getAuthToken(eperson.getEmail(), password); getClient(token).perform(get("/api/submission/vocabularies/AuthorAuthority/entries") .param("metadata", "dc.contributor.author") @@ -200,7 +200,9 @@ public void alternativeNamesAuthorityTest() throws Exception { ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(author_2.getID().toString(), "Author 2", "Author 2", "vocabularyEntry", author2Extras), ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(author_3.getID().toString(), - "Author 3", "Author 3", "vocabularyEntry", Map.of()) + "Author 3", "Author 3", "vocabularyEntry", Map.of( + "data-oairecerif_author_affiliation", "OrgUnit_1::" + orgUnit_1.getID(), + "oairecerif_author_affiliation", "OrgUnit_1::" + orgUnit_1.getID())) ))) .andExpect(jsonPath("$.page.totalElements", Matchers.is(3))); } @@ -279,10 +281,10 @@ public void multiItemAuthorityTest() throws Exception { "oairecerif_author_affiliation", "OrgUnit_2::" + orgUnit_2.getID())), ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(author_1.getID().toString(), "Author 1", "Author 1", "vocabularyEntry", - Map.of("data-person_identifier_orcid", "", "person_identifier_orcid", "")), + Map.of()), ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(author_2.getID().toString(), "Author 2", "Author 2", "vocabularyEntry", - Map.of("data-person_identifier_orcid", "", "person_identifier_orcid", "")), + Map.of()), // filled with EditorAuthority extra metadata generator ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(author_1.getID().toString(), "Author 1", "Author 1", "vocabularyEntry", Map.of()), @@ -317,9 +319,7 @@ public void singleItemAuthorityWithoutOrgUnitTest() throws Exception { .andExpect(jsonPath("$._embedded.entries", Matchers.contains( ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(author_1.getID().toString(), "Author 1", "Author 1", "vocabularyEntry", - Map.of("data-oairecerif_author_affiliation", "", "oairecerif_author_affiliation", "", - "data-person_identifier_orcid", "", - "person_identifier_orcid", "")) + Map.of()) ))) .andExpect(jsonPath("$.page.totalElements", Matchers.is(1))); } diff --git a/dspace-server-webapp/src/test/java/org/dspace/app/rest/OrcidAuthorityIT.java b/dspace-server-webapp/src/test/java/org/dspace/app/rest/OrcidAuthorityIT.java index 62cc6b11c32..80c269b96f4 100644 --- a/dspace-server-webapp/src/test/java/org/dspace/app/rest/OrcidAuthorityIT.java +++ b/dspace-server-webapp/src/test/java/org/dspace/app/rest/OrcidAuthorityIT.java @@ -770,11 +770,10 @@ private Item buildPerson(String title, Item affiliation) { private Matcher affiliationEntry(Item item, String title, String otherInfoValue) { return ItemAuthorityMatcher.matchItemAuthorityWithOtherInformations(id(item), title, - title, "vocabularyEntry", Map.of( - "data-oairecerif_author_affiliation", otherInfoValue, - "oairecerif_author_affiliation", otherInfoValue, - "data-" + ORCID_INFO, "", - ORCID_INFO, "")); + title, "vocabularyEntry", + otherInfoValue.equals("") ? Map.of() : + Map.of("data-oairecerif_author_affiliation", otherInfoValue, + "oairecerif_author_affiliation", otherInfoValue)); } private Matcher orcidEntry(String title, String authorityPrefix, String orcid) {