toDeletes.clear();
for (Synonym syn: toSaveNewSynonyms){
- for (HybridRelationship rel : syn.getName().getHybridChildRelations()){
-// if (!rel.getParentName().isPersited()) {
+ if (syn.getName() != null){
+ for (HybridRelationship rel : syn.getName().getHybridChildRelations()){
toSaveNewNames.add(rel.getParentName());
-// }
-// if (!rel.getHybridName().isPersited()) {
- toSaveNewNames.add(rel.getHybridName());
-// }
+ toSaveNewNames.add(rel.getHybridName());
+ }
}
}
for (TaxonBase<?> concept: toSaveNewConcepts){
- for (HybridRelationship rel : concept.getName().getHybridChildRelations()){
-// if (!rel.getParentName().isPersited()) {
+ if (concept.getName() != null){
+ for (HybridRelationship rel : concept.getName().getHybridChildRelations()){
toSaveNewNames.add(rel.getParentName());
-// }
-// if (!rel.getHybridName().isPersited()) {
toSaveNewNames.add(rel.getHybridName());
-// }
+ }
}
}
-
+ //handle cascading for hybrid relationshis
+ //accepted taxa
+ if (taxonNode.getTaxon().getName() != null){
for (HybridRelationship rel : taxonNode.getTaxon().getName().getHybridChildRelations()){
-// if (!rel.getParentName().isPersited()) {
+ toSaveNewNames.add(rel.getParentName());
+ toSaveNewNames.add(rel.getHybridName());
+ }
+ }
+ //synonyms
+ for (TaxonName synonymName : taxonNode.getTaxon().getSynonymNames()){
+ if (synonymName != null){
+ for (HybridRelationship rel : synonymName.getHybridChildRelations()){
toSaveNewNames.add(rel.getParentName());
-// }
-// if (!rel.getHybridName().isPersited()) {
toSaveNewNames.add(rel.getHybridName());
-// }
+ }
}
+ }
if (!toSaveNewNames.isEmpty()){
CdmStore.getService(INameService.class).merge(toSaveNewNames, true);