@@ -551,28 +551,30 @@ public List<Dataverse> filterDataversesForLinking(String query, DataverseRequest
551551 return dataverseList ;
552552 }
553553
554- public List <Dataverse > removeUnlinkableDataverses (List <Dataverse > allWithPerms , DvObject dvo ) {
554+ public List <Dataverse > removeUnlinkableDataverses (List <Dataverse > allWithPerms , DvObject dvo , boolean removeAlreadyLinked ) {
555555 List <Dataverse > dataverseList = new ArrayList <>();
556556 Dataset linkedDataset = null ;
557557 Dataverse linkedDataverse = null ;
558- List <Object > alreadyLinkeddv_ids ;
559-
560- if ((dvo instanceof Dataset )) {
561- linkedDataset = (Dataset ) dvo ;
562- alreadyLinkeddv_ids = em .createNativeQuery ("SELECT linkingdataverse_id FROM datasetlinkingdataverse WHERE dataset_id = " + linkedDataset .getId ()).getResultList ();
563- } else {
564- linkedDataverse = (Dataverse ) dvo ;
565- alreadyLinkeddv_ids = em .createNativeQuery ("SELECT linkingdataverse_id FROM dataverselinkingdataverse WHERE dataverse_id = " + linkedDataverse .getId ()).getResultList ();
566- }
567558
568559 List <Dataverse > remove = new ArrayList <>();
569560
570- if (alreadyLinkeddv_ids != null && !alreadyLinkeddv_ids .isEmpty ()) {
571- alreadyLinkeddv_ids .stream ().map ((testDVId ) -> this .find (testDVId )).forEachOrdered ((removeIt ) -> {
572- remove .add (removeIt );
573- });
561+ if (removeAlreadyLinked ) {
562+ List <Object > alreadyLinkeddv_ids ;
563+
564+ if ((dvo instanceof Dataset )) {
565+ linkedDataset = (Dataset ) dvo ;
566+ alreadyLinkeddv_ids = em .createNativeQuery ("SELECT linkingdataverse_id FROM datasetlinkingdataverse WHERE dataset_id = " + linkedDataset .getId ()).getResultList ();
567+ } else {
568+ linkedDataverse = (Dataverse ) dvo ;
569+ alreadyLinkeddv_ids = em .createNativeQuery ("SELECT linkingdataverse_id FROM dataverselinkingdataverse WHERE dataverse_id = " + linkedDataverse .getId ()).getResultList ();
570+ }
571+
572+ if (alreadyLinkeddv_ids != null && !alreadyLinkeddv_ids .isEmpty ()) {
573+ alreadyLinkeddv_ids .stream ().map ((testDVId ) -> this .find (testDVId )).forEachOrdered ((removeIt ) -> {
574+ remove .add (removeIt );
575+ });
576+ }
574577 }
575-
576578
577579 if (dvo instanceof Dataverse dataverse ) {
578580 remove .add (dataverse );
@@ -596,8 +598,11 @@ public List<Dataverse> removeUnlinkableDataverses(List<Dataverse> allWithPerms,
596598
597599 return dataverseList ;
598600 }
599-
600-
601+
602+ public List <Dataverse > removeUnlinkableDataverses (List <Dataverse > allWithPerms , DvObject dvo ) {
603+ return removeUnlinkableDataverses (allWithPerms , dvo , true );
604+ }
605+
601606 public List <Dataverse > filterDataversesForUnLinking (String query , DataverseRequest req , Dataset dataset ) {
602607 List <Object > alreadyLinkeddv_ids = em .createNativeQuery ("SELECT linkingdataverse_id FROM datasetlinkingdataverse WHERE dataset_id = " + dataset .getId ()).getResultList ();
603608 List <Dataverse > dataverseList = new ArrayList <>();
0 commit comments