last version ATImportActivator
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / berlinModelImport / AlgaTerraActivator.java
index 3b2af4403cf6a8033a7b51bcec458918112469f9..eb2d728c9da118fc03bac50a4a7db110a535e4ac 100644 (file)
@@ -13,14 +13,23 @@ import java.util.UUID;
 \r
 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.Source;\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
+import eu.etaxonomy.cdm.model.description.FeatureTree;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
 \r
 \r
@@ -39,20 +48,42 @@ public class AlgaTerraActivator {
        //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 UUID treeUuid = UUID.fromString("d03ef02a-f226-4cb1-bdb4-f6c154f08a34");\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,203,204,206,207}; \r
+       static final UUID specimenFeatureTreeUuid = UUID.fromString("ba86246e-d4d0-419f-832e-86d70b1e4bd7");\r
        \r
-       static final UUID featureTreeUuid = UUID.fromString("ae9615b8-bc60-4ed0-ad96-897f9226d568");\r
-       static final Object[] featureKeyList = new Integer[]{7,201,202,203,204,205,206,207}; \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
@@ -63,15 +94,19 @@ public class AlgaTerraActivator {
        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;  \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;\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
@@ -80,7 +115,7 @@ public class AlgaTerraActivator {
 //     //references\r
 //     static final DO_REFERENCES doReferences =  DO_REFERENCES.NONE;\r
 //     //names\r
-//     static final boolean doTaxonNames = true;\r
+//     static final boolean doTaxonNames = false;\r
 //     static final boolean doRelNames = false;\r
 //     static final boolean doNameStatus = false;\r
 //     static final boolean doTypes = false;\r
@@ -89,51 +124,200 @@ public class AlgaTerraActivator {
 //     //taxa\r
 //     static final boolean doTaxa = false;\r
 //     static final boolean doRelTaxa = false;\r
-//     static final boolean doFacts = true;\r
-//     static final boolean doOccurences = false;\r
-       \r
+//     static final boolean doFacts = 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
-       /**\r
-        * @param args\r
-        */\r
-       public static void main(String[] args) {\r
+       public void invoke(String[] args){\r
                System.out.println("Start import from BerlinModel("+ berlinModelSource.getDatabase() + ") ...");\r
                logger.debug("Start");\r
                //make BerlinModel Source\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.setTaxonomicTreeUuid(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 && (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
+                       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
+        * @param args\r
+        */\r
+       public static void main(String[] args) {\r
+               AlgaTerraActivator activator = new AlgaTerraActivator();\r
+               activator.invoke(args);\r
+       }\r
+\r
 }\r