Use interface type for get/setCdmAppController in CdmDefaultIOBase (#2347)
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / app / cyprus / CyprusActivator.java
index 5d34d5af9447681935a93f676185be604f4cf2fe..c34faba00307ddcb00a0dc59a84f51dd798d2fbb 100644 (file)
@@ -16,16 +16,18 @@ import java.util.UUID;
 import org.apache.log4j.Logger;\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.database.DbSchemaValidation;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;\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.cyprus.CyprusImportConfigurator;\r
 import eu.etaxonomy.cdm.io.cyprus.CyprusTransformer;\r
 import eu.etaxonomy.cdm.model.agent.Person;\r
-import eu.etaxonomy.cdm.model.agent.Team;\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
@@ -42,14 +44,15 @@ public class CyprusActivator {
        \r
        //database validation status (create, update, validate ...)\r
        static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE;\r
+//     static final URI source = cyprus_distribution();\r
        static final URI source = cyprus_local();\r
 \r
        \r
-//     static final ICdmDataSource cdmDestination = CdmDestinations.localH2();\r
+//     static final ICdmDataBSource cdmDestination = CdmDestinations.localH2();\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_cyprus_dev();\r
-//     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_cyprus_dev_tunnel();\r
+//     static final ICdmDataSource cdmDestination = CdmDestinations.cdm_cyprus_production();\r
 \r
        \r
        //feature tree uuid\r
@@ -62,8 +65,9 @@ public class CyprusActivator {
        static final CHECK check = CHECK.IMPORT_WITHOUT_CHECK;\r
        \r
        //taxa\r
-       static final boolean doTaxa = true;\r
-       static final boolean doDeduplicate = true;\r
+       static final boolean doTaxa = false;\r
+       static final boolean doDeduplicate = false;\r
+       static final boolean doDistribution = true;\r
 \r
        \r
        private void doImport(ICdmDataSource cdmDestination){\r
@@ -71,10 +75,9 @@ public class CyprusActivator {
                //make Source\r
                CyprusImportConfigurator config= CyprusImportConfigurator.NewInstance(source, cdmDestination);\r
                config.setClassificationUuid(classificationUuid);\r
-               config.setDoTaxa(doTaxa);\r
                config.setCheck(check);\r
-//             config.setDefaultLanguageUuid(defaultLanguageUuid);\r
-//             config.setDoPrintKeys(doPrintKeys);\r
+               config.setDoDistribution(doDistribution);\r
+               config.setDoTaxa(doTaxa);\r
                config.setDbSchemaValidation(hbm2dll);\r
                \r
                CdmDefaultImport myImport = new CdmDefaultImport();\r
@@ -85,20 +88,23 @@ public class CyprusActivator {
                        System.out.println("Start import from ("+ source.toString() + ") ...");\r
                        config.setSourceReference(getSourceReference(config.getSourceReferenceTitle()));\r
                        myImport.invoke(config);\r
+                       if (doTaxa){\r
+                               FeatureTree tree = makeFeatureNodes(myImport.getCdmAppController().getTermService());\r
+                               myImport.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree);\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
                \r
                \r
                //deduplicate\r
                if (doDeduplicate){\r
-                       CdmApplicationController app = myImport.getCdmAppController();\r
+                       ICdmApplicationConfiguration 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.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
@@ -111,21 +117,26 @@ public class CyprusActivator {
                return result;\r
        }\r
 \r
-       private FeatureTree makeFeatureNode(ITermService service){\r
+       private FeatureTree makeFeatureNodes(ITermService service){\r
                CyprusTransformer transformer = new CyprusTransformer();\r
                \r
                FeatureTree result = FeatureTree.NewInstance(featureTreeUuid);\r
                result.setTitleCache("Cyprus Feature Tree");\r
                FeatureNode root = result.getRoot();\r
                FeatureNode newNode;\r
+\r
+               newNode = FeatureNode.NewInstance(Feature.STATUS());\r
+               root.addChild(newNode);\r
                \r
                newNode = FeatureNode.NewInstance(Feature.DISTRIBUTION());\r
                root.addChild(newNode);\r
 \r
-//             addFeataureNodesByStringList(habitatEcologyList, root, transformer, service);\r
-               \r
-               newNode = FeatureNode.NewInstance(Feature.CITATION());\r
+               newNode = FeatureNode.NewInstance(Feature.SYSTEMATICS());\r
                root.addChild(newNode);\r
+\r
+               //user defined features\r
+               String [] featureList = new String[]{"Red Book", "Endemism"};\r
+               addFeataureNodesByStringList(featureList, root, transformer, service);\r
                \r
                return result;\r
        }\r
@@ -142,6 +153,33 @@ public class CyprusActivator {
                        return null;\r
                }\r
        }\r
+       //Cyprus distriution\r
+       public static URI cyprus_distribution() {\r
+               URI sourceUrl;\r
+               try {\r
+                       sourceUrl = new URI("file:/C:/localCopy/Data/zypern/Zypern_distribution_RH_corr.xls");\r
+                       return sourceUrl;\r
+               } catch (URISyntaxException e) {\r
+                       e.printStackTrace();\r
+                       return null;\r
+               }\r
+       }\r
+       \r
+       public void addFeataureNodesByStringList(String[] featureStringList, FeatureNode root, IInputTransformer transformer, ITermService termService){\r
+               try {\r
+                       for (String featureString : featureStringList){\r
+                       UUID featureUuid;\r
+                       featureUuid = transformer.getFeatureUuid(featureString);\r
+                       Feature feature = (Feature)termService.find(featureUuid);\r
+                       if (feature != null){\r
+                               FeatureNode child = FeatureNode.NewInstance(feature);\r
+                               root.addChild(child);   \r
+                       }\r
+               }\r
+               } catch (UndefinedTransformerMethodException e) {\r
+                       logger.error("getFeatureUuid is not implemented in transformer. Features could not be added");\r
+               }\r
+       }\r
        \r
 \r
        /**\r