fix #9360: fix saving of synonyms being hybrid formulas, some potential NPEs and...
authorAndreas Müller <a.mueller@bgbm.org>
Tue, 26 Jan 2021 23:04:48 +0000 (00:04 +0100)
committerAndreas Müller <a.mueller@bgbm.org>
Tue, 26 Jan 2021 23:04:48 +0000 (00:04 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/e4/TaxonEditorInputE4.java

index d1027e247db7eaf49786014f26b6fb57c82aa877..f5b7edd8174c70788548020b01d1c2f1bff78963 100644 (file)
@@ -364,36 +364,40 @@ public class TaxonEditorInputE4  extends CdmEntitySessionInput<TaxonNode>
         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);