(no commit message)
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / faunaEuropaea / FaunaEuropaeaImportBase.java
index 01aff22ae3a7350c52c483f2e04b1fadb6543fae..e171486192f5e4b2508a8eae69780ed887dec045 100644 (file)
@@ -12,31 +12,48 @@ package eu.etaxonomy.cdm.io.faunaEuropaea;
 import java.sql.ResultSet;\r
 import java.sql.ResultSetMetaData;\r
 import java.sql.SQLException;\r
+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
 \r
 import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.io.common.CdmImportBase;\r
 import eu.etaxonomy.cdm.io.common.CdmIoBase;\r
 import eu.etaxonomy.cdm.io.common.ICdmIO;\r
+import eu.etaxonomy.cdm.io.common.ICdmImport;\r
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
 import eu.etaxonomy.cdm.io.common.ImportHelper;\r
+import eu.etaxonomy.cdm.io.common.MapWrapper;\r
 import eu.etaxonomy.cdm.io.common.Source;\r
 import eu.etaxonomy.cdm.model.common.Annotation;\r
+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
  * @created 11.05.2009\r
  * @version 1.0\r
  */\r
-public abstract class FaunaEuropaeaImportBase extends CdmIoBase<FaunaEuropeaImportState> implements ICdmIO<FaunaEuropeaImportState> {\r
+public abstract class FaunaEuropaeaImportBase extends CdmImportBase<FaunaEuropaeaImportConfigurator, FaunaEuropaeaImportState> \r
+implements ICdmImport<FaunaEuropaeaImportConfigurator,FaunaEuropaeaImportState> {\r
        private static final Logger logger = Logger.getLogger(FaunaEuropaeaImportBase.class);\r
        \r
-       public FaunaEuropaeaImportBase() {\r
-       }\r
+//     /* Max number of taxa to retrieve (for test purposes) */\r
+//     protected static final int maxTaxa = 1000;\r
+//     /* Max number of taxa to be saved with one service call */\r
+//     protected int limit = 20000; // TODO: Make configurable\r
+//     /* Interval for progress info message when retrieving taxa */\r
+//     protected static final int modCount = 10000;\r
+//     /* Highest taxon index in the FauEu database */\r
+//     protected int highestTaxonIndex = 0;\r
        \r
        protected boolean resultSetHasColumn(ResultSet rs, String columnName){\r
                try {\r
@@ -97,4 +114,26 @@ public abstract class FaunaEuropaeaImportBase extends CdmIoBase<FaunaEuropeaImpo
                }\r
        }\r
        \r
+\r
+       /**\r
+        * @param state\r
+        * @param sourceRef\r
+        */\r
+       protected TaxonomicTree getTaxonomicTreeFor(FaunaEuropaeaImportState state, ReferenceBase<?> sourceRef) {\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
+                       TransactionStatus txStatus = startTransaction();\r
+                       tree = makeTreeMemSave(state, sourceRef);\r
+                       commitTransaction(txStatus);\r
+                       \r
+               } else {\r
+                       tree = getTaxonTreeService().getTaxonomicTreeByUuid(treeUuid);\r
+               }\r
+               return tree;\r
+       }\r
+\r
 }\r