\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
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
\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
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
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