last version ATImportActivator
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / berlinModelImport / AlgaTerraActivator.java
index 7854475aa2311a7125c08ba4fa8834025c122ea8..eb2d728c9da118fc03bac50a4a7db110a535e4ac 100644 (file)
@@ -14,10 +14,13 @@ import java.util.UUID;
 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
@@ -46,8 +49,10 @@ public class AlgaTerraActivator {
        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.cdm_algaterra_preview();\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
@@ -55,7 +60,13 @@ public class AlgaTerraActivator {
        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.IMPORT_WITHOUT_CHECK;\r
@@ -63,13 +74,14 @@ public class AlgaTerraActivator {
        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
+       static final NomenclaturalCode nomenclaturalCode = NomenclaturalCode.ICNAFP;\r
        \r
-       static String factFilter = " factCategoryFk NOT IN (7, 202 ) ";\r
+       static String factFilter = " factCategoryFk NOT IN (7, 201, 202, 203, 204, 205, 206, 207, 208, 1000 ) ";\r
        \r
        \r
 // ****************** ALL *****************************************\r
@@ -91,7 +103,10 @@ public class AlgaTerraActivator {
        \r
        //alga terra specific\r
        static final boolean ecoFacts = true;\r
-       static final boolean doImages = 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
@@ -103,7 +118,7 @@ public class AlgaTerraActivator {
 //     static final boolean doTaxonNames = false;\r
 //     static final boolean doRelNames = false;\r
 //     static final boolean doNameStatus = false;\r
-//     static final boolean doTypes = true;\r
+//     static final boolean doTypes = false;\r
 //     static final boolean doNameFacts = false;\r
 //     \r
 //     //taxa\r
@@ -113,7 +128,10 @@ public class AlgaTerraActivator {
 //     \r
 //  //alga terra specific\r
 //     static final boolean ecoFacts = true;\r
-//     static final boolean doImages = 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
@@ -141,11 +159,17 @@ public class AlgaTerraActivator {
                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
                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
@@ -153,6 +177,10 @@ public class AlgaTerraActivator {
                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(config);\r
@@ -161,17 +189,127 @@ public class AlgaTerraActivator {
                        ICdmApplicationConfiguration app = bmImport.getCdmAppController();\r
                        \r
                        //make feature tree\r
-                       FeatureTree tree = TreeCreator.flatTree(featureTreeUuid, config.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