4 package eu
.etaxonomy
.cdm
.database
.update
;
6 import org
.apache
.log4j
.Logger
;
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
;
20 public class BgbmInstancesUpdater
{
21 private static final Logger logger
= Logger
.getLogger(BgbmInstancesUpdater
.class);
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
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"
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",
43 "cdm_edit_cichorieae",
44 "cdm_edit_flora_central_africa", "cdm_edit_flora_malesiana",
45 "cdm_edit_globis", "cdm_edit_palmae",
49 "cdm_greece_bupleurum","cdm_greece_bupleurum_01","cdm_greece_bupleurum_04",
51 "cdm_mt_standardliste",
53 "cdm_pesi_erms", "cdm_pesi_euromed", "cdm_pesi_fauna_europaea",
55 "cdm_production_additivity_ontology",
57 "cdm_rl_animalia","cdm_rl_german_sl","cdm_rl_mammalia", "cdm_rl_plantae",
58 "cdm_salvador","cdm_test1","cdm_test2",
63 private static String
[] testDatabasesOthers
= new String
[]{"cdm_caryo_amaranthaceae",
64 "cdm_caryo_caryophyllales","cdm_flora_malesiana_prospective","cdm_pesi_all",
67 private static String
[] productionDatabases
= new String
[]{
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"
124 static BgbmServer bgbmServer
= BgbmServer
.TEST
;
126 static String username
= "edit";
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();
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());
146 if(!result
.isSuccess() ){
147 logger
.warn("Problem");
151 logger
.warn("Update: " + database
+ " ... DONE ");
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();
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());
175 CdmApplicationController appCtr
= CdmIoApplicationController
.NewInstance(dataSource
,schema
);
176 System
.out
.println(appCtr
.getClassificationService().count(Classification
.class));
178 } catch (Exception e
) {
179 result
.addException(e
, e
.getMessage());
182 if(!result
.isSuccess() ){
183 logger
.warn("Problem");
187 logger
.warn("Update: " + database
+ " ... DONE ");
192 public static void main(String
[] args
) {
193 updateToCurrentVersion();
194 // singleUpdateStep(false);
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
;