1515import org .brapi .test .BrAPITestServer .exceptions .BrAPIServerException ;
1616import org .brapi .test .BrAPITestServer .model .entity .germ .CrossingProjectEntity ;
1717import org .brapi .test .BrAPITestServer .model .entity .germ .GermplasmEntity ;
18+ import org .brapi .test .BrAPITestServer .model .entity .germ .PedigreeEdgeEntity ;
19+ import org .brapi .test .BrAPITestServer .model .entity .germ .PedigreeEdgeEntity .EdgeType ;
1820import org .brapi .test .BrAPITestServer .model .entity .germ .PedigreeNodeEntity ;
1921import org .brapi .test .BrAPITestServer .repository .germ .PedigreeRepository ;
2022import org .brapi .test .BrAPITestServer .service .PagingUtility ;
@@ -415,14 +417,31 @@ private PedigreeNode convertFromEntity(PedigreeNodeEntity entity, PedigreeSearch
415417 }
416418 return node ;
417419 }
418-
420+
419421 static public String getPedigreeString (PedigreeNodeEntity entity ) {
420- if (entity .getPedigreeString () == null && entity .getParentEdges () != null
421- && !entity .getParentEdges ().isEmpty ()) {
422- List <PedigreeNodeEntity > parents = entity .getParentNodes ();
423- String pedStr = parents .get (0 ).getGermplasm ().getGermplasmName ();
424- for (int i = 1 ; i < parents .size (); i ++) {
425- pedStr += "/" + parents .get (i ).getGermplasm ().getGermplasmName ();
422+ if (entity .getPedigreeString () == null || entity .getPedigreeString ().isEmpty ()) {
423+ String pedStr = "" ;
424+ if (entity .getParentEdges () != null && !entity .getParentEdges ().isEmpty ()) {
425+ Optional <PedigreeNodeEntity > mother = entity .getParentEdges ().stream ()
426+ .filter (parentEdge -> {return ParentType .FEMALE == parentEdge .getParentType ();})
427+ .map (PedigreeEdgeEntity ::getConncetedNode )
428+ .findFirst ();
429+ Optional <PedigreeNodeEntity > father = entity .getParentEdges ().stream ()
430+ .filter (parentEdge -> {return ParentType .MALE == parentEdge .getParentType ();})
431+ .map (PedigreeEdgeEntity ::getConncetedNode )
432+ .findFirst ();
433+
434+ if (mother .isPresent ()) {
435+ pedStr += mother .get ().getGermplasm ().getGermplasmName () + "/" ;
436+ }else {
437+ pedStr += "Unknown/" ;
438+ }
439+
440+ if (father .isPresent ()) {
441+ pedStr += father .get ().getGermplasm ().getGermplasmName ();
442+ }else {
443+ pedStr += "Unknown" ;
444+ }
426445 }
427446 return pedStr ;
428447 } else {
@@ -431,6 +450,11 @@ static public String getPedigreeString(PedigreeNodeEntity entity) {
431450 }
432451
433452 private void updateEntity (PedigreeNodeEntity entity , PedigreeNode node ) throws BrAPIServerException {
453+ if (node .getGermplasmDbId () != null && entity .getGermplasm () == null ) {
454+ GermplasmEntity germplasm = germplasmService .getGermplasmEntity (node .getGermplasmDbId ());
455+ entity .setGermplasm (germplasm );
456+ }
457+
434458 UpdateUtility .updateEntity (node , entity );
435459
436460 if (node .getCrossingYear () != null )
@@ -445,10 +469,6 @@ private void updateEntity(PedigreeNodeEntity entity, PedigreeNode node) throws B
445469 .getCrossingProjectEntity (node .getCrossingProjectDbId ());
446470 entity .setCrossingProject (crossingProject );
447471 }
448- if (node .getGermplasmDbId () != null ) {
449- GermplasmEntity germplasm = germplasmService .getGermplasmEntity (node .getGermplasmDbId ());
450- entity .setGermplasm (germplasm );
451- }
452472 }
453473
454474 private void updateEntityWithEdges (PedigreeNodeEntity entity , PedigreeNode node ) throws BrAPIServerException {
@@ -494,12 +514,15 @@ public PedigreeNode convertFromGermplasmToPedigree(Germplasm germplasm) {
494514 }
495515 }
496516
517+ node .setAdditionalInfo (germplasm .getAdditionalInfo ());
497518 node .setBreedingMethodDbId (germplasm .getBreedingMethodDbId ());
498519 node .setBreedingMethodName (germplasm .getBreedingMethodName ());
499520 node .setDefaultDisplayName (germplasm .getDefaultDisplayName ());
521+ node .setExternalReferences (germplasm .getExternalReferences ());
500522 node .setGermplasmDbId (germplasm .getGermplasmDbId ());
501523 node .setGermplasmName (germplasm .getGermplasmName ());
502524 node .setGermplasmPUI (germplasm .getGermplasmPUI ());
525+ node .setPedigreeString (germplasm .getPedigree ());
503526
504527 if (motherOpt .isPresent ()) {
505528 PedigreeNodeParents mother = new PedigreeNodeParents ();
0 commit comments