Project

General

Profile

Download (9.56 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.api.application.ICdmApplicationConfiguration;
21
import eu.etaxonomy.cdm.app.common.CdmDestinations;
22
import eu.etaxonomy.cdm.app.images.ImageImportConfigurator;
23
import eu.etaxonomy.cdm.app.tcs.TcsSources;
24
import eu.etaxonomy.cdm.app.wp6.palmae.config.PalmaeProtologueImportConfigurator;
25
import eu.etaxonomy.cdm.database.DbSchemaValidation;
26
import eu.etaxonomy.cdm.database.ICdmDataSource;
27
import eu.etaxonomy.cdm.io.PalmaeImageImport;
28
import eu.etaxonomy.cdm.io.PalmaeProtologueImport;
29
import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
30
import eu.etaxonomy.cdm.io.common.IImportConfigurator;
31
import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
32
import eu.etaxonomy.cdm.io.common.IImportConfigurator.DO_REFERENCES;
33
import eu.etaxonomy.cdm.io.tcsrdf.TcsRdfImportConfigurator;
34
import eu.etaxonomy.cdm.model.description.Feature;
35
import eu.etaxonomy.cdm.model.description.FeatureNode;
36
import eu.etaxonomy.cdm.model.description.FeatureTree;
37

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

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

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

    
172
		return result;
173
		
174

    
175
	}
176

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

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

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

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

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

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