ref #5448 Fix saving of imported families
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / io / redlist / gefaesspflanzen / RedListGefaesspflanzenImportFamily.java
index 656b6d21a748068bdaf140ff79c50957310a487f..a097b7cc7fd82fde6ecf8f697ff6cffa179f3aee 100644 (file)
@@ -11,7 +11,9 @@ package eu.etaxonomy.cdm.io.redlist.gefaesspflanzen;
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.UUID;
 
@@ -24,6 +26,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.name.BotanicalName;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 
 /**
  *
@@ -60,14 +63,16 @@ public class RedListGefaesspflanzenImportFamily extends DbImportBase<RedListGefa
     @Override
     protected void doInvoke(RedListGefaesspflanzenImportState state) {
         try {
-            importFamilies(state);
+            Collection<TaxonBase> families = importFamilies(state);
+            getTaxonService().saveOrUpdate(families);
         } catch (SQLException e) {
             e.printStackTrace();
         }
     }
 
 
-    private void importFamilies(RedListGefaesspflanzenImportState state) throws SQLException {
+    private Collection<TaxonBase> importFamilies(RedListGefaesspflanzenImportState state) throws SQLException {
+        Collection<TaxonBase> families = new HashSet<TaxonBase>();
         Map<String, UUID> familyMapGL = new HashMap<>();
         Map<String, UUID> familyMapCL = new HashMap<>();
 
@@ -81,14 +86,16 @@ public class RedListGefaesspflanzenImportFamily extends DbImportBase<RedListGefa
             name.setGenusOrUninomial(familieStr);
             Taxon familyGL = Taxon.NewInstance(name, null);
             familyMapGL.put(familieStr, familyGL.getUuid());
-            getTaxonService().saveOrUpdate(familyGL);
             //clone for checkliste
-            Taxon familyCL = (Taxon) familyGL.clone();
+            Taxon familyCL = Taxon.NewInstance(name, null);
             familyMapCL.put(familieStr, familyCL.getUuid());
-            getTaxonService().save(familyCL);
+
+            families.add(familyGL);
+            families.add(familyCL);
         }
         state.setFamilyMapGesamtListe(familyMapGL);
         state.setFamilyMapCheckliste(familyMapCL);
+        return families;
     }
 
     @Override