Project

General

Profile

Download (5.58 KB) Statistics
| Branch: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.cdm.app.common.tasks;
11

    
12
import java.util.Arrays;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import org.apache.log4j.Logger;
17

    
18
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
19
import eu.etaxonomy.cdm.api.service.config.CacheUpdaterConfigurator;
20
import eu.etaxonomy.cdm.app.common.CdmDestinations;
21
import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
22
import eu.etaxonomy.cdm.database.DbSchemaValidation;
23
import eu.etaxonomy.cdm.database.ICdmDataSource;
24
import eu.etaxonomy.cdm.io.api.application.CdmIoApplicationController;
25
import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
26
import eu.etaxonomy.cdm.io.common.ImportResult;
27

    
28
import eu.etaxonomy.cdm.model.name.TaxonName;
29
import eu.etaxonomy.cdm.model.reference.Reference;
30
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
31

    
32

    
33
/**
34
 * TODO add the following to a wiki page:
35
 * HINT: If you are about to import into a mysql data base running under windows and if you wish to dump and restore the resulting data base under another operation systen
36
 * you must set the mysql system variable lower_case_table_names = 0 in order to create data base with table compatible names.
37
 *
38
 *
39
 * @author a.mueller
40
 *
41
 */
42
public class CacheUpdater {
43
	private static final Logger logger = Logger.getLogger(CacheUpdater.class);
44

    
45
	//database validation status (create, update, validate ...)
46
//	static DbSchemaValidation hbm2dll = DbSchemaValidation.VALIDATE;
47
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_edit_cichorieae_preview_direct();
48
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_production_cichorieae();
49
//	static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
50
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_euromed3();
51
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_production_flora_deutschland();
52
	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_production_caryophyllales();
53

    
54

    
55
	static final List<String> classListStrings =  Arrays.asList(new String[]{
56
			//IdentifiableEntity.class.getName(),
57
//			IdentifiableEntity.class.getName(),
58
//			AgentBase.class.getName(),
59
			Reference.class.getName(),
60
			TaxonName.class.getName(),
61
			TaxonBase.class.getName()
62
	});
63
	//new ArrayList<Class<? extends IdentifiableEntity>>();
64

    
65

    
66

    
67
	private ImportResult doInvoke(ICdmDataSource destination){
68
		ImportResult result = new ImportResult();
69

    
70
		CacheUpdaterConfigurator config;
71
		try {
72
			config = CacheUpdaterConfigurator.NewInstance( classListStrings);
73

    
74
			// invoke import
75
			CdmApplicationController appCtrInit = CdmIoApplicationController.NewInstance(destination, DbSchemaValidation.VALIDATE, false);
76
			appCtrInit.authenticate("admin", "kups366+RU");
77
			UUID monitUuid = appCtrInit.getLongRunningTasksService().monitLongRunningTask(config);
78
			IRemotingProgressMonitor monitor = appCtrInit.getProgressMonitorService().getRemotingMonitor(monitUuid);
79
			while(monitor != null && (!monitor.isCanceled() || !monitor.isDone() || !monitor.isFailed())) {
80
				try {
81
					Thread.sleep(10);
82
				} catch (InterruptedException e) {
83
					// TODO Auto-generated catch block
84
					e.printStackTrace();
85
				}
86
                logger.info("Waiting for monitered work to start ..");
87
                monitor = appCtrInit.getProgressMonitorService().getRemotingMonitor(monitUuid);
88
			}
89
			//String successString = success ? "successful" : " with errors ";
90
			//System.out.println("End updating caches for "+ destination.getDatabase() + "..." +  successString);
91
			return result;
92
		} catch (ClassNotFoundException e) {
93
			logger.error(e);
94
			result.addException(e);
95
			return result;
96
		}
97
	}
98

    
99
	/**
100
	 * @param args
101
	 */
102
	public static void main(String[] args) {
103
		ICdmDataSource destination = CdmDestinations.chooseDestination(args) != null ? CdmDestinations.chooseDestination(args) : cdmDestination;
104

    
105
		System.out.println("Start updating caches for "+ destination.getDatabase() + "...");
106
		CacheUpdater me = new CacheUpdater();
107
		me.doInvoke(destination);
108

    
109
	}
110

    
111
	// **************** ALL *********************
112

    
113
//	//DescriptionBase
114
//	static final boolean doTaxonDescription = true;
115
//	static final boolean doSpecimenDescription = true;
116
//	static final boolean doNameDescription = true;
117
//
118
//	//AgentBase
119
//	static final boolean doPerson = true;
120
//	static final boolean doTeam = true;
121
//	static final boolean doInstitution = true;
122
//
123
//	//MediaEntities
124
//	static final boolean doCollection = true;
125
//	static final boolean doReferenceBase = true;
126
//
127
//	//SpecimenOrObservationBase
128
//	static final boolean doFieldObservation = true;
129
//	static final boolean doDeriveUnit = true;
130
//	static final boolean doLivingBeing = true;
131
//	static final boolean doObservation = true;
132
//	static final boolean doSpecimen = true;
133
//
134
//	//Media
135
//	static final boolean doMedia = true;
136
//	static final boolean doMediaKey = true;
137
//	static final boolean doFigure = true;
138
//	static final boolean doPhylogenticTree = true;
139
//
140
//
141
//	//TaxonBase
142
//	static final boolean doTaxon = true;
143
//	static final boolean doSynonym = true;
144
//
145
//	static final boolean doSequence = true;
146
//
147
//	//Names
148
//	static final boolean doTaxonName = true;
149
//
150
//	static final boolean doClassification = true;
151
//
152
//	//TermBase
153
//	static final boolean doFeatureTree = true;
154
//	static final boolean doPolytomousKey = true;
155
//
156
//	static final boolean doTermVocabulary = true;
157
//	static final boolean doDefinedTermBase = true;
158
//
159

    
160

    
161
}
(1-1/2)