fauna europaea import fix
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / faunaEuropaea / FaunaEuropaeaRelTaxonIncludeImport.java
index 0ece881ef583502e7a460b3edfcb169b9634094a..49bb1bde5e07d3c553922f0eaa58d43a37c5aa84 100644 (file)
@@ -152,7 +152,8 @@ public class FaunaEuropaeaRelTaxonIncludeImport extends FaunaEuropaeaImportBase
                                " SELECT dbo.Taxon.UUID AS ChildUuid, Parent.UUID AS ParentUuid " +\r
                                " FROM dbo.Taxon INNER JOIN dbo.Taxon AS Parent " +\r
                                " ON dbo.Taxon.TAX_TAX_IDPARENT = Parent.TAX_ID " +\r
-                               " WHERE (dbo.Taxon.TAX_VALID <> 0) AND (dbo.Taxon.TAX_AUT_ID <> " + A_AUCT + ")";\r
+                               " WHERE (dbo.Taxon.TAX_VALID <> 0) AND (dbo.Taxon.TAX_AUT_ID <> " + A_AUCT + ")" +\r
+                               " ORDER BY dbo.Taxon.TAX_RNK_ID ASC";\r
 \r
                        if (logger.isInfoEnabled()) {\r
                                logger.info("Query: " + strQuery);\r
@@ -162,9 +163,13 @@ public class FaunaEuropaeaRelTaxonIncludeImport extends FaunaEuropaeaImportBase
                        \r
                        while (rs.next()) {\r
                                \r
+                               // take memory snapshot every 10000 relations\r
+                               if((i % 10000) == 0){\r
+                                       ProfilerController.memorySnapshot();                                    \r
+                               }\r
+                               \r
                                if ((i++ % limit) == 0) { \r
                                        \r
-                                       ProfilerController.memorySnapshot();\r
                                        txStatus = startTransaction();\r
                                        childParentMap = new HashMap<UUID, UUID>(limit);\r
                                        \r
@@ -241,11 +246,14 @@ public class FaunaEuropaeaRelTaxonIncludeImport extends FaunaEuropaeaImportBase
                boolean success = true;\r
 \r
                        //add tree to new session\r
-                       TaxonomicTree tree = state.getTree(sourceRef);\r
-                       if (tree == null){\r
-                               tree = makeTree(state, sourceRef);\r
+               \r
+                       UUID treeUuid = state.getTreeUuid(sourceRef);\r
+                       TaxonomicTree tree;\r
+                       if (treeUuid == null){\r
+                               tree = makeTreeMemSave(state, sourceRef);\r
+                       } else {\r
+                               tree = getTaxonService().getTaxonomicTreeByUuid(treeUuid);                      \r
                        }\r
-                       getTaxonService().saveTaxonomicTree(tree);\r
                        \r
                        Set<TaxonBase> childSet = new HashSet<TaxonBase>(limit);\r
                        \r
@@ -257,7 +265,7 @@ public class FaunaEuropaeaRelTaxonIncludeImport extends FaunaEuropaeaImportBase
                        }\r
                        List<TaxonBase> children = getTaxonService().findByUuid(childKeysSet);\r
                        List<TaxonBase> parents = getTaxonService().findByUuid(parentValuesSet);\r
-                       Map<UUID, TaxonBase> parentsMap = new HashMap<UUID, TaxonBase>();\r
+                       Map<UUID, TaxonBase> parentsMap = new HashMap<UUID, TaxonBase>(parents.size());\r
                        for (TaxonBase taxonBase : parents){\r
                                parentsMap.put(taxonBase.getUuid(), taxonBase);\r
                        }\r