Project

General

Profile

Download (9.49 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.wp6.palmae;
11

    
12
import java.io.File;
13
import java.net.URI;
14
import java.net.URISyntaxException;
15
import java.util.UUID;
16

    
17
import org.apache.log4j.Logger;
18

    
19
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
20
import eu.etaxonomy.cdm.app.common.CdmDestinations;
21
import eu.etaxonomy.cdm.app.images.ImageImportConfigurator;
22
import eu.etaxonomy.cdm.app.tcs.TcsSources;
23
import eu.etaxonomy.cdm.app.wp6.palmae.config.PalmaeProtologueImportConfigurator;
24
import eu.etaxonomy.cdm.database.DbSchemaValidation;
25
import eu.etaxonomy.cdm.database.ICdmDataSource;
26
import eu.etaxonomy.cdm.io.PalmaeImageImport;
27
import eu.etaxonomy.cdm.io.PalmaeProtologueImport;
28
import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
29
import eu.etaxonomy.cdm.io.common.IImportConfigurator;
30
import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
31
import eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES;
32
import eu.etaxonomy.cdm.io.tcsrdf.TcsRdfImportConfigurator;
33
import eu.etaxonomy.cdm.model.description.Feature;
34
import eu.etaxonomy.cdm.model.description.FeatureNode;
35
import eu.etaxonomy.cdm.model.description.FeatureTree;
36

    
37
/**
38
 * @author a.mueller
39
 * @created 20.06.2008
40
 * @version 1.0
41
 */
42
public class PalmaeActivator {
43
	private static final Logger logger = Logger.getLogger(PalmaeActivator.class);
44
	
45
	//database validation status (create, update, validate ...)
46
	static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE;
47
	static final String tcsSource = TcsSources.arecaceae_local();
48
	static final ICdmDataSource cdmDestination = CdmDestinations.localH2Palmae();
49
	
50
	// set the webserver path to the images
51
	private static final String imageUrlString = "http://wp5.e-taxonomy.eu/media/palmae/photos/";
52
	// set the webserver path to the protologues
53
	public static final String protologueUrlString = "http://wp5.e-taxonomy.eu/media/palmae/protologe/";
54

    
55
	public static final UUID featureTreeUuid = UUID.fromString("72ccce05-7cc8-4dab-8e47-bf3f5fd848a0");
56
		
57
	static final UUID treeUuid = UUID.fromString("1adb71d4-cce6-45e1-b578-e668778d9ec6");
58
	static final UUID secUuid = UUID.fromString("5f32b8af-0c97-48ac-8d33-6099ed68c625");
59
	static final String sourceSecId = "palm_pub_ed_999999";
60
	static final boolean pubishReferencesInBibliography = false;
61
	
62
	//should the other imports run as well?
63
	static final boolean includeTaxonX = true;
64
	static final boolean includeImages = true;
65
	static final boolean includeExcelProtologue = true;
66
	static final boolean includeMediaProtologue = true;
67
	static final boolean updateFeatureTree = true;
68
	static final boolean updateNameUsage = true;
69
	
70
	//check - import
71
	static final CHECK check = CHECK.CHECK_AND_IMPORT;
72
	
73
	static boolean useClassification = true;
74
	
75
	//authors
76
	static final boolean doAuthors = true;
77
	//references
78
	static final DO_REFERENCES doReferences =  DO_REFERENCES.ALL;
79
	//names
80
	static final boolean doTaxonNames = true;
81
	static final boolean doRelNames = true;
82
	
83
	//taxa
84
	static final boolean doTaxa = true;
85
	static final boolean doRelTaxa = true;
86
	static final boolean doFacts = true;
87

    
88
	
89
	private boolean doImport(ICdmDataSource destination){
90
		boolean success = true;
91
		System.out.println("Start import from Tcs("+ tcsSource.toString() + ") ...");
92
		
93
		//make Source
94
		URI source;
95
		try {
96
			source = new URI(tcsSource);
97
		
98
			TcsRdfImportConfigurator tcsImportConfigurator = TcsRdfImportConfigurator.NewInstance(source,  destination);
99
			
100
			tcsImportConfigurator.setClassificationUuid(treeUuid);
101
			tcsImportConfigurator.setSecUuid(secUuid);
102
			tcsImportConfigurator.setSourceSecId(sourceSecId);
103
			
104
			tcsImportConfigurator.setDoReferences(doReferences);
105
			tcsImportConfigurator.setDoTaxonNames(doTaxonNames);
106
			tcsImportConfigurator.setDoRelNames(doRelNames);
107
			
108
			tcsImportConfigurator.setDoTaxa(doTaxa);
109
			tcsImportConfigurator.setDoRelTaxa(doRelTaxa);
110
			tcsImportConfigurator.setDoFacts(doFacts);
111
			tcsImportConfigurator.setUseClassification(useClassification);
112
			tcsImportConfigurator.setPublishReferences(pubishReferencesInBibliography);
113
			
114
			tcsImportConfigurator.setCheck(check);
115
			tcsImportConfigurator.setDbSchemaValidation(hbm2dll);
116
	
117
			// invoke import
118
			CdmDefaultImport<TcsRdfImportConfigurator> tcsImport = new CdmDefaultImport<TcsRdfImportConfigurator>();
119
			success &= tcsImport.invoke(tcsImportConfigurator);
120
			
121
			//make feature tree
122
			logger.info("Make feature tree");
123
			CdmApplicationController app = tcsImport.getCdmAppController();
124
			
125
			FeatureTree tree = getFeatureTree();
126
			app.getFeatureTreeService().saveOrUpdate(tree);
127
			System.out.println("End import from TCS ("+ source.toString() + ")...");
128
			
129
			return success;
130
		} catch (URISyntaxException e) {
131
			e.printStackTrace();
132
			return false;
133
		}
134
		
135
	}
136
	
137
	
138
	private FeatureTree getFeatureTree(){
139
		
140
		FeatureTree result = FeatureTree.NewInstance(featureTreeUuid);
141
		FeatureNode root = result.getRoot();
142
		
143
		FeatureNode newNode;
144
		newNode = FeatureNode.NewInstance(Feature.INTRODUCTION());
145
		root.addChild(newNode);
146
		newNode = FeatureNode.NewInstance(Feature.DISTRIBUTION());
147
		root.addChild(newNode);
148
		newNode = FeatureNode.NewInstance(Feature.BIOLOGY_ECOLOGY());
149
		root.addChild(newNode);
150
		newNode = FeatureNode.NewInstance(Feature.CONSERVATION());
151
		root.addChild(newNode);
152
		newNode = FeatureNode.NewInstance(Feature.COMMON_NAME());
153
		root.addChild(newNode);
154
		newNode = FeatureNode.NewInstance(Feature.ETYMOLOGY());
155
		root.addChild(newNode);
156
		newNode = FeatureNode.NewInstance(Feature.USES());
157
		root.addChild(newNode);
158
		newNode = FeatureNode.NewInstance(Feature.CULTIVATION());
159
		root.addChild(newNode);
160
		newNode = FeatureNode.NewInstance(Feature.DISCUSSION());
161
		root.addChild(newNode);
162
		newNode = FeatureNode.NewInstance(Feature.DIAGNOSIS());
163
		root.addChild(newNode);
164
		newNode = FeatureNode.NewInstance(Feature.DESCRIPTION());
165
		root.addChild(newNode);
166
		newNode = FeatureNode.NewInstance(Feature.MATERIALS_EXAMINED());
167
		root.addChild(newNode);
168
		newNode = FeatureNode.NewInstance(Feature.ANATOMY());
169
		root.addChild(newNode);
170

    
171
		return result;
172
		
173

    
174
	}
175

    
176
	/**
177
	 * @param args
178
	 */
179
	public static void main(String[] args) {
180
		boolean success = true;
181
		
182
		logger.debug("start");
183
		ICdmDataSource destination = CdmDestinations.chooseDestination(args) != null ? CdmDestinations.chooseDestination(args) : cdmDestination;
184
		
185
		PalmaeActivator me = new PalmaeActivator();
186
		me.doImport(destination);
187
		
188
		if (includeImages){
189
			System.out.println("Start importing images ...");
190
			CdmDefaultImport<IImportConfigurator> imageImporter = new CdmDefaultImport<IImportConfigurator>();
191
			URI folderUri;
192
			try {
193
				folderUri = new URI(PalmaeImageActivator.sourceFolderString);
194
				ImageImportConfigurator imageConfigurator = ImageImportConfigurator.NewInstance(
195
						folderUri, destination, imageUrlString, PalmaeImageImport.class);
196
				imageConfigurator.setSecUuid(secUuid);
197
				success &= imageImporter.invoke(imageConfigurator);
198
				System.out.println("End importing images ...");
199
			} catch (URISyntaxException e) {
200
				e.printStackTrace();
201
			}
202
		}
203

    
204
		if (includeExcelProtologue){
205
			System.out.println("Start importing protologues ...");
206
			URI fileUri;
207
			try {
208
				fileUri = new URI(PalmaeExcelProtologueActivator.sourceFileString);
209
				ImageImportConfigurator imageConfigurator = ImageImportConfigurator.NewInstance(
210
						fileUri, destination, protologueUrlString, PalmaeProtologueImport.class);
211
				imageConfigurator.setSecUuid(secUuid);
212
				
213
				CdmDefaultImport<IImportConfigurator> imageImporter = new CdmDefaultImport<IImportConfigurator>();
214
				imageImporter.invoke(imageConfigurator);
215
				System.out.println("End importing protologues ...");
216
			} catch (URISyntaxException e) {
217
				e.printStackTrace();
218
			}
219
			
220
		}
221
		if (includeMediaProtologue){
222
			System.out.println("Start importing protologues from \\\\media...");
223
			String protologueSource = PalmaeProtologueImportActivator.protologueSource;
224
			String urlString = protologueUrlString;
225
			
226
			File source = new File (protologueSource);
227
			PalmaeProtologueImportConfigurator protologConfig = PalmaeProtologueImportConfigurator.NewInstance(source, destination, urlString);
228
			CdmDefaultImport<IImportConfigurator> cdmImport = new CdmDefaultImport<IImportConfigurator>();
229
			
230
			//protologConfig.setDoFacts(doDescriptions);
231
			protologConfig.setCheck(check);
232
			protologConfig.setDbSchemaValidation(DbSchemaValidation.UPDATE);
233

    
234
			success &= cdmImport.invoke(protologConfig);
235

    
236
			System.out.println("End importing protologues ...");
237
		}
238
		
239
		if (includeTaxonX){
240
			System.out.println("Start importing taxonX ...");
241
			PalmaeTaxonXImportActivator taxonXimporter = new PalmaeTaxonXImportActivator();
242
			PalmaeTaxonXImportActivator.cdmDestination = destination;
243
			success &= taxonXimporter.runImport();
244
			System.out.println("End importing taxonX ...");
245
		}
246
		
247
		PalmaePostImportUpdater updater = new PalmaePostImportUpdater();
248
		if (updateFeatureTree){
249
			updater.updateMissingFeatures(destination);
250
		}
251

    
252
		if (updateNameUsage){
253
			updater.updateNameUsage(destination);
254
		}
255

    
256
		
257
		String strSuccess = "";
258
		if (success == false){
259
			strSuccess = "not ";
260
		}
261
		System.out.println("Import " + strSuccess + "successful");
262
		
263
	}
264
	
265
}
(1-1/6)