package eu.etaxonomy.cdm.io.berlinModel;\r
\r
-import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer.*;\r
-import java.sql.ResultSet;\r
-import java.sql.SQLException;\r
-\r
-\r
import org.apache.log4j.Logger;\r
import org.springframework.stereotype.Service;\r
\r
import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
-import eu.etaxonomy.cdm.api.service.ITaxonService;\r
+import eu.etaxonomy.cdm.database.DataSourceNotFoundException;\r
import eu.etaxonomy.cdm.io.source.Source;\r
-import eu.etaxonomy.cdm.model.agent.Agent;\r
+import eu.etaxonomy.cdm.model.agent.Team;\r
+import eu.etaxonomy.cdm.model.common.init.TermNotFoundException;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.model.taxon.Synonym;\r
-import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import static eu.etaxonomy.cdm.io.berlinModel.BerlinModelImportConfigurator.DO_REFERENCES.*;\r
\r
@Service\r
public class BerlinModelImport {\r
private static final Logger logger = Logger.getLogger(BerlinModelImport.class);\r
\r
- private boolean deleteAll = false;\r
- \r
- private boolean makeAuthors = false;\r
- private boolean makeReferences = true;\r
- private boolean makeTaxonNames = true;\r
- private boolean makeTaxa = true;\r
- private boolean makeRelNames = false;\r
- private boolean makeNameStatus = false;\r
- private boolean makeRelTaxa = true;\r
- private boolean makeFacts = true;\r
- \r
- \r
- //BerlinModelDB\r
- private Source source;\r
- \r
- //CdmApplication\r
- private CdmApplicationController cdmApp;\r
- \r
//Constants\r
//final boolean OBLIGATORY = true; \r
//final boolean FACULTATIVE = false; \r
\r
//Hashmaps for Joins\r
//OLD: private Map<Integer, UUID> referenceMap = new HashMap<Integer, UUID>();\r
- private MapWrapper<Agent> authorStore= new MapWrapper<Agent>(null);\r
+ private MapWrapper<Team> authorStore= new MapWrapper<Team>(null);\r
private MapWrapper<ReferenceBase> referenceStore= new MapWrapper<ReferenceBase>(null);\r
private MapWrapper<TaxonNameBase> taxonNameStore = new MapWrapper<TaxonNameBase>(null);\r
private MapWrapper<TaxonBase> taxonStore = new MapWrapper<TaxonBase>(null);\r
/**\r
* Executes the whole \r
*/\r
- public boolean doImport(Source source, CdmApplicationController cdmApp){\r
- if (source == null || cdmApp == null){\r
- throw new NullPointerException("Source and CdmApplicationController must not be null");\r
+ public boolean doImport(BerlinModelImportConfigurator bmiConfig){\r
+ CdmApplicationController cdmApp;\r
+ if (bmiConfig == null){\r
+ logger.warn("BerlinModelImportConfiguration is null");\r
+ return false;\r
+ }else if (! bmiConfig.isValid()){\r
+ logger.warn("BerlinModelImportConfiguration is not valid");\r
+ return false;\r
+ }\r
+ try {\r
+ cdmApp = CdmApplicationController.NewInstance(bmiConfig.getDestination(), bmiConfig.getDbSchemaValidation());\r
+ } catch (DataSourceNotFoundException e) {\r
+ logger.warn("could not connect to destination database");\r
+ return false;\r
+ }catch (TermNotFoundException e) {\r
+ logger.warn("could not find needed term in destination datasource");\r
+ return false;\r
}\r
- this.source = source;\r
- this.cdmApp = cdmApp;\r
+ Source source = bmiConfig.getSource();\r
+ ReferenceBase sourceReference = bmiConfig.getSourceReference();\r
+ System.out.println("Start import from BerlinModel ("+ bmiConfig.getSource().getDatabase() + ") to Cdm (" + cdmApp.getDatabaseService().getUrl() + ") ...");\r
+ \r
\r
//Authors\r
- if (makeAuthors){\r
- if (! BerlinModelAuthorIO.invoke(source, cdmApp, deleteAll, authorStore)){\r
+ if (bmiConfig.isDoAuthors()){\r
+ if (! BerlinModelAuthorIO.invoke(bmiConfig, cdmApp, authorStore)){\r
logger.warn("No Authors imported");\r
return false;\r
}\r
}\r
\r
//References\r
- if (makeReferences){\r
- if (! BerlinModelReferenceIO.invoke(source, cdmApp, deleteAll, referenceStore, authorStore)){\r
+ if (bmiConfig.getDoReferences() != NONE){\r
+ if (! BerlinModelReferenceIO.invoke(bmiConfig, cdmApp, referenceStore, authorStore)){\r
return false;\r
}\r
}else{\r
}\r
\r
//TaxonNames\r
- if (makeTaxonNames){\r
- if (! BerlinModelTaxonNameIO.invoke(source, cdmApp, deleteAll, taxonNameStore, referenceStore, authorStore)){\r
+ if (bmiConfig.isDoTaxonNames()){\r
+ if (! BerlinModelTaxonNameIO.invoke(bmiConfig, cdmApp, taxonNameStore, referenceStore, authorStore)){\r
//return false;\r
}\r
}else{\r
logger.warn("No TaxonNames imported");\r
taxonNameStore = null;\r
}\r
+\r
+ \r
+ //make and save RelNames\r
+ if(bmiConfig.isDoRelNames()){\r
+ if (! BerlinModelTaxonNameIO.invokeRelations(bmiConfig, cdmApp, taxonNameStore, referenceStore)){\r
+ return false;\r
+ }\r
+ }else{\r
+ logger.warn("No RelPTaxa imported");\r
+ }\r
+\r
+ //TODO NomStatus\r
+ //TODO Types\r
\r
//make and save Taxa\r
- if(makeTaxa){\r
- if (! BerlinModelTaxonIO.invoke(source, cdmApp, deleteAll, taxonStore, taxonNameStore, referenceStore)){\r
+ if(bmiConfig.isDoTaxa()){\r
+ if (! BerlinModelTaxonIO.invoke(bmiConfig, cdmApp, taxonStore, taxonNameStore, referenceStore)){\r
return false;\r
}\r
}else{\r
}\r
\r
//make and save RelPTaxa\r
- if(makeRelTaxa){\r
- if (! BerlinModelTaxonIO.invokeRelations(source, cdmApp, deleteAll, taxonStore, referenceStore)){\r
+ if(bmiConfig.isDoRelTaxa()){\r
+ if (! BerlinModelTaxonIO.invokeRelations(bmiConfig, cdmApp, taxonStore, referenceStore)){\r
return false;\r
}\r
}else{\r
logger.warn("No RelPTaxa imported");\r
}\r
-\r
- \r
- //make and save Facts\r
- //makeRelTaxa();\r
\r
//make and save Facts\r
- if(makeFacts){\r
- if (! BerlinModelFactsIO.invoke(source, cdmApp, deleteAll, taxonStore, referenceStore)){\r
+ if(bmiConfig.isDoFacts()){\r
+ if (! BerlinModelFactsIO.invoke(bmiConfig, cdmApp, taxonStore, referenceStore)){\r
return false;\r
}\r
}else{\r
}\r
\r
//return\r
+ System.out.println("End import from BerlinModel ("+ source.getDatabase() + ") to Cdm (" + cdmApp.getDatabaseService().getUrl() + ") ...");\r
return true;\r
}\r
\r