fix #7393: fix saving of new hybrid names in bulk editor
authorKatja Luther <k.luther@bgbm.org>
Mon, 14 May 2018 17:53:31 +0000 (19:53 +0200)
committerKatja Luther <k.luther@bgbm.org>
Mon, 14 May 2018 17:53:31 +0000 (19:53 +0200)
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/TaxonEditorInput.java

index 2a9f9d7ae28f442798913ec6d6cada6da0a1a58f..c90abbf6fd75133c98cc00f4db03ead1cb0928d4 100644 (file)
@@ -205,7 +205,7 @@ public abstract class AbstractBulkEditorInput<T extends CdmBase> extends CdmEnti
            }
            toDelete.clear();
            if (!saveCandidates.isEmpty()){
-            CdmStore.getService(saveCandidates.get(0)).merge(saveCandidates, true);
+               CdmStore.getService(saveCandidates.get(0)).merge(saveCandidates, true);
         }
            if(resetMerge){
                //merge entities
index ae0a2dbceda438d7a4ef84d6617b557d4566d552..207923f3130c306df2da6d265c0a3961c2a54a25 100644 (file)
@@ -17,6 +17,7 @@ import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.api.service.config.NameDeletionConfigurator;
+import eu.etaxonomy.cdm.model.name.HybridRelationship;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
@@ -145,6 +146,21 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonName> {
                List<String> propertyPaths = Arrays.asList(new String[]{});
                return CdmStore.getService(INameService.class).load(entityUuid, getPropertyPaths());
        }
+       @Override
+        public void addSaveCandidate(TaxonName name){
+           if (!name.getHybridChildRelations().isEmpty()){
+               for (HybridRelationship rel: name.getHybridChildRelations()){
+                   if (!rel.getParentName().isPersited()){
+                       super.addSaveCandidate(rel.getParentName());
+                   }
+                   if (!rel.getHybridName().isPersited()){
+                    super.addSaveCandidate(rel.getHybridName());
+                }
+               }
+           }
+
+        super.addSaveCandidate(name);
+    }
 
 
     private List<String> getPropertyPaths(){
index c8f402abb3e0fd52673e7af1979053607182609f..26c0a9a2932ac932aedddd1a49426818d3ad7699 100644 (file)
@@ -5,6 +5,7 @@ import java.util.Arrays;
 import java.util.List;\r
 import java.util.UUID;\r
 \r
+import eu.etaxonomy.cdm.api.service.INameService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
 import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;\r
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
@@ -12,6 +13,8 @@ import eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator;
 import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;\r
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;\r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
+import eu.etaxonomy.cdm.model.name.HybridRelationship;\r
+import eu.etaxonomy.cdm.model.name.TaxonName;\r
 import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -27,6 +30,7 @@ public class TaxonEditorInput extends AbstractBulkEditorInput<TaxonBase>{
        /** Constant <code>ID="bulkeditor.input.taxon"</code> */\r
        public static final String ID = "bulkeditor.input.taxon";\r
 \r
+       private List<TaxonName> saveNameCandidates = new ArrayList<>();\r
 \r
 \r
        /**\r
@@ -147,4 +151,26 @@ public class TaxonEditorInput extends AbstractBulkEditorInput<TaxonBase>{
 \r
     }\r
 \r
+    @Override\r
+    public void addSaveCandidate(TaxonBase taxonBase){\r
+       if (!taxonBase.getName().getHybridChildRelations().isEmpty()){\r
+           for (HybridRelationship rel: taxonBase.getName().getHybridChildRelations()){\r
+               if (!rel.getParentName().isPersited()){\r
+                   this.saveNameCandidates.add(rel.getParentName());\r
+               }\r
+               if (!rel.getHybridName().isPersited()){\r
+                   this.saveNameCandidates.add(rel.getHybridName());\r
+               }\r
+           }\r
+       }\r
+\r
+       super.addSaveCandidate(taxonBase);\r
+   }\r
+\r
+    @Override\r
+    public void saveModel(boolean resetMerge){\r
+        CdmStore.getService(INameService.class).save(this.saveNameCandidates);\r
+        super.saveModel(resetMerge);\r
+    }\r
+\r
 }\r