import org.apache.log4j.Logger;\r
\r
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;\r
+import eu.etaxonomy.cdm.api.service.ITermService;\r
import eu.etaxonomy.cdm.app.common.CdmDestinations;\r
import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.io.algaterra.AlgaTerraImportConfigurator;\r
+import eu.etaxonomy.cdm.io.algaterra.AlgaTerraImportTransformer;\r
+import eu.etaxonomy.cdm.io.algaterra.AlgaTerraSpecimenImportBase;\r
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator;\r
import eu.etaxonomy.cdm.io.common.CdmDefaultImport;\r
import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;\r
import eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES;\r
+import eu.etaxonomy.cdm.io.common.IImportConfigurator.EDITOR;\r
import eu.etaxonomy.cdm.io.common.Source;\r
import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.description.FeatureNode;\r
//database validation status (create, update, validate ...)\r
static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE;\r
static final Source berlinModelSource = BerlinModelSources.AlgaTerra();\r
- static final ICdmDataSource cdmDestination = CdmDestinations.localH2();\r
+// static final ICdmDataSource cdmDestination = CdmDestinations.localH2();\r
+ static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql();\r
+\r
// static final ICdmDataSource cdmDestination = CdmDestinations.cdm_algaterra_preview();\r
+// static final ICdmDataSource cdmDestination = CdmDestinations.cdm_algaterra_production();\r
+ \r
\r
static final UUID treeUuid = UUID.fromString("1f617402-78dc-4bf1-ac77-d260600a8879");\r
static final int sourceSecId = 7331;\r
+ static final UUID sourceRefUuid = UUID.fromString("7e1a2500-93a5-40c2-ba34-0213d7822379");\r
\r
static final UUID featureTreeUuid = UUID.fromString("a970168a-36fd-4c7c-931e-87214a965c14");\r
- static final Object[] featureKeyList = new Integer[]{7,201,202,203,204,205,206,207}; \r
+ static final Object[] featureKeyList = new Integer[]{7,201,203,204,206,207}; \r
+ static final UUID specimenFeatureTreeUuid = UUID.fromString("ba86246e-d4d0-419f-832e-86d70b1e4bd7");\r
+ \r
+ static final boolean loginAsDefaultAdmin = true;\r
+ static final boolean removeRestricted = true;\r
+ \r
+ static final boolean importOriginalSizeMedia = false;\r
\r
//check - import\r
- static final CHECK check = CHECK.CHECK_AND_IMPORT;\r
+ static final CHECK check = CHECK.IMPORT_WITHOUT_CHECK;\r
\r
+ private boolean ignoreNull = true;\r
+ \r
+ private boolean includeFlatClassifications = true;\r
+ private boolean includeAllNonMisappliedRelatedClassifications = true;\r
+ \r
+ private EDITOR editor = EDITOR.EDITOR_AS_EDITOR;\r
\r
//NomeclaturalCode\r
- static final NomenclaturalCode nomenclaturalCode = NomenclaturalCode.ICBN;\r
-\r
+ static final NomenclaturalCode nomenclaturalCode = NomenclaturalCode.ICNAFP;\r
+ \r
+ static String factFilter = " factCategoryFk NOT IN (7, 201, 202, 203, 204, 205, 206, 207, 208, 1000 ) ";\r
+ \r
+ \r
// ****************** ALL *****************************************\r
\r
//authors\r
static final boolean doTaxonNames = true;\r
static final boolean doRelNames = true;\r
static final boolean doNameStatus = true;\r
- static final boolean doTypes = false; \r
- static final boolean doNameFacts = false; //do not exist in Alga Terra\r
+ static final boolean doTypes = true; \r
\r
//taxa\r
static final boolean doTaxa = true;\r
static final boolean doRelTaxa = true;\r
static final boolean doFacts = true;\r
- static final boolean doOccurences = false;\r
- static final boolean doCommonNames = false; //do not exist in Alga Terra\r
+ \r
+ //alga terra specific\r
+ static final boolean ecoFacts = true;\r
+ static final boolean doFactEcology = true;\r
+ static final boolean doImages = false;\r
+ static final boolean doDna = true;\r
+ static final boolean doMorphology = true;\r
\r
// ************************ NONE **************************************** //\r
\r
// static final boolean doTaxa = false;\r
// static final boolean doRelTaxa = false;\r
// static final boolean doFacts = false;\r
-// static final boolean doOccurences = false;\r
-// static final boolean doCommonNames = false;\r
+// \r
+// //alga terra specific\r
+// static final boolean ecoFacts = true;\r
+// static final boolean doFactEcology = false;\r
+// static final boolean doImages = false;\r
+// static final boolean doDna = false;\r
+// static final boolean doMorphology = true;\r
\r
\r
public void invoke(String[] args){\r
Source source = berlinModelSource;\r
ICdmDataSource destination = CdmDestinations.chooseDestination(args) != null ? CdmDestinations.chooseDestination(args) : cdmDestination;\r
\r
- BerlinModelImportConfigurator bmImportConfigurator = BerlinModelImportConfigurator.NewInstance(source, destination);\r
+ AlgaTerraImportConfigurator config = AlgaTerraImportConfigurator.NewInstance(source, destination);\r
\r
- bmImportConfigurator.setClassificationUuid(treeUuid);\r
- bmImportConfigurator.setSourceSecId(sourceSecId);\r
- bmImportConfigurator.setNomenclaturalCode(nomenclaturalCode);\r
+ config.setClassificationUuid(treeUuid);\r
+ config.setSourceSecId(sourceSecId);\r
+ config.setNomenclaturalCode(nomenclaturalCode);\r
\r
- bmImportConfigurator.setDoAuthors(doAuthors);\r
- bmImportConfigurator.setDoReferences(doReferences);\r
- bmImportConfigurator.setDoTaxonNames(doTaxonNames);\r
- bmImportConfigurator.setDoRelNames(doRelNames);\r
- bmImportConfigurator.setDoNameStatus(doNameStatus);\r
- bmImportConfigurator.setDoTypes(doTypes);\r
- bmImportConfigurator.setDoNameFacts(doNameFacts);\r
+ config.setDoAuthors(doAuthors);\r
+ config.setDoReferences(doReferences);\r
+ config.setDoTaxonNames(doTaxonNames);\r
+ config.setDoRelNames(doRelNames);\r
+ config.setDoNameStatus(doNameStatus);\r
+ config.setDoTypes(doTypes);\r
\r
- bmImportConfigurator.setDoTaxa(doTaxa);\r
- bmImportConfigurator.setDoRelTaxa(doRelTaxa);\r
- bmImportConfigurator.setDoFacts(doFacts);\r
- bmImportConfigurator.setDoOccurrence(doOccurences);\r
- bmImportConfigurator.setDoCommonNames(doCommonNames);\r
+ config.setDoTaxa(doTaxa);\r
+ config.setDoRelTaxa(doRelTaxa);\r
+ config.setDoFacts(doFacts);\r
+ config.setDoEcoFacts(ecoFacts);\r
+ config.setDoImages(doImages);\r
+ config.setDoFactEcology(doFactEcology);\r
+ config.setDoDna(doDna);\r
+ config.setDoMorphology(doMorphology);\r
\r
- bmImportConfigurator.setDbSchemaValidation(hbm2dll);\r
+ config.setSourceRefUuid(sourceRefUuid);\r
+ config.setIgnoreNull(ignoreNull);\r
+ config.setRemoveRestricted(removeRestricted);\r
+ config.setImportOriginalSizeMedia(importOriginalSizeMedia);\r
+ \r
+ config.setIncludeFlatClassifications(includeFlatClassifications);\r
+ config.setIncludeAllNonMisappliedRelatedClassifications(includeAllNonMisappliedRelatedClassifications);\r
+ config.setFactFilter(factFilter);\r
+ \r
+ config.setDbSchemaValidation(hbm2dll);\r
\r
- bmImportConfigurator.setCheck(check);\r
+ config.setCheck(check);\r
+ config.setEditor(editor);\r
+ \r
+ if (loginAsDefaultAdmin){\r
+ config.authenticateAsDefaultAdmin();\r
+ }\r
\r
// invoke import\r
CdmDefaultImport<BerlinModelImportConfigurator> bmImport = new CdmDefaultImport<BerlinModelImportConfigurator>();\r
- bmImport.invoke(bmImportConfigurator);\r
+ bmImport.invoke(config);\r
\r
- if (doFacts && (bmImportConfigurator.getCheck().equals(CHECK.CHECK_AND_IMPORT) || bmImportConfigurator.getCheck().equals(CHECK.IMPORT_WITHOUT_CHECK) ) ){\r
+ if (doFacts && (config.getCheck().equals(CHECK.CHECK_AND_IMPORT) || config.getCheck().equals(CHECK.IMPORT_WITHOUT_CHECK) ) ){\r
ICdmApplicationConfiguration app = bmImport.getCdmAppController();\r
\r
//make feature tree\r
- FeatureTree tree = TreeCreator.flatTree(featureTreeUuid, bmImportConfigurator.getFeatureMap(), featureKeyList);\r
- FeatureNode imageNode = FeatureNode.NewInstance(Feature.IMAGE());\r
- tree.getRoot().addChild(imageNode);\r
- FeatureNode distributionNode = FeatureNode.NewInstance(Feature.DISTRIBUTION());\r
- tree.getRoot().addChild(distributionNode, 2); \r
- app.getFeatureTreeService().saveOrUpdate(tree);\r
+ makeTaxonFeatureTree(config, app);\r
+\r
+ //make specimen feature tree\r
+ //TODO more specimen specific\r
+ makeSpecimenFeatureTree(config, app);\r
+\r
}\r
\r
\r
System.out.println("End import from BerlinModel ("+ source.getDatabase() + ")...");\r
}\r
+\r
+\r
+ /**\r
+ * @param config\r
+ * @param app\r
+ */\r
+ private void makeTaxonFeatureTree(AlgaTerraImportConfigurator config, ICdmApplicationConfiguration app) {\r
+ FeatureTree tree = TreeCreator.flatTree(featureTreeUuid, config.getFeatureMap(), featureKeyList);\r
+ tree.setTitleCache("AlgaTerra Taxon Feature Tree", true);\r
+ \r
+ FeatureNode node = FeatureNode.NewInstance(Feature.HABITAT());\r
+ tree.getRoot().addChild(node);\r
+ \r
+// node = FeatureNode.NewInstance(Feature.OBSERVATION());\r
+// tree.getRoot().addChild(node);\r
+// \r
+// node = FeatureNode.NewInstance(Feature.SPECIMEN());\r
+// tree.getRoot().addChild(node);\r
+// \r
+// node = FeatureNode.NewInstance(Feature.INDIVIDUALS_ASSOCIATION());\r
+// tree.getRoot().addChild(node);\r
+ \r
+ //needed ??\r
+ FeatureNode distributionNode = FeatureNode.NewInstance(Feature.DISTRIBUTION());\r
+ tree.getRoot().addChild(distributionNode, 2);\r
+ \r
+// //needed ??\r
+// FeatureNode imageNode = FeatureNode.NewInstance(Feature.IMAGE());\r
+// tree.getRoot().addChild(imageNode);\r
+ \r
+ app.getFeatureTreeService().saveOrUpdate(tree);\r
+ }\r
+\r
+\r
+ /**\r
+ * @param config\r
+ * @param app\r
+ * @param tree\r
+ */\r
+ private void makeSpecimenFeatureTree(AlgaTerraImportConfigurator config, ICdmApplicationConfiguration app) {\r
+ ITermService termService = app.getTermService();\r
+ FeatureTree specimenTree = FeatureTree.NewInstance(specimenFeatureTreeUuid);\r
+// FeatureTree specimenTree = TreeCreator.flatTree(specimenFeatureTreeUuid, config.getFeatureMap(), featureKeyList);\r
+ specimenTree.setTitleCache("AlgaTerra Specimen Feature Tree", true);\r
+ FeatureNode root = specimenTree.getRoot();\r
+ \r
+ \r
+ FeatureNode imageNode = FeatureNode.NewInstance(Feature.IMAGE());\r
+ root.addChild(imageNode);\r
+ \r
+ addFeatureNodeByUuid(root, termService, AlgaTerraSpecimenImportBase.uuidFeatureAlgaTerraClimate);\r
+ FeatureNode node = FeatureNode.NewInstance(Feature.HABITAT());\r
+ root.addChild(node);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraSpecimenImportBase.uuidFeatureHabitatExplanation);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraSpecimenImportBase.uuidFeatureAlgaTerraLifeForm);\r
+ \r
+ addFeatureNodeByUuid(root, termService, AlgaTerraSpecimenImportBase.uuidFeatureAdditionalData);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraSpecimenImportBase.uuidFeatureSpecimenCommunity);\r
+ \r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeaturePH);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeatureConductivity);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeatureWaterTemperature);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeatureSilica);\r
+ FeatureNode nitrogenNode = makeNitrogenNode(root, termService);\r
+ addFeatureNodeByUuid(nitrogenNode, termService, AlgaTerraImportTransformer.uuidFeatureNitrate);\r
+ addFeatureNodeByUuid(nitrogenNode, termService, AlgaTerraImportTransformer.uuidFeatureNitrite);\r
+ addFeatureNodeByUuid(nitrogenNode, termService, AlgaTerraImportTransformer.uuidFeatureAmmonium);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeaturePhosphate);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeatureOrthoPhosphate);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeatureNPRation);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeatureDIN);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeatureSRP);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeatureOxygenSaturation);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeatureCl);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeatureSecchiDepth);\r
+ addFeatureNodeByUuid(root, termService, AlgaTerraImportTransformer.uuidFeatureCommunity);\r
+ app.getFeatureTreeService().saveOrUpdate(specimenTree);\r
+ }\r
+ \r
+ private FeatureNode makeNitrogenNode(FeatureNode root, ITermService termService) {\r
+ Feature nFeature = Feature.NewInstance("Supra feature for all Nitrogen related subfeatures", "Nitrogen", "N");\r
+ termService.save(nFeature);\r
+ FeatureNode nNode = FeatureNode.NewInstance(nFeature);\r
+ root.addChild(nNode);\r
+ return nNode;\r
+ }\r
+\r
+\r
+// private FeatureNode addFeataureNodesByUuidList(UUID[] featureUuidList, FeatureNode root, ITermService termService){\r
+// FeatureNode lastChild = null;\r
+// for (UUID featureUuid : featureUuidList){\r
+// addFeatureNodeByUuid(root, termService, featureUuid);\r
+// }\r
+//\r
+// return lastChild;\r
+// }\r
+\r
+\r
+ /**\r
+ * @param root\r
+ * @param termService\r
+ * @param featureUuid\r
+ */\r
+ private void addFeatureNodeByUuid(FeatureNode root, ITermService termService, UUID featureUuid) {\r
+ Feature feature = (Feature)termService.find(featureUuid);\r
+ if (feature != null){\r
+ FeatureNode child = FeatureNode.NewInstance(feature);\r
+ root.addChild(child); \r
+ }\r
+ }\r
\r
\r
/**\r