(no commit message)
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / faunaEuropaea / FaunaEuropaeaImportBase.java
index f51fbf00bcb7f6b4876000e2a3cb048a30a67dfd..e171486192f5e4b2508a8eae69780ed887dec045 100644 (file)
@@ -15,6 +15,7 @@ import java.sql.SQLException;
 import java.util.Collection;\r
 import java.util.HashMap;\r
 import java.util.Map;\r
+import java.util.UUID;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.springframework.transaction.TransactionStatus;\r
@@ -32,7 +33,9 @@ import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
 \r
 /**\r
  * @author a.babadshanjan\r
@@ -112,73 +115,25 @@ implements ICdmImport<FaunaEuropaeaImportConfigurator,FaunaEuropaeaImportState>
        }\r
        \r
 \r
-       protected boolean saveTaxa(FaunaEuropaeaImportState state,\r
-                       int highestTaxonIndex, int limit) {\r
-\r
-               Map<String, MapWrapper<? extends CdmBase>> stores = state.getStores();\r
-               MapWrapper<TaxonBase> taxonStore = (MapWrapper<TaxonBase>)stores.get(ICdmIO.TAXON_STORE);\r
-               TransactionStatus txStatus = null;\r
-\r
-               int n = 0;\r
-               int nbrOfTaxa = highestTaxonIndex;\r
-//             int nbrOfTaxa = taxonStore.size();\r
-               boolean success = true;\r
-\r
-               if(logger.isInfoEnabled()) { logger.info("Saving taxa ..."); }\r
-\r
-               if (nbrOfTaxa < limit) {             // TODO: test with critical values\r
-                       limit = nbrOfTaxa;\r
-               } else {\r
-                       n = nbrOfTaxa / limit;\r
-               }\r
-\r
-               if(logger.isInfoEnabled()) { \r
-                       logger.info("number of taxa = " + taxonStore.size() \r
-                                       + ", highest taxon index = " + highestTaxonIndex \r
-                                       + ", limit = " + limit\r
-                                       + ", n = " + n); \r
-               }\r
-\r
-               // save taxa in blocks of <=limit\r
+       /**\r
+        * @param state\r
+        * @param sourceRef\r
+        */\r
+       protected TaxonomicTree getTaxonomicTreeFor(FaunaEuropaeaImportState state, ReferenceBase<?> sourceRef) {\r
                \r
-               for (int j = 1; j <= n + 1; j++)\r
-               {\r
-                       int offset = j - 1;\r
-                       int start = offset * limit;\r
-\r
-                       if(logger.isInfoEnabled()) { \r
-                               logger.info("Saving taxa: " + start + " - " + (start + limit - 1)); \r
-                       }\r
-\r
-                       if(logger.isInfoEnabled()) { \r
-                               logger.info("index = " + j \r
-                                               + ", offset = " + offset\r
-                                               + ", start = " + start); \r
-                       }\r
+               TaxonomicTree tree;\r
+               UUID treeUuid = state.getTreeUuid(sourceRef);\r
+               if (treeUuid == null){\r
+                       if(logger.isInfoEnabled()) { logger.info(".. creating new taxonomic tree"); }\r
                        \r
-                       if (j == n + 1) {\r
-                               limit = nbrOfTaxa - n * limit;\r
-                               if(logger.isInfoEnabled()) { \r
-                                       logger.info("n = " + n + ", limit = " + limit); \r
-                               }\r
-                       }\r
-\r
-               txStatus = startTransaction();\r
-                       if (state.getConfig().isUseTransactions()) {\r
-                               txStatus = startTransaction();\r
-                       }\r
-               \r
-                       Collection<TaxonBase> taxonMapPart = taxonStore.objects(start, limit);\r
-                       getTaxonService().saveTaxonAll(taxonMapPart);\r
-                       taxonMapPart = null;\r
-//                     taxonStore.removeObjects(start, limit);\r
+                       TransactionStatus txStatus = startTransaction();\r
+                       tree = makeTreeMemSave(state, sourceRef);\r
+                       commitTransaction(txStatus);\r
                        \r
-                       if (state.getConfig().isUseTransactions()) {\r
-                               commitTransaction(txStatus);\r
-                       }\r
-\r
+               } else {\r
+                       tree = getTaxonTreeService().getTaxonomicTreeByUuid(treeUuid);\r
                }\r
-               \r
-               return success;\r
+               return tree;\r
        }\r
+\r
 }\r