Project

General

Profile

Download (7.94 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
 */
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
}
    (1-1/1)