(no commit message)
authorAndreas Müller <a.mueller@bgbm.org>
Tue, 24 Jun 2008 15:27:36 +0000 (15:27 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Tue, 24 Jun 2008 15:27:36 +0000 (15:27 +0000)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/berlinModel/BerlinModelFactsIO.java

index 01feed971f6fbb634b60398a79fa1f06ae497dfb..d2204e43181028f40d06f91998d3f77bcfa2e246 100644 (file)
@@ -5,19 +5,27 @@ package eu.etaxonomy.cdm.io.berlinModel;
 \r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
+import java.util.Collection;\r
+import java.util.HashMap;\r
 import java.util.HashSet;\r
+import java.util.Map;\r
 import java.util.Set;\r
 \r
 import org.apache.log4j.Logger;\r
 import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.*;\r
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
+import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
 import eu.etaxonomy.cdm.api.service.ITaxonService;\r
+import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.io.common.MapWrapper;\r
 import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
 import eu.etaxonomy.cdm.model.description.TextData;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
@@ -41,6 +49,54 @@ public class BerlinModelFactsIO {
                return result;\r
        }\r
 \r
+       private static Map<Integer, Feature> invokeFactCategories(BerlinModelImportConfigurator bmiConfig, CdmApplicationController cdmApp){\r
+               \r
+               Map<Integer, Feature> featureMap = new HashMap<Integer, Feature>();\r
+               IDescriptionService descriptionService = cdmApp.getDescriptionService();\r
+               ITermService termService = cdmApp.getTermService();\r
+\r
+               Source source = bmiConfig.getSource();\r
+\r
+               \r
+               try {\r
+                       //get data from database\r
+                       String strQuery = \r
+                                       " SELECT FactCategory.* " + \r
+                                       " FROM FactCategory "+\r
+                    " WHERE (1=1)";\r
+                       ResultSet rs = source.getResultSet(strQuery) ;\r
+\r
+                       int i = 0;\r
+                       //for each reference\r
+                       while (rs.next()){\r
+                               \r
+                               if ((i++ % modCount) == 0){ logger.info("FactCategories handled: " + (i-1));}\r
+                               \r
+                               int factCategoryId = rs.getInt("factCategoryId");\r
+                               String factCategory = rs.getString("factCategory");\r
+\r
+                               Feature feature = Feature.NewInstance(factCategory, factCategory, null);\r
+                               feature.setSupportsTextData(true);\r
+                               featureMap.put(factCategoryId, feature);\r
+\r
+                               //TODO\r
+//                             MaxFactNumber   int     Checked\r
+//                             ExtensionTableName      varchar(100)    Checked\r
+//                             Description     nvarchar(1000)  Checked\r
+//                             locExtensionFormName    nvarchar(80)    Checked\r
+//                             RankRestrictionFk       int     Checked\r
+       \r
+                       }\r
+                       Collection col = featureMap.values();\r
+                       termService.saveTermsAll(col);\r
+                       return featureMap;\r
+               } catch (SQLException e) {\r
+                       logger.error("SQLException:" +  e);\r
+                       return null;\r
+               }\r
+\r
+       }\r
+       \r
        public static boolean invoke(BerlinModelImportConfigurator bmiConfig, CdmApplicationController cdmApp, \r
                        MapWrapper<TaxonBase> taxonMap, MapWrapper<ReferenceBase> referenceMap){\r
                \r
@@ -53,8 +109,12 @@ public class BerlinModelFactsIO {
                \r
                logger.info("start makeFacts ...");\r
                \r
-               boolean delete = bmiConfig.isDeleteAll();\r
-\r
+               Map<Integer, Feature> featureMap = invokeFactCategories(bmiConfig, cdmApp);\r
+               \r
+               //FIXME for testing only\r
+               TaxonBase taxonBase = Taxon.NewInstance(BotanicalName.NewInstance(null), null);\r
+               \r
+               \r
                try {\r
                        //get data from database\r
                        String strQuery = \r
@@ -75,9 +135,11 @@ public class BerlinModelFactsIO {
                                int factRefFk = rs.getInt("factRefFk");\r
                                int ptDesignationRefFk = rs.getInt("PTDesignationRefFk");\r
                                int categoryFk = rs.getInt("factCategoryFk");\r
+                               String fact = rs.getString("Fact");\r
+                               //FIXME\r
+                               //TaxonBase taxonBase = taxonMap.get(taxonId);\r
                                \r
-                               TaxonBase taxonBase = taxonMap.get(taxonId);\r
-                               \r
+                               Feature feature = featureMap.get(categoryFk); \r
                                if (taxonBase != null){\r
                                        Taxon taxon;\r
                                        if ( taxonBase instanceof Taxon ) {\r
@@ -92,9 +154,10 @@ public class BerlinModelFactsIO {
                                        taxon.addDescription(taxonDescription);\r
                                        //textData\r
                                        TextData textData = TextData.NewInstance();\r
-                                       //TODO textData.putText("XXX", bmiConfig.getFactLanguage());  \r
+                                       //TODO textData.putText(fact, bmiConfig.getFactLanguage());  //doesn't work because  bmiConfig.getFactLanguage() is not not a persistent Language Object\r
                                        //throws  in thread "main" org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: eu.etaxonomy.cdm.model.common.Language; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: eu.etaxonomy.cdm.model.common.Language\r
-                                       textData.putText("XXX", Language.DEFAULT());\r
+                                       textData.putText(fact, Language.DEFAULT());\r
+                                       textData.setType(feature);\r
                                        taxonDescription.addElement(textData);\r
                                        \r
                                        //commonNames\r