update BgbmInstancesUpdater
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / database / update / BgbmInstancesUpdater.java
index 0763a4a81a7f8ec02210c991edbccf6d9dbdaed9..fe775b793c319f1dcb3d29fc6a597036fe8e5520 100644 (file)
-/**\r
- * \r
- */\r
-package eu.etaxonomy.cdm.database.update;\r
-\r
-import org.apache.log4j.Logger;\r
-\r
-import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
-import eu.etaxonomy.cdm.common.AccountStore;\r
-import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor;\r
-import eu.etaxonomy.cdm.database.CdmDataSource;\r
-import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
-import eu.etaxonomy.cdm.database.ICdmDataSource;\r
-import eu.etaxonomy.cdm.io.api.application.CdmIoApplicationController;\r
-import eu.etaxonomy.cdm.model.taxon.Classification;\r
-\r
-/**\r
- * @author a.mueller\r
- *\r
- */\r
-public class BgbmInstancesUpdater {\r
-       private static final Logger logger = Logger.getLogger(BgbmInstancesUpdater.class);\r
-       \r
-       private static String integrationServer = "160.45.63.201";\r
-       private static String productionServer = "160.45.63.171";\r
-//     private static String testServer = "160.45.63.175";\r
-       private static String testServer = "160.45.63.21";  //preliminary\r
-       \r
-       private static String[] integrationDatabases = new String[]{/**/"cdm_integration_cichorieae",\r
-               "cdm_integration_cyprus", "cdm_integration_diptera",  "cdm_integration_flora_malesiana",\r
-               "cdm_integration_palmae"};\r
-       \r
-       private static String[] testDatabases = new String[]{"cdm_bgbm_edit_usergroup","cdm_campanulaceae", \r
-               "cdm_campanulaceae_082014","cdm_caryo", "cdm_col","cdm_corvidae","cdm_cyprus","cdm_demo1","cdm_demo2",\r
-               "cdm_demo3", "cdm_edit_algaterra","cdm_edit_cichorieae","cdm_edit_ildis","cdm_edit_flora_central_africa",\r
-               "cdm_flora_guianas","cdm_flore_gabon","cdm_edit_flora_malesiana","cdm_edit_globis","cdm_edit_palmae", \r
-               "cdm_ipni_Caryophyllaceae","cdm_mt_moose","cdm_mt_standardliste",\r
-               "cdm_pesi_euromed", "cdm_pesi_erms","cdm_pesi_fauna_europaea",\r
-               "cdm_proibiosphere_chenopodium_pilot","cdm_rl_mammalia","cdm_test_eckhard","cdm_test_euromed","cdm_test_gabi",\r
-               "cdm_test_norbert","cdm_test_sabine","cdm_vibrant_index"};\r
-       \r
-\r
-       private static String[] testDatabasesOthers = new String[]{"cdm_caryo_amaranthaceae",\r
-               "cdm_caryo_caryophyllales","cdm_flora_malesiana_prospective","cdm_pesi_all","cdm_salvador",\r
-               };\r
-       \r
-       private static String[] productionDatabases = new String[]{\r
-               "cdm_col", "cdm_production_acantholimon","cdm_production_algaterra",\r
-               "cdm_production_amaranthaceae","cdm_production_cactaceae",\r
-               "cdm_production_campanulaceae","cdm_production_caryophyllales",\r
-               "cdm_production_chenopodiaceae","cdm_production_cichorieae",\r
-               "cdm_production_corvidae","cdm_production_cyprus",\r
-               "cdm_production_dianthus","cdm_production_diptera",\r
-               "cdm_production_flora_central_africa","cdm_production_flora_malesiana",\r
-               "cdm_production_flora_malesiana_prospective","cdm_production_flore_gabon",\r
-               "cdm_production_globis","cdm_production_nyctaginaceae",\r
-               "cdm_production_palmae","cdm_production_piB_campylopus_pilot",\r
-               "cdm_production_piB_eupolybothrus_pilot","cdm_production_piB_lactarius_pilot",\r
-               "cdm_production_piB_loranthaceae","cdm_production_piB_nephrolepis_pilot",\r
-               "cdm_production_piB_spiders_pilot","cdm_production_polygonaceae",\r
-               "cdm_production_proibiosphere_ants_pilot","cdm_production_proibiosphere_chenopodium_pilot",\r
-               "cdm_production_rl_armeria_demo","cdm_production_rl_lumbricidae",\r
-               "cdm_production_rl_odonata_demo","cdm_production_rl_standardliste",\r
-               "cdm_production_tamaricaceae","cdm_production_vibrant_index"};\r
-\r
-       static BgbmServer bgbmServer = BgbmServer.TEST;\r
-       \r
-       \r
-       \r
-       static String username = "edit";\r
-       \r
-       \r
-       \r
-       /**\r
-        * @param args\r
-        */\r
-       public static void  main(String[] args) {\r
-               DbSchemaValidation schema = DbSchemaValidation.VALIDATE;\r
-       String server = bgbmServer.server;\r
-       for (String database : bgbmServer.databases){\r
-               boolean result = true;\r
-               logger.warn("Update: " + database + " ... ");\r
-               ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));\r
-               try {\r
-                       CdmUpdater updater = new CdmUpdater();\r
-                       result = updater.updateToCurrentVersion(dataSource, DefaultProgressMonitor.NewInstance());\r
-                       CdmApplicationController appCtr = CdmIoApplicationController.NewInstance(dataSource,schema);\r
-                       System.out.println(appCtr.getClassificationService().count(Classification.class));\r
-               } catch (Exception e) {\r
-                       result = false;\r
-                       e.printStackTrace();\r
-               }       \r
-               if(!result ){\r
-                       logger.warn("Problem");\r
-                       break;\r
-               }\r
-               \r
-               logger.warn("Update: " + database + " ... DONE ");\r
-       }\r
-       \r
-       \r
-       }\r
-       \r
-       private enum BgbmServer{\r
-               INTEGRATION (integrationServer, integrationDatabases),\r
-               TEST(testServer,testDatabases),\r
-               PRODUCTION(productionServer,productionDatabases);\r
-               private String server;\r
-               private String[] databases;\r
-               private BgbmServer(String server, String[] databases){\r
-                       this.server = server;\r
-                       this.databases = databases;\r
-               }\r
-               \r
-               \r
-               \r
-       }\r
-}\r
+/**
+ *
+ */
+package eu.etaxonomy.cdm.database.update;
+
+import org.apache.log4j.Logger;
+
+import eu.etaxonomy.cdm.api.application.CdmApplicationController;
+import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor;
+import eu.etaxonomy.cdm.config.AccountStore;
+import eu.etaxonomy.cdm.database.CdmDataSource;
+import eu.etaxonomy.cdm.database.DbSchemaValidation;
+import eu.etaxonomy.cdm.database.ICdmDataSource;
+import eu.etaxonomy.cdm.io.api.application.CdmIoApplicationController;
+import eu.etaxonomy.cdm.model.taxon.Classification;
+
+/**
+ * @author a.mueller
+ *
+ */
+public class BgbmInstancesUpdater {
+       private static final Logger logger = Logger.getLogger(BgbmInstancesUpdater.class);
+
+       private static String integrationServer = "160.45.63.201";
+       private static String productionServer = "160.45.63.171";
+//     private static String testServer = "160.45.63.175";
+       private static String testServer = "edit-test.bgbm.fu-berlin.de";  //preliminary
+
+       private static String[] integrationDatabases = new String[]{
+           "cdm_integration_cichorieae",
+               "cdm_integration_cyprus",
+               "cdm_integration_diptera",
+           "cdm_integration_flora_malesiana",
+               "cdm_integration_palmae",
+               "cdm_integration_reference"
+       };
+
+       private static String[] testDatabases = new String[]{
+           "cdm_Test_Caryophyllales",
+           "cdm_additivity_test",
+        "cdm_bgbm_edit_usergroup",
+           "cdm_campanulaceae","cdm_caryo_nepenthes",
+           "cdm_caryo_spp","cdm_causcasus_workshop",
+        "cdm_corvidae", "cdm_cyprus","cdm_edaphobase_test",
+               "cdm_edit_algaterra", "cdm_edit_algaterra_","cdm_edit_cichorieae",
+               "cdm_edit_flora_central_africa", "cdm_edit_flora_malesiana",
+               "cdm_edit_globis", "cdm_edit_palmae",
+               "cdm_flora_cuba", "cdm_flora_guianas",
+               "cdm_flore_gabon",
+               "cdm_mt_moose",
+               "cdm_mt_standardliste",
+//         "cdm_pesi_all",
+               "cdm_pesi_erms", "cdm_pesi_euromed", "cdm_pesi_fauna_europaea",
+               "cdm_phycobank",
+           "cdm_production_additivity_ontology",
+               "cdm_proibiosphere_chenopodium_pilot",
+               "cdm_rem_conf_ak", "cdm_rem_conf_am", "cdm_rem_conf_kl", "cdm_rem_conf_pp",
+               "cdm_rl_animalia","cdm_rl_german_sl","cdm_rl_mammalia", "cdm_rl_plantae",
+               "cdm_salvador","cdm_test1","cdm_test2",
+        "cdm_test_euromed",
+        "cdm_vibrant_index"
+               };
+
+       private static String[] testDatabasesOthers = new String[]{"cdm_caryo_amaranthaceae",
+               "cdm_caryo_caryophyllales","cdm_flora_malesiana_prospective","cdm_pesi_all",
+       };
+
+       private static String[] productionDatabases = new String[]{
+           "cdm_production_col",
+           "cdm_production_algaterra",
+           "cdm_production_algaterranew",
+           "cdm_production_asteraceae",
+               "cdm_production_campanulaceae",
+               "cdm_production_caryo_amaranthaceae",
+               "cdm_production_caryo_nepenthaceae",
+        "cdm_production_caryophyllales",
+        "cdm_production_caryophyllales_spp",
+        "cdm_production_cichorieae",
+               "cdm_production_corvidae",
+           "cdm_production_cyprus",
+               "cdm_production_diptera",
+               "cdm_production_edaphobase",
+        "cdm_production_euromed",
+        "cdm_production_flora_bogota",
+        "cdm_production_flora_central_africa",
+        "cdm_production_flora_cuba",
+        "cdm_production_flora_greece",
+        "cdm_production_flora_guianas",
+        "cdm_production_flora_malesiana",
+        "cdm_production_flora_malesiana_clean",
+        "cdm_production_flora_malesiana_prospective",
+               "cdm_production_flore_gabon",
+               "cdm_production_globis",
+               "cdm_production_myristicaceae",
+               "cdm_production_palmae",
+               "cdm_production_phycobank",
+               "cdm_production_piB_ants_pilot",
+               "cdm_production_piB_campylopus_pilot",
+               "cdm_production_piB_chenopodium_pilot",
+        "cdm_production_piB_eupolybothrus_pilot",
+               "cdm_production_piB_lactarius_pilot",
+               "cdm_production_piB_nephrolepis_pilot",
+               "cdm_production_piB_spiders_pilot",
+               "cdm_production_rl_animalia",
+        "cdm_production_rl_animalia_final",
+               "cdm_production_rl_armeria_demo",
+               "cdm_production_rl_german_sl",
+        "cdm_production_rl_lumbricidae",
+        "cdm_production_rl_mammalia",
+        "cdm_production_rl_moose",
+        "cdm_production_rl_plantae",
+        "cdm_production_rl_standardliste",
+        "cdm_production_rubiaceae_mexico",
+        "cdm_production_salvador",
+               "cdm_production_vibrant_index"
+       };
+
+    static BgbmServer bgbmServer = BgbmServer.TEST;
+
+       static String username = "edit";
+
+    private static void updateToCurrentVersion() {
+        DbSchemaValidation schema = DbSchemaValidation.VALIDATE;
+       String server = bgbmServer.server;
+       for (String database : bgbmServer.databases){
+           logger.warn("Update: " + database + " ... ");
+               ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
+               SchemaUpdateResult result = new SchemaUpdateResult();
+            try {
+                       CdmUpdater updater = new CdmUpdater();
+                       System.out.println(database);
+                result = updater.updateToCurrentVersion(dataSource, DefaultProgressMonitor.NewInstance());
+                       System.out.println(result.createReport());
+                       CdmApplicationController appCtr = CdmIoApplicationController.NewInstance(dataSource,schema);
+                       System.out.println(appCtr.getClassificationService().count(Classification.class));
+               } catch (Exception e) {
+                       result.addException(e, e.getMessage());
+                       e.printStackTrace();
+               }
+               if(!result.isSuccess() ){
+                       logger.warn("Problem");
+                       System.exit(1);
+               }
+
+               logger.warn("Update: " + database + " ... DONE ");
+       }
+    }
+
+    private static void singleUpdateStep(boolean startApp) {
+        DbSchemaValidation schema = DbSchemaValidation.VALIDATE;
+        String server = bgbmServer.server;
+        for (String database : bgbmServer.databases){
+            logger.warn("Update: " + database + " ... ");
+            ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
+            SchemaUpdateResult result = new SchemaUpdateResult();
+            try {
+                System.out.println(database);
+                //define step here !!!
+                SchemaUpdaterStepBase step = IndexRenamer.NewStringInstance(null, "TaxonName",
+                        "taxonNameBaseNameCacheIndex", "taxonNameNameCacheIndex", "nameCache", 255);
+                SchemaUpdaterStepBase step2 = IndexRenamer.NewStringInstance(null, "TaxonName",
+                        "taxonNameBaseTitleCacheIndex", "taxonNameTitleCacheIndex", "titleCache", 333);
+                dataSource.startTransaction();
+                step.invoke(dataSource, DefaultProgressMonitor.NewInstance(), CaseType.caseTypeOfDatasource(dataSource), result);
+                step2.invoke(dataSource, DefaultProgressMonitor.NewInstance(), CaseType.caseTypeOfDatasource(dataSource), result);
+                dataSource.commitTransaction();
+                System.out.println(result.createReport());
+                if (startApp){
+                    CdmApplicationController appCtr = CdmIoApplicationController.NewInstance(dataSource,schema);
+                    System.out.println(appCtr.getClassificationService().count(Classification.class));
+                }
+            } catch (Exception e) {
+                result.addException(e, e.getMessage());
+                e.printStackTrace();
+            }
+            if(!result.isSuccess() ){
+                logger.warn("Problem");
+                System.exit(1);
+            }
+
+            logger.warn("Update: " + database + " ... DONE ");
+        }
+
+    }
+
+    public static void  main(String[] args) {
+        updateToCurrentVersion();
+//        singleUpdateStep(false);
+        System.exit(0);
+    }
+
+    private enum BgbmServer{
+               INTEGRATION (integrationServer, integrationDatabases),
+               TEST(testServer,testDatabases),
+               PRODUCTION(productionServer,productionDatabases);
+               private final String server;
+               private final String[] databases;
+               private BgbmServer(String server, String[] databases){
+                       this.server = server;
+                       this.databases = databases;
+               }
+       }
+}