1111import java .util .Optional ;
1212import java .util .Set ;
1313
14+ import io .swagger .model .IndexPagination ;
1415import org .brapi .test .BrAPITestServer .exceptions .BrAPIServerDbIdNotFoundException ;
1516import org .brapi .test .BrAPITestServer .exceptions .BrAPIServerException ;
1617import org .brapi .test .BrAPITestServer .model .entity .germ .CrossingProjectEntity ;
@@ -484,15 +485,21 @@ private void updateEntityWithEdges(PedigreeNodeEntity entity, PedigreeNode node)
484485 UpdateUtility .updateEntity (node , entity );
485486 updateEntity (entity , node );
486487 if (node .getParents () != null ) {
487-
488- List <String > edgeIdsToDelete = new ArrayList <>();
488+
489+ SearchQueryBuilder <PedigreeEdgeEntity > search = new SearchQueryBuilder <PedigreeEdgeEntity >(PedigreeEdgeEntity .class );
490+ search .appendSingle (node .getGermplasmDbId (), "conncetedNode.germplasm.id" );
491+ search .appendEnum (PedigreeEdgeEntity .EdgeType .child , "edgeType" );
492+ Pageable defaultPageSize = PagingUtility .getPageRequest (new Metadata ().pagination (new IndexPagination ().pageSize (10000000 )));
493+ Page <PedigreeEdgeEntity > existingParentEdges = pedigreeEdgeRepository .findAllBySearch (search , defaultPageSize );
494+
495+ List <String > edgeIdsToDelete = new ArrayList <>();
489496 edgeIdsToDelete .addAll (entity .getParentEdges ().stream ().map (e -> e .getId ()).collect (Collectors .toList ()));
490- edgeIdsToDelete .addAll (entity .getParentNodes ().stream ().flatMap (parent -> parent .getProgenyEdges ().stream ())
491- .filter (childEdge -> childEdge .getConncetedNode ().equals (entity ))
492- .map (e -> e .getId ()).collect (Collectors .toList ()));
497+ edgeIdsToDelete .addAll (existingParentEdges .getContent ().stream ().map (e -> e .getId ()).collect (Collectors .toList ()));
493498
494- pedigreeEdgeRepository .deleteAllByIdInBatch (edgeIdsToDelete );
495- pedigreeEdgeRepository .flush ();
499+ if (!edgeIdsToDelete .isEmpty ()) {
500+ pedigreeEdgeRepository .deleteAllByIdInBatch (edgeIdsToDelete );
501+ pedigreeEdgeRepository .flush ();
502+ }
496503
497504 for (PedigreeNodeParents parentNode : node .getParents ()) {
498505 PedigreeNodeEntity parentEntity = findOrCreatePedigreeNode (parentNode .getGermplasmDbId ());
@@ -501,15 +508,21 @@ private void updateEntityWithEdges(PedigreeNodeEntity entity, PedigreeNode node)
501508 }
502509 }
503510 if (node .getProgeny () != null ) {
504-
505- List <String > edgeIdsToDelete = new ArrayList <>();
511+
512+ SearchQueryBuilder <PedigreeEdgeEntity > search = new SearchQueryBuilder <PedigreeEdgeEntity >(PedigreeEdgeEntity .class );
513+ search .appendSingle (node .getGermplasmDbId (), "conncetedNode.germplasm.id" );
514+ search .appendEnum (PedigreeEdgeEntity .EdgeType .parent , "edgeType" );
515+ Pageable defaultPageSize = PagingUtility .getPageRequest (new Metadata ().pagination (new IndexPagination ().pageSize (10000000 )));
516+ Page <PedigreeEdgeEntity > existingProgenyEdges = pedigreeEdgeRepository .findAllBySearch (search , defaultPageSize );
517+
518+ List <String > edgeIdsToDelete = new ArrayList <>();
506519 edgeIdsToDelete .addAll (entity .getProgenyEdges ().stream ().map (e -> e .getId ()).collect (Collectors .toList ()));
507- edgeIdsToDelete .addAll (entity .getProgenyNodes ().stream ().flatMap (progeny -> progeny .getParentEdges ().stream ())
508- .filter (parentEdge -> parentEdge .getConncetedNode ().equals (entity ))
509- .map (e -> e .getId ()).collect (Collectors .toList ()));
520+ edgeIdsToDelete .addAll (existingProgenyEdges .getContent ().stream ().map (e -> e .getId ()).collect (Collectors .toList ()));
510521
511- pedigreeEdgeRepository .deleteAllByIdInBatch (edgeIdsToDelete );
512- pedigreeEdgeRepository .flush ();
522+ if (!edgeIdsToDelete .isEmpty ()) {
523+ pedigreeEdgeRepository .deleteAllByIdInBatch (edgeIdsToDelete );
524+ pedigreeEdgeRepository .flush ();
525+ }
513526
514527 for (PedigreeNodeParents childNode : node .getProgeny ()) {
515528 PedigreeNodeEntity childEntity = findOrCreatePedigreeNode (childNode .getGermplasmDbId ());
0 commit comments