Project

General

Profile

Download (8.32 KB) Statistics
| Branch: | Revision:
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
    private static String mexicoServer = "132.248.13.83";
28

    
29
	private static String[] integrationDatabases = new String[]{
30
	    "cdm_integration_cichorieae",
31
		"cdm_integration_cyprus",
32
		"cdm_integration_diptera",
33
	    "cdm_integration_flora_malesiana",
34
		"cdm_integration_palmae",
35
		"cdm_integration_reference"
36
	};
37

    
38
	private static String[] testDatabases = new String[]{
39
	    "cdm_bgbm_edit_usergroup",
40
	    "cdm_caryo_nepenthes",
41
	    "cdm_caryo_spp","cdm_causcasus_workshop",
42
	    "cdm_corvidae", "cdm_cyprus","cdm_edaphobase_test",
43
		"cdm_edit_algaterra",
44
		"cdm_edit_cichorieae",
45
		"cdm_edit_flora_central_africa", "cdm_edit_flora_malesiana",
46
		"cdm_edit_globis", "cdm_edit_palmae",
47
		"cdm_flora_cuba",
48
		"cdm_flora_guianas",
49
		"cdm_flore_gabon",
50
		"cdm_greece_bupleurum","cdm_greece_bupleurum_01","cdm_greece_bupleurum_04",
51
		"cdm_mt_moose",
52
		"cdm_mt_standardliste",
53
//	    "cdm_pesi_all",
54
		"cdm_pesi_erms", "cdm_pesi_euromed", "cdm_pesi_fauna_europaea",
55
		"cdm_phycobank",
56
	    "cdm_production_additivity_ontology",
57
		"cdm_rem_conf_am",
58
		"cdm_rl_animalia","cdm_rl_german_sl","cdm_rl_mammalia", "cdm_rl_plantae",
59
		"cdm_salvador","cdm_test1","cdm_test2",
60
        "cdm_test_euromed",
61
        "cdm_vibrant_index"
62
	};
63

    
64
	private static String[] testDatabasesOthers = new String[]{"cdm_caryo_amaranthaceae",
65
		"cdm_caryo_caryophyllales","cdm_flora_malesiana_prospective","cdm_pesi_all",
66
	};
67

    
68
	private static String[] phycobankDatabase = new String[]{
69
	        "cdm_production_phycobank"
70
	};
71

    
72
	private static String[] mexicoDatabase = new String[]{
73
            "cdm_flora_mexico"
74
    };
75

    
76
	private static String[] productionDatabases = new String[]{
77
	    "cdm_production_col",
78
	    "cdm_production_algaterra",
79
	    "cdm_production_algaterranew",
80
	    "cdm_production_asteraceae",
81
	    "cdm_production_bromeliaceae",
82
	    "cdm_production_campanulaceae",
83
	    "cdm_production_caryo_amaranthaceae",
84
	    "cdm_production_caryo_nepenthaceae",
85
	    "cdm_production_caryophyllales",
86
	    "cdm_production_caryophyllales_spp",
87
	    "cdm_production_casearia",
88
	    "cdm_production_caucasus",
89
	    "cdm_production_cichorieae",
90
	    "cdm_production_corvidae",
91
	    "cdm_production_cyprus",
92
	    "cdm_production_diptera",
93
	    "cdm_production_edaphobase",
94
	    "cdm_production_euromed",
95
	    "cdm_production_euromed_caucasus",
96
	    "cdm_production_flora_central_africa",
97
	    "cdm_production_flora_cuba",
98
	    "cdm_production_flora_greece",
99
	    "cdm_production_flora_guianas",
100
	    "cdm_production_flora_malesiana",
101
	    "cdm_production_flora_malesiana_clean",
102
	    "cdm_production_flora_malesiana_prospective",
103
	    "cdm_production_flora_uzbekistan",
104
	    "cdm_production_flore_gabon",
105
	    "cdm_production_globis",
106
	    "cdm_production_greece_bupleurum",
107
	    "cdm_production_lichenes",
108
	    "cdm_production_myristicaceae",
109
	    "cdm_production_oxalis",
110
	    "cdm_production_palmae",
111
	    "cdm_production_piB_ants_pilot",
112
	    "cdm_production_piB_campylopus_pilot",
113
	    "cdm_production_piB_chenopodium_pilot",
114
	    "cdm_production_piB_eupolybothrus_pilot",
115
	    "cdm_production_piB_lactarius_pilot",
116
	    "cdm_production_piB_nephrolepis_pilot",
117
	    "cdm_production_piB_spiders_pilot",
118
	    "cdm_production_rl_animalia",
119
	    "cdm_production_rl_animalia_final",
120
	    "cdm_production_rl_armeria_demo",
121
	    "cdm_production_rl_german_sl",
122
	    "cdm_production_rl_lumbricidae",
123
	    "cdm_production_rl_mammalia",
124
	    "cdm_production_rl_moose",
125
	    "cdm_production_rl_plantae",
126
	    "cdm_production_rl_standardliste",
127
	    "cdm_production_rubiaceae_mexico",
128
	    "cdm_production_salvador",
129
	    "cdm_production_vibrant_index"
130
	};
131

    
132
    static BgbmServer bgbmServer = BgbmServer.TEST;
133

    
134
	static String username = "edit";
135

    
136
    private static void updateToCurrentVersion() {
137
        DbSchemaValidation schema = DbSchemaValidation.VALIDATE;
138
    	String server = bgbmServer.server;
139
    	for (String database : bgbmServer.databases){
140
    	    logger.warn("Update: " + database + " ... ");
141
    		ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
142
    		SchemaUpdateResult result = new SchemaUpdateResult();
143
            try {
144
    			CdmUpdater updater = new CdmUpdater();
145
    			System.out.println(database);
146
                result = updater.updateToCurrentVersion(dataSource, DefaultProgressMonitor.NewInstance());
147
    			System.out.println(result.createReport());
148
    			CdmApplicationController appCtr = CdmIoApplicationController.NewInstance(dataSource,schema);
149
    			System.out.println(appCtr.getClassificationService().count(Classification.class));
150
    		} catch (Exception e) {
151
    			result.addException(e, e.getMessage());
152
    			e.printStackTrace();
153
    		}
154
    		if(!result.isSuccess() ){
155
    			logger.warn("Problem");
156
    			System.exit(1);
157
    		}
158

    
159
    		logger.warn("Update: " + database + " ... DONE ");
160
    	}
161
    }
162

    
163
    private static void singleUpdateStep(boolean startApp) {
164
        DbSchemaValidation schema = DbSchemaValidation.VALIDATE;
165
        String server = bgbmServer.server;
166
        for (String database : bgbmServer.databases){
167
            logger.warn("Update: " + database + " ... ");
168
            ICdmDataSource dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
169
            SchemaUpdateResult result = new SchemaUpdateResult();
170
            try {
171
                System.out.println(database);
172
                //define step here !!!
173
                SchemaUpdaterStepBase step = IndexRenamer.NewStringInstance(null, "TaxonName",
174
                        "taxonNameBaseNameCacheIndex", "taxonNameNameCacheIndex", "nameCache", 255);
175
                SchemaUpdaterStepBase step2 = IndexRenamer.NewStringInstance(null, "TaxonName",
176
                        "taxonNameBaseTitleCacheIndex", "taxonNameTitleCacheIndex", "titleCache", 333);
177
                dataSource.startTransaction();
178
                step.invoke(dataSource, DefaultProgressMonitor.NewInstance(), CaseType.caseTypeOfDatasource(dataSource), result);
179
                step2.invoke(dataSource, DefaultProgressMonitor.NewInstance(), CaseType.caseTypeOfDatasource(dataSource), result);
180
                dataSource.commitTransaction();
181
                System.out.println(result.createReport());
182
                if (startApp){
183
                    CdmApplicationController appCtr = CdmIoApplicationController.NewInstance(dataSource,schema);
184
                    System.out.println(appCtr.getClassificationService().count(Classification.class));
185
                }
186
            } catch (Exception e) {
187
                result.addException(e, e.getMessage());
188
                e.printStackTrace();
189
            }
190
            if(!result.isSuccess() ){
191
                logger.warn("Problem");
192
                System.exit(1);
193
            }
194

    
195
            logger.warn("Update: " + database + " ... DONE ");
196
        }
197

    
198
    }
199

    
200
    public static void  main(String[] args) {
201
        updateToCurrentVersion();
202
//        singleUpdateStep(false);
203
        System.exit(0);
204
    }
205

    
206
    private enum BgbmServer{
207
		INTEGRATION (integrationServer, integrationDatabases),
208
		TEST(testServer, testDatabases),
209
		PRODUCTION(productionServer, productionDatabases),
210
        PHYCOBANK(productionServer, phycobankDatabase),
211
        MEXICO(mexicoServer, mexicoDatabase);
212
        private final String server;
213
		private final String[] databases;
214
		private BgbmServer(String server, String[] databases){
215
			this.server = server;
216
			this.databases = databases;
217
		}
218
	}
219
}
    (1-1/1)