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
|
*/
|
21
|
public class BgbmInstancesUpdater {
|
22
|
private static final Logger logger = Logger.getLogger(BgbmInstancesUpdater.class);
|
23
|
|
24
|
private static String integrationServer = "160.45.63.201";
|
25
|
private static String productionServer = "160.45.63.171";
|
26
|
// private static String testServer = "160.45.63.175";
|
27
|
private static String testServer = "edit-test.bgbm.fu-berlin.de"; //preliminary
|
28
|
|
29
|
private static String[] integrationDatabases = new String[]{
|
30
|
"cdm_integration_cichorieae",
|
31
|
"cdm_integration_cyprus", "cdm_integration_diptera",
|
32
|
"cdm_integration_flora_malesiana",
|
33
|
"cdm_integration_palmae","cdm_integration_reference"
|
34
|
};
|
35
|
|
36
|
private static String[] testDatabases = new String[]{
|
37
|
// "cdm_col",
|
38
|
"cdm_Test_Caryophyllales",
|
39
|
"cdm_additivity_test",
|
40
|
"cdm_bgbm_edit_usergroup",
|
41
|
"cdm_campanulaceae","cdm_caryo_nepenthes",
|
42
|
"cdm_caryo_spp","cdm_causcasus_workshop",
|
43
|
"cdm_corvidae", "cdm_cyprus","cdm_edaphobase_test",
|
44
|
"cdm_edit_algaterra", "cdm_edit_algaterranew","cdm_edit_cichorieae",
|
45
|
"cdm_edit_flora_central_africa", "cdm_edit_flora_malesiana",
|
46
|
"cdm_edit_globis", "cdm_edit_palmae",
|
47
|
"cdm_flora_cuba", "cdm_flora_guianas",
|
48
|
"cdm_flore_gabon",
|
49
|
"cdm_iapt",
|
50
|
"cdm_mt_moose",
|
51
|
"cdm_mt_standardliste",
|
52
|
"cdm_pesi_erms", "cdm_pesi_euromed", "cdm_pesi_fauna_europaea",
|
53
|
"cdm_phycobank",
|
54
|
"cdm_proibiosphere_chenopodium_pilot",
|
55
|
"cdm_rem_conf_ak", "cdm_rem_conf_am", "cdm_rem_conf_kl", "cdm_rem_conf_pp",
|
56
|
"cdm_rl_animalia","cdm_rl_german_sl","cdm_rl_mammalia", "cdm_rl_plantae",
|
57
|
"cdm_salvador","cdm_test1","cdm_test2",
|
58
|
"cdm_test_euromed",
|
59
|
"cdm_vibrant_index"
|
60
|
};
|
61
|
|
62
|
private static String[] testDatabasesOthers = new String[]{"cdm_caryo_amaranthaceae",
|
63
|
"cdm_caryo_caryophyllales","cdm_flora_malesiana_prospective","cdm_pesi_all",
|
64
|
};
|
65
|
|
66
|
private static String[] productionDatabases = new String[]{
|
67
|
"cdm_production_col",
|
68
|
"cdm_production_algaterra",
|
69
|
"cdm_production_algaterranew",
|
70
|
"cdm_production_asteraceae",
|
71
|
"cdm_production_campanulaceae",
|
72
|
"cdm_production_caryo_amaranthaceae",
|
73
|
"cdm_production_caryo_nepenthaceae",
|
74
|
"cdm_production_caryophyllales",
|
75
|
"cdm_production_caryophyllales_spp",
|
76
|
"cdm_production_cichorieae",
|
77
|
"cdm_production_corvidae",
|
78
|
"cdm_production_cyprus",
|
79
|
"cdm_production_diptera",
|
80
|
"cdm_production_edaphobase",
|
81
|
"cdm_production_euromed",
|
82
|
"cdm_production_flora_bogota",
|
83
|
"cdm_production_flora_central_africa",
|
84
|
"cdm_production_flora_cuba",
|
85
|
"cdm_production_flora_greece",
|
86
|
"cdm_production_flora_guianas",
|
87
|
"cdm_production_flora_malesiana",
|
88
|
"cdm_production_flora_malesiana_clean",
|
89
|
"cdm_production_flora_malesiana_prospective",
|
90
|
"cdm_production_flore_gabon",
|
91
|
"cdm_production_globis",
|
92
|
"cdm_production_myristicaceae",
|
93
|
"cdm_production_palmae",
|
94
|
"cdm_production_phycobank",
|
95
|
"cdm_production_piB_ants_pilot",
|
96
|
"cdm_production_piB_campylopus_pilot",
|
97
|
"cdm_production_piB_chenopodium_pilot",
|
98
|
"cdm_production_piB_eupolybothrus_pilot",
|
99
|
"cdm_production_piB_lactarius_pilot",
|
100
|
"cdm_production_piB_nephrolepis_pilot",
|
101
|
"cdm_production_piB_spiders_pilot",
|
102
|
"cdm_production_rl_animalia",
|
103
|
"cdm_production_rl_animalia_final",
|
104
|
"cdm_production_rl_armeria_demo",
|
105
|
"cdm_production_rl_german_sl",
|
106
|
"cdm_production_rl_lumbricidae",
|
107
|
"cdm_production_rl_mammalia",
|
108
|
"cdm_production_rl_moose",
|
109
|
"cdm_production_rl_plantae",
|
110
|
"cdm_production_rl_standardliste",
|
111
|
"cdm_production_rubiaceae_mexico",
|
112
|
"cdm_production_salvador",
|
113
|
"cdm_production_vibrant_index"
|
114
|
};
|
115
|
|
116
|
|
117
|
static BgbmServer bgbmServer = BgbmServer.TEST;
|
118
|
|
119
|
|
120
|
static String username = "edit";
|
121
|
|
122
|
|
123
|
|
124
|
|
125
|
/**
|
126
|
*
|
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
|
|
156
|
/**
|
157
|
*
|
158
|
*/
|
159
|
private static void singleUpdateStep(boolean startApp) {
|
160
|
DbSchemaValidation schema = DbSchemaValidation.VALIDATE;
|
161
|
String server = bgbmServer.server;
|
162
|
for (String database : bgbmServer.databases){
|
163
|
logger.warn("Update: " + database + " ... ");
|
164
|
ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
|
165
|
SchemaUpdateResult result = new SchemaUpdateResult();
|
166
|
try {
|
167
|
System.out.println(database);
|
168
|
//define step here !!!
|
169
|
SchemaUpdaterStepBase step = IndexRenamer.NewStringInstance(null, "TaxonName",
|
170
|
"taxonNameBaseNameCacheIndex", "taxonNameNameCacheIndex", "nameCache", 255);
|
171
|
SchemaUpdaterStepBase step2 = IndexRenamer.NewStringInstance(null, "TaxonName",
|
172
|
"taxonNameBaseTitleCacheIndex", "taxonNameTitleCacheIndex", "titleCache", 333);
|
173
|
dataSource.startTransaction();
|
174
|
step.invoke(dataSource, DefaultProgressMonitor.NewInstance(), CaseType.caseTypeOfDatasource(dataSource), result);
|
175
|
step2.invoke(dataSource, DefaultProgressMonitor.NewInstance(), CaseType.caseTypeOfDatasource(dataSource), result);
|
176
|
dataSource.commitTransaction();
|
177
|
System.out.println(result.createReport());
|
178
|
if (startApp){
|
179
|
CdmApplicationController appCtr = CdmIoApplicationController.NewInstance(dataSource,schema);
|
180
|
System.out.println(appCtr.getClassificationService().count(Classification.class));
|
181
|
}
|
182
|
} catch (Exception e) {
|
183
|
result.addException(e, e.getMessage());
|
184
|
e.printStackTrace();
|
185
|
}
|
186
|
if(!result.isSuccess() ){
|
187
|
logger.warn("Problem");
|
188
|
System.exit(1);
|
189
|
}
|
190
|
|
191
|
logger.warn("Update: " + database + " ... DONE ");
|
192
|
}
|
193
|
|
194
|
}
|
195
|
|
196
|
|
197
|
/**
|
198
|
* @param args
|
199
|
*/
|
200
|
public static void main(String[] args) {
|
201
|
updateToCurrentVersion();
|
202
|
// singleUpdateStep(false);
|
203
|
System.exit(0);
|
204
|
}
|
205
|
|
206
|
|
207
|
private enum BgbmServer{
|
208
|
INTEGRATION (integrationServer, integrationDatabases),
|
209
|
TEST(testServer,testDatabases),
|
210
|
PRODUCTION(productionServer,productionDatabases);
|
211
|
private final String server;
|
212
|
private final String[] databases;
|
213
|
private BgbmServer(String server, String[] databases){
|
214
|
this.server = server;
|
215
|
this.databases = databases;
|
216
|
}
|
217
|
|
218
|
}
|
219
|
}
|