last version ATImportActivator
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / berlinModelImport / AlgaTerraActivator.java
index 8f341dff7a9fa389b9724cc53990066c3fdb37c8..eb2d728c9da118fc03bac50a4a7db110a535e4ac 100644 (file)
@@ -14,14 +14,18 @@ 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
 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
@@ -45,23 +49,41 @@ 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
        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.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
@@ -72,18 +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;    //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 doSpecimen = true;\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
@@ -99,14 +122,17 @@ public class AlgaTerraActivator {
 //     static final boolean doNameFacts = false;\r
 //     \r
 //     //taxa\r
-//     static final boolean doTaxa = true;\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 doSpecimen = true;\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
                System.out.println("Start import from BerlinModel("+ berlinModelSource.getDatabase() + ") ...");\r
@@ -127,21 +153,33 @@ public class AlgaTerraActivator {
                config.setDoRelNames(doRelNames);\r
                config.setDoNameStatus(doNameStatus);\r
                config.setDoTypes(doTypes);\r
-               config.setDoNameFacts(doNameFacts);\r
                \r
                config.setDoTaxa(doTaxa);\r
                config.setDoRelTaxa(doRelTaxa);\r
                config.setDoFacts(doFacts);\r
-               config.setDoOccurrence(doOccurences);\r
-               config.setDoCommonNames(doCommonNames);\r
-               config.setDoSpecimen(doSpecimen);\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
 \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
@@ -151,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