add FM13 import and some minor changes
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / eflora / CentralAfricaEricaceaeActivator.java
index ddf8a02047e02472cea459dc051c60d598cf3f83..00005ce36b042b9de6cc95b7ca9acd0b81a127e6 100644 (file)
@@ -17,6 +17,7 @@ import org.apache.log4j.Logger;
 import org.springframework.transaction.TransactionStatus;\r
 \r
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
 import org.springframework.transaction.TransactionStatus;\r
 \r
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;\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.common.DefaultProgressMonitor;\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.app.common.CdmDestinations;\r
 import eu.etaxonomy.cdm.common.DefaultProgressMonitor;\r
@@ -25,18 +26,24 @@ import eu.etaxonomy.cdm.database.DbSchemaValidation;
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 import eu.etaxonomy.cdm.database.update.CdmUpdater;\r
 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 import eu.etaxonomy.cdm.database.update.CdmUpdater;\r
 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;\r
+import eu.etaxonomy.cdm.io.common.CdmImportBase.TermMatchMode;\r
 import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
 import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;\r
 import eu.etaxonomy.cdm.io.eflora.EfloraImportConfigurator;\r
 import eu.etaxonomy.cdm.io.eflora.centralAfrica.ericaceae.CentralAfricaEricaceaeImportConfigurator;\r
 import eu.etaxonomy.cdm.io.eflora.centralAfrica.ericaceae.CentralAfricaEricaceaeTransformer;\r
 import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;\r
 import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;\r
 import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;\r
 import eu.etaxonomy.cdm.io.eflora.EfloraImportConfigurator;\r
 import eu.etaxonomy.cdm.io.eflora.centralAfrica.ericaceae.CentralAfricaEricaceaeImportConfigurator;\r
 import eu.etaxonomy.cdm.io.eflora.centralAfrica.ericaceae.CentralAfricaEricaceaeTransformer;\r
-import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.cdm.io.specimen.excel.in.SpecimenCdmExcelImportConfigurator;\r
+import eu.etaxonomy.cdm.model.agent.Team;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\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.description.PolytomousKey;\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.description.PolytomousKey;\r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
+import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
+import eu.etaxonomy.cdm.model.location.NamedAreaType;\r
 import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
 import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
 \r
@@ -51,14 +58,16 @@ public class CentralAfricaEricaceaeActivator {
        //database validation status (create, update, validate ...)\r
        static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE;\r
        static final URI source = EfloraSources.ericacea_local();\r
        //database validation status (create, update, validate ...)\r
        static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE;\r
        static final URI source = EfloraSources.ericacea_local();\r
+       \r
+       static final URI specimenSource = EfloraSources.ericacea_specimen_local();\r
 \r
        \r
 //     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_andreasM3();\r
 //     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_flora_central_africa_preview();\r
 //     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_flora_central_africa_production();\r
 \r
        \r
 //     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_andreasM3();\r
 //     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_flora_central_africa_preview();\r
 //     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_flora_central_africa_production();\r
-//     static final ICdmDataSource cdmDestination = CdmDestinations.localH2();\r
+       static final ICdmDataSource cdmDestination = CdmDestinations.localH2();\r
 //     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_local_postgres_CdmTest();\r
 //     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_local_postgres_CdmTest();\r
-       static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql();\r
+//     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql();\r
 //     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_jaxb();\r
 \r
        //feature tree uuid\r
 //     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_jaxb();\r
 \r
        //feature tree uuid\r
@@ -75,11 +84,16 @@ public class CentralAfricaEricaceaeActivator {
        static boolean doPrintKeys = false;\r
        \r
        //taxa\r
        static boolean doPrintKeys = false;\r
        \r
        //taxa\r
+       private boolean includeEricaceae = true;\r
        static final boolean doTaxa = true;\r
        static final boolean doDeduplicate = false;\r
 \r
        static final boolean doTaxa = true;\r
        static final boolean doDeduplicate = false;\r
 \r
-       private boolean includeEricaceae = true;\r
-\r
+       \r
+       private boolean doNewNamedAreas = false;\r
+       private boolean doFeatureTree = false;\r
+       \r
+       private boolean doSpecimen = false;\r
+       private TermMatchMode specimenAreaMatchMode = TermMatchMode.UUID_ABBREVLABEL;\r
 \r
        \r
        private void doImport(ICdmDataSource cdmDestination){\r
 \r
        \r
        private void doImport(ICdmDataSource cdmDestination){\r
@@ -116,8 +130,10 @@ public class CentralAfricaEricaceaeActivator {
                        System.out.println("End import from ("+ source.toString() + ")...");\r
                }\r
                \r
                        System.out.println("End import from ("+ source.toString() + ")...");\r
                }\r
                \r
-               FeatureTree tree = makeFeatureNode(myImport.getCdmAppController().getTermService());\r
-               myImport.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree);\r
+               if (doFeatureTree){\r
+                       FeatureTree tree = makeFeatureNode(myImport.getCdmAppController().getTermService());\r
+                       myImport.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree);\r
+               }\r
                \r
                //check keys\r
                if (doPrintKeys){\r
                \r
                //check keys\r
                if (doPrintKeys){\r
@@ -132,15 +148,133 @@ public class CentralAfricaEricaceaeActivator {
                \r
                //deduplicate\r
                if (doDeduplicate){\r
                \r
                //deduplicate\r
                if (doDeduplicate){\r
-                       CdmApplicationController app = myImport.getCdmAppController();\r
-                       int count = app.getAgentService().deduplicate(Person.class, null, null);\r
-                       logger.warn("Deduplicated " + count + " persons.");\r
-//                     count = app.getAgentService().deduplicate(Team.class, null, null);\r
-//                     logger.warn("Deduplicated " + count + " teams.");\r
-                       count = app.getReferenceService().deduplicate(Reference.class, null, null);\r
-                       logger.warn("Deduplicated " + count + " references.");\r
+                       ICdmApplicationConfiguration app = myImport.getCdmAppController();\r
+                       if (app == null){\r
+                               app = CdmApplicationController.NewInstance(cdmDestination, hbm2dll, false);\r
+                       }\r
+                       app.getAgentService().updateTitleCache(Team.class, null, null, null);\r
+                       return;\r
+//                     int count = app.getAgentService().deduplicate(Person.class, null, null);\r
+//                     \r
+//                     logger.warn("Deduplicated " + count + " persons.");\r
+////                   count = app.getAgentService().deduplicate(Team.class, null, null);\r
+////                   logger.warn("Deduplicated " + count + " teams.");\r
+//                     count = app.getReferenceService().deduplicate(Reference.class, null, null);\r
+//                     logger.warn("Deduplicated " + count + " references.");\r
+               }\r
+               \r
+               if(doNewNamedAreas){\r
+                       newNamedAreas(myImport);\r
+               }\r
+\r
+               if (doSpecimen){\r
+                       logger.warn("Start specimen import");\r
+                       ICdmApplicationConfiguration app = myImport.getCdmAppController();\r
+                       SpecimenCdmExcelImportConfigurator specimenConfig= SpecimenCdmExcelImportConfigurator.NewInstance(specimenSource, cdmDestination);\r
+                       specimenConfig.setCdmAppController((CdmApplicationController)app);\r
+                       specimenConfig.setAreaMatchMode(specimenAreaMatchMode);\r
+                       \r
+                       config.setDbSchemaValidation(DbSchemaValidation.VALIDATE);\r
+                       specimenConfig.setSourceReference(getSourceReference(specimenConfig.getSourceReferenceTitle()));\r
+                       \r
+                       CdmDefaultImport<SpecimenCdmExcelImportConfigurator> specimenImport = new CdmDefaultImport<SpecimenCdmExcelImportConfigurator>();\r
+                       specimenImport.setCdmAppController(app);\r
+                       specimenImport.invoke(specimenConfig);\r
+                       \r
+                       \r
+               }\r
+               return;\r
+       \r
+\r
+               \r
+       }\r
+\r
+       private void newNamedAreas(CdmDefaultImport<EfloraImportConfigurator> myImport) {\r
+               ICdmApplicationConfiguration app = myImport.getCdmAppController();\r
+               if (app == null){\r
+                       app = CdmApplicationController.NewInstance(cdmDestination, hbm2dll, false);\r
                }\r
                }\r
+               TransactionStatus tx = app.startTransaction();\r
                \r
                \r
+               OrderedTermVocabulary<NamedArea> voc = OrderedTermVocabulary.NewInstance("Phytogeographic Regions of Central Africa", "Phytogeographic Regions of Central Africa", "FdAC regions", null);\r
+               app.getVocabularyService().save(voc);\r
+               \r
+               NamedAreaLevel level = NamedAreaLevel.NewInstance("Phytogeographic Regions of Central Africa", "Phytogeographic Regions of Central Africa", "FdAC regions");\r
+               ITermService termService = app.getTermService();\r
+               \r
+               termService.save(level);\r
+               \r
+               NamedArea area = NamedArea.NewInstance("Côtier", "Côtier", "I");\r
+               area.setLevel(level);\r
+               area.setType(NamedAreaType.NATURAL_AREA());\r
+               voc.addTerm(area);\r
+               termService.save(area);\r
+               \r
+\r
+               area = NamedArea.NewInstance("Mayumbe", "Mayumbe", "II");\r
+               area.setLevel(level);\r
+               area.setType(NamedAreaType.NATURAL_AREA());\r
+               voc.addTerm(area);\r
+               termService.save(area);\r
+\r
+               area = NamedArea.NewInstance("Bas-Congo", "Bas-Congo", "III");\r
+               area.setLevel(level);\r
+               area.setType(NamedAreaType.NATURAL_AREA());\r
+               voc.addTerm(area);\r
+               termService.save(area);\r
+\r
+               area = NamedArea.NewInstance("Kasai", "Kasai", "IV");\r
+               area.setLevel(level);\r
+               area.setType(NamedAreaType.NATURAL_AREA());\r
+               voc.addTerm(area);\r
+               termService.save(area);\r
+\r
+               area = NamedArea.NewInstance("Bas-Katanga", "Bas-Katanga", "V");\r
+               area.setLevel(level);\r
+               area.setType(NamedAreaType.NATURAL_AREA());\r
+               voc.addTerm(area);\r
+               termService.save(area);\r
+\r
+               area = NamedArea.NewInstance("Forestier Central", "Forestier Central", "VI");\r
+               area.setLevel(level);\r
+               area.setType(NamedAreaType.NATURAL_AREA());\r
+               voc.addTerm(area);\r
+               termService.save(area);\r
+\r
+               area = NamedArea.NewInstance("Ubangi-Uele", "Ubangi-Uele", "VII");\r
+               area.setLevel(level);\r
+               area.setType(NamedAreaType.NATURAL_AREA());\r
+               voc.addTerm(area);\r
+               termService.save(area);\r
+\r
+               area = NamedArea.NewInstance("Lac Albert", "Lac Albert", "VIII");\r
+               area.setLevel(level);\r
+               area.setType(NamedAreaType.NATURAL_AREA());\r
+               voc.addTerm(area);\r
+               termService.save(area);\r
+\r
+               area = NamedArea.NewInstance("Lacs Édouard et Kivu", "Lacs Édouard et Kivu", "IX");\r
+               area.setLevel(level);\r
+               area.setType(NamedAreaType.NATURAL_AREA());\r
+               voc.addTerm(area);\r
+               termService.save(area);\r
+\r
+               area = NamedArea.NewInstance("Rwanda-Burundi", "Rwanda-Burundi", "X");\r
+               area.setLevel(level);\r
+               area.setType(NamedAreaType.NATURAL_AREA());\r
+               voc.addTerm(area);\r
+               termService.save(area);\r
+\r
+               area = NamedArea.NewInstance("Haut-Katanga", "Haut-Katanga", "XI");\r
+               area.setLevel(level);\r
+               area.setType(NamedAreaType.NATURAL_AREA());\r
+               voc.addTerm(area);\r
+               termService.save(area);\r
+               \r
+               app.getVocabularyService().save(voc);\r
+               \r
+               app.commitTransaction(tx);\r
+\r
        }\r
 \r
        private Reference getSourceReference(String string) {\r
        }\r
 \r
        private Reference getSourceReference(String string) {\r