cleanup
[cdmlib-apps.git] / app-import / src / main / java / eu / etaxonomy / cdm / database / update / BgbmInstancesUpdater.java
1 /**
2 *
3 */
4 package eu.etaxonomy.cdm.database.update;
5
6 import org.apache.log4j.Logger;
7
8 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
9 import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor;
10 import eu.etaxonomy.cdm.config.AccountStore;
11 import eu.etaxonomy.cdm.database.CdmDataSource;
12 import eu.etaxonomy.cdm.database.DbSchemaValidation;
13 import eu.etaxonomy.cdm.database.ICdmDataSource;
14 import eu.etaxonomy.cdm.io.api.application.CdmIoApplicationController;
15 import eu.etaxonomy.cdm.model.taxon.Classification;
16
17 /**
18 * @author a.mueller
19 */
20 public class BgbmInstancesUpdater {
21 private static final Logger logger = Logger.getLogger(BgbmInstancesUpdater.class);
22
23 private static String integrationServer = "160.45.63.201";
24 private static String productionServer = "160.45.63.171";
25 // private static String testServer = "160.45.63.175";
26 private static String testServer = "edit-test.bgbm.fu-berlin.de"; //preliminary
27
28 private static String[] integrationDatabases = new String[]{
29 "cdm_integration_cichorieae",
30 "cdm_integration_cyprus",
31 "cdm_integration_diptera",
32 "cdm_integration_flora_malesiana",
33 "cdm_integration_palmae",
34 "cdm_integration_reference"
35 };
36
37 private static String[] testDatabases = new String[]{
38 "cdm_bgbm_edit_usergroup",
39 "cdm_caryo_nepenthes",
40 "cdm_caryo_spp","cdm_causcasus_workshop",
41 "cdm_corvidae", "cdm_cyprus","cdm_edaphobase_test",
42 "cdm_edit_algaterra",
43 "cdm_edit_cichorieae",
44 "cdm_edit_flora_central_africa", "cdm_edit_flora_malesiana",
45 "cdm_edit_globis", "cdm_edit_palmae",
46 "cdm_flora_cuba",
47 "cdm_flora_guianas",
48 "cdm_flore_gabon",
49 "cdm_greece_bupleurum","cdm_greece_bupleurum_01","cdm_greece_bupleurum_04",
50 "cdm_mt_moose",
51 "cdm_mt_standardliste",
52 // "cdm_pesi_all",
53 "cdm_pesi_erms", "cdm_pesi_euromed", "cdm_pesi_fauna_europaea",
54 "cdm_phycobank",
55 "cdm_production_additivity_ontology",
56 "cdm_rem_conf_am",
57 "cdm_rl_animalia","cdm_rl_german_sl","cdm_rl_mammalia", "cdm_rl_plantae",
58 "cdm_salvador","cdm_test1","cdm_test2",
59 "cdm_test_euromed",
60 "cdm_vibrant_index"
61 };
62
63 private static String[] testDatabasesOthers = new String[]{"cdm_caryo_amaranthaceae",
64 "cdm_caryo_caryophyllales","cdm_flora_malesiana_prospective","cdm_pesi_all",
65 };
66
67 private static String[] productionDatabases = new String[]{
68 "cdm_production_col",
69 "cdm_production_algaterra",
70 "cdm_production_algaterranew",
71 "cdm_production_asteraceae",
72 "cdm_production_bromeliaceae",
73 "cdm_production_campanulaceae",
74 "cdm_production_caryo_amaranthaceae",
75 "cdm_production_caryo_nepenthaceae",
76 "cdm_production_caryophyllales",
77 "cdm_production_caryophyllales_spp",
78 "cdm_production_casearia",
79 "cdm_production_caucasus",
80 "cdm_production_cichorieae",
81 "cdm_production_corvidae",
82 "cdm_production_cyprus",
83 "cdm_production_diptera",
84 "cdm_production_edaphobase",
85 "cdm_production_euromed",
86 "cdm_production_euromed_caucasus",
87 "cdm_production_flora_central_africa",
88 "cdm_production_flora_cuba",
89 "cdm_production_flora_greece",
90 "cdm_production_flora_guianas",
91 "cdm_production_flora_malesiana",
92 "cdm_production_flora_malesiana_clean",
93 "cdm_production_flora_malesiana_prospective",
94 "cdm_production_flora_uzbekistan",
95 "cdm_production_flore_gabon",
96 "cdm_production_globis",
97 "cdm_production_greece_bupleurum",
98 "cdm_production_lichenes",
99 "cdm_production_myristicaceae",
100 "cdm_production_oxalis",
101 "cdm_production_palmae",
102 "cdm_production_phycobank",
103 "cdm_production_piB_ants_pilot",
104 "cdm_production_piB_campylopus_pilot",
105 "cdm_production_piB_chenopodium_pilot",
106 "cdm_production_piB_eupolybothrus_pilot",
107 "cdm_production_piB_lactarius_pilot",
108 "cdm_production_piB_nephrolepis_pilot",
109 "cdm_production_piB_spiders_pilot",
110 "cdm_production_rl_animalia",
111 "cdm_production_rl_animalia_final",
112 "cdm_production_rl_armeria_demo",
113 "cdm_production_rl_german_sl",
114 "cdm_production_rl_lumbricidae",
115 "cdm_production_rl_mammalia",
116 "cdm_production_rl_moose",
117 "cdm_production_rl_plantae",
118 "cdm_production_rl_standardliste",
119 "cdm_production_rubiaceae_mexico",
120 "cdm_production_salvador",
121 "cdm_production_vibrant_index"
122 };
123
124 static BgbmServer bgbmServer = BgbmServer.TEST;
125
126 static String username = "edit";
127
128 private static void updateToCurrentVersion() {
129 DbSchemaValidation schema = DbSchemaValidation.VALIDATE;
130 String server = bgbmServer.server;
131 for (String database : bgbmServer.databases){
132 logger.warn("Update: " + database + " ... ");
133 ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
134 SchemaUpdateResult result = new SchemaUpdateResult();
135 try {
136 CdmUpdater updater = new CdmUpdater();
137 System.out.println(database);
138 result = updater.updateToCurrentVersion(dataSource, DefaultProgressMonitor.NewInstance());
139 System.out.println(result.createReport());
140 CdmApplicationController appCtr = CdmIoApplicationController.NewInstance(dataSource,schema);
141 System.out.println(appCtr.getClassificationService().count(Classification.class));
142 } catch (Exception e) {
143 result.addException(e, e.getMessage());
144 e.printStackTrace();
145 }
146 if(!result.isSuccess() ){
147 logger.warn("Problem");
148 System.exit(1);
149 }
150
151 logger.warn("Update: " + database + " ... DONE ");
152 }
153 }
154
155 private static void singleUpdateStep(boolean startApp) {
156 DbSchemaValidation schema = DbSchemaValidation.VALIDATE;
157 String server = bgbmServer.server;
158 for (String database : bgbmServer.databases){
159 logger.warn("Update: " + database + " ... ");
160 ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
161 SchemaUpdateResult result = new SchemaUpdateResult();
162 try {
163 System.out.println(database);
164 //define step here !!!
165 SchemaUpdaterStepBase step = IndexRenamer.NewStringInstance(null, "TaxonName",
166 "taxonNameBaseNameCacheIndex", "taxonNameNameCacheIndex", "nameCache", 255);
167 SchemaUpdaterStepBase step2 = IndexRenamer.NewStringInstance(null, "TaxonName",
168 "taxonNameBaseTitleCacheIndex", "taxonNameTitleCacheIndex", "titleCache", 333);
169 dataSource.startTransaction();
170 step.invoke(dataSource, DefaultProgressMonitor.NewInstance(), CaseType.caseTypeOfDatasource(dataSource), result);
171 step2.invoke(dataSource, DefaultProgressMonitor.NewInstance(), CaseType.caseTypeOfDatasource(dataSource), result);
172 dataSource.commitTransaction();
173 System.out.println(result.createReport());
174 if (startApp){
175 CdmApplicationController appCtr = CdmIoApplicationController.NewInstance(dataSource,schema);
176 System.out.println(appCtr.getClassificationService().count(Classification.class));
177 }
178 } catch (Exception e) {
179 result.addException(e, e.getMessage());
180 e.printStackTrace();
181 }
182 if(!result.isSuccess() ){
183 logger.warn("Problem");
184 System.exit(1);
185 }
186
187 logger.warn("Update: " + database + " ... DONE ");
188 }
189
190 }
191
192 public static void main(String[] args) {
193 updateToCurrentVersion();
194 // singleUpdateStep(false);
195 System.exit(0);
196 }
197
198 private enum BgbmServer{
199 INTEGRATION (integrationServer, integrationDatabases),
200 TEST(testServer,testDatabases),
201 PRODUCTION(productionServer,productionDatabases);
202 private final String server;
203 private final String[] databases;
204 private BgbmServer(String server, String[] databases){
205 this.server = server;
206 this.databases = databases;
207 }
208 }
209 }