diff --git a/doc/release-notes/8724-display-child-datasets-of-linked-dv.md b/doc/release-notes/8724-display-child-datasets-of-linked-dv.md new file mode 100644 index 00000000000..5b1b9c8ae20 --- /dev/null +++ b/doc/release-notes/8724-display-child-datasets-of-linked-dv.md @@ -0,0 +1,14 @@ +Datasets that are part of linked dataverse collections will now be displayed in +their linking dataverse collections. In order to fix the display of collections +that have already been linked you must re-index the linked collections. This +query will provide a list of commands to re-index the effected collections: + +select 'curl http://localhost:8080/api/admin/index/dataverses/' +|| tmp.dvid from (select distinct dataverse_id as dvid +from dataverselinkingdataverse) as tmp + +The result of the query will be a list of re-index commands such as: + +curl http://localhost:8080/api/admin/index/dataverses/633 + +where '633' is the id of the linked collection. diff --git a/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java index e2f2b3adcfd..e73cce8acbe 100644 --- a/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java @@ -1497,6 +1497,7 @@ private List findAllLinkingDataverses(DvObject dvObject){ dataset = (Dataset) dvObject; linkingDataverses = dsLinkingService.findLinkingDataverses(dataset.getId()); ancestorList = dataset.getOwner().getOwners(); + ancestorList.add(dataset.getOwner()); //to show dataset in linking dv when parent dv is linked } if(dvObject.isInstanceofDataverse()){ dv = (Dataverse) dvObject; @@ -1661,6 +1662,11 @@ private List retrieveDVOPaths(DvObject dvo) { logger.info("failed to find dataverseSegments for dataversePaths for " + SearchFields.SUBTREE + ": " + ex); } List dataversePaths = getDataversePathsFromSegments(dataverseSegments); + if (dataversePaths.size() > 0 && dvo.isInstanceofDataverse()) { + // removing the dataverse's own id from the paths + // fixes bug where if my parent dv was linked my dv was shown as linked to myself + dataversePaths.remove(dataversePaths.size() - 1); + } /* add linking paths */ diff --git a/src/test/java/edu/harvard/iq/dataverse/api/LinkIT.java b/src/test/java/edu/harvard/iq/dataverse/api/LinkIT.java index 9ac2d2cb7e5..76e9b7d6bc8 100644 --- a/src/test/java/edu/harvard/iq/dataverse/api/LinkIT.java +++ b/src/test/java/edu/harvard/iq/dataverse/api/LinkIT.java @@ -170,15 +170,6 @@ public void testDeepLinks() { .body("data.total_count", equalTo(1)) .body("data.items[0].name", equalTo(level1a)); - /** - * Remove this early return when you are ready to work on - * https://github.com/IQSS/dataverse/issues/7430 about strange linking - * behavior. - */ - if (true) { - return; - } - Response createLevel2a = UtilIT.createSubDataverse(UtilIT.getRandomDvAlias() + "-level2a", null, apiToken, level1a); createLevel2a.prettyPrint(); String level2a = UtilIT.getAliasFromResponse(createLevel2a);