Project

General

Profile

Download (9.8 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.eflora;
11

    
12
import java.net.URI;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import org.apache.log4j.Logger;
17
import org.springframework.transaction.TransactionStatus;
18

    
19
import eu.etaxonomy.cdm.api.service.ITermService;
20
import eu.etaxonomy.cdm.database.DbSchemaValidation;
21
import eu.etaxonomy.cdm.database.ICdmDataSource;
22
import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
23
import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
24
import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;
25
import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;
26
import eu.etaxonomy.cdm.io.eflora.EfloraImportConfigurator;
27
import eu.etaxonomy.cdm.io.eflora.floraMalesiana.FloraMalesianaTransformer;
28
import eu.etaxonomy.cdm.model.description.Feature;
29
import eu.etaxonomy.cdm.model.description.FeatureNode;
30
import eu.etaxonomy.cdm.model.description.FeatureTree;
31
import eu.etaxonomy.cdm.model.description.PolytomousKey;
32
import eu.etaxonomy.cdm.model.reference.Reference;
33
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
34

    
35
/**
36
 * @author a.mueller
37
 * @created 20.06.2008
38
 * @version 1.0
39
 */
40
public class FloraMalesianaActivator_OLD {
41
	private static final Logger logger = Logger.getLogger(FloraMalesianaActivator_OLD.class);
42
	
43
	//database validation status (create, update, validate ...)
44
	static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE;
45
	static final URI fmSource1 = EfloraSources.fm_sapindaceae_local();
46
	static final URI fmSource2 = EfloraSources.fm_sapindaceae2_local();
47
	static final URI fmSource13_1 = EfloraSources.fm_13_1_local();
48
	static final URI fmSource13_2 = EfloraSources.fm_13_2_local();
49
	
50
	
51
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_andreasM3();
52
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_flora_malesiana_preview();
53
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_flora_malesiana_production();
54
	static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
55
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql();
56
	
57

    
58
	//feature tree uuid
59
	public static final UUID featureTreeUuid = UUID.fromString("168df0c6-6429-484c-b26f-ded1f7e44bd9");
60
	
61
	//classification
62
	static final UUID classificationUuid = UUID.fromString("ca4e4bcb-a1d1-4124-a358-a3d3c41dd450");
63
	
64
	//check - import
65
	static final CHECK check = CHECK.IMPORT_WITHOUT_CHECK;
66
	
67
	static boolean doPrintKeys = false;
68
	
69
	//taxa
70
	static final boolean doTaxa = true;
71

    
72
	private boolean includeSapindaceae1 = true;
73
	private boolean includeSapindaceae2 = true;
74
	private boolean includeVol13_1 = false;
75
	private boolean includeVol13_2 = false;
76

    
77
	
78
	private void doImport(ICdmDataSource cdmDestination){
79
		
80
		//make Source
81
		URI source = fmSource1;
82
		EfloraImportConfigurator floraMalesianaConfig= EfloraImportConfigurator.NewInstance(source, cdmDestination);
83
		floraMalesianaConfig.setClassificationUuid(classificationUuid);
84
		floraMalesianaConfig.setDoTaxa(doTaxa);
85
		floraMalesianaConfig.setCheck(check);
86
		floraMalesianaConfig.setDoPrintKeys(doPrintKeys);
87
		floraMalesianaConfig.setDbSchemaValidation(hbm2dll);
88
		
89
		CdmDefaultImport<EfloraImportConfigurator> myImport = new CdmDefaultImport<EfloraImportConfigurator>();
90

    
91
		
92
		//Sapindaceae1
93
		if (includeSapindaceae1){
94
			System.out.println("Start import from ("+ fmSource1.toString() + ") ...");
95
			floraMalesianaConfig.setSourceReference(getSourceReference("Flora Malesiana - Sapindaceae I"));
96
			myImport.invoke(floraMalesianaConfig);
97
			System.out.println("End import from ("+ fmSource1.toString() + ")...");
98
		}
99
		
100
		//Sapindaceae2
101
		if (includeSapindaceae2){
102
			System.out.println("\nStart import from ("+ fmSource2.toString() + ") ...");
103
			source = fmSource2;
104
			floraMalesianaConfig.setSource(source);
105
			floraMalesianaConfig.setSourceReference(getSourceReference("Flora Malesiana - Sapindaceae II"));
106
			myImport.invoke(floraMalesianaConfig);
107
			System.out.println("End import from ("+ fmSource2.toString() + ")...");
108
		}
109
		
110
		floraMalesianaConfig.setSourceReference(getSourceReference("Flora Malesiana - Vol. 13"));
111
		//Vol13_1
112
		if (includeVol13_1){
113
			System.out.println("\nStart import from ("+ fmSource13_1.toString() + ") ...");
114
			source = fmSource13_1;
115
			floraMalesianaConfig.setSource(source);
116
			myImport.invoke(floraMalesianaConfig);
117
			System.out.println("End import from ("+ fmSource13_1.toString() + ")...");
118
		}
119

    
120
		//Vol13_2
121
		if (includeVol13_2){
122
			System.out.println("\nStart import from ("+ fmSource13_2.toString() + ") ...");
123
			source = fmSource13_2;
124
			floraMalesianaConfig.setSource(source);
125
			myImport.invoke(floraMalesianaConfig);
126
			System.out.println("End import from ("+ fmSource13_2.toString() + ")...");
127
		}
128
		
129
		FeatureTree tree = makeFeatureNode(myImport.getCdmAppController().getTermService());
130
		myImport.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree);
131
		
132
		//check keys
133
		if (doPrintKeys){
134
			TransactionStatus tx = myImport.getCdmAppController().startTransaction();
135
			List<PolytomousKey> keys = myImport.getCdmAppController().getPolytomousKeyService().list(PolytomousKey.class, null, null, null, null);
136
			for(PolytomousKey key : keys){
137
				key.print(System.out);
138
				System.out.println();
139
			}
140
			myImport.getCdmAppController().commitTransaction(tx);
141
		}
142
		
143
	}
144
	
145
	private Reference getSourceReference(String string) {
146
		Reference result = ReferenceFactory.newGeneric();
147
		result.setTitleCache(string);
148
		return result;
149
	}
150

    
151
	private FeatureTree makeFeatureNode(ITermService service){
152
		FloraMalesianaTransformer transformer = new FloraMalesianaTransformer();
153
		
154
		FeatureTree result = FeatureTree.NewInstance(featureTreeUuid);
155
		result.setTitleCache("Flora Malesiana Presentation Feature Tree");
156
		FeatureNode root = result.getRoot();
157
		FeatureNode newNode;
158
		
159
		newNode = FeatureNode.NewInstance(Feature.DESCRIPTION());
160
		root.addChild(newNode);
161
		
162
		addFeataureNodesByStringList(descriptionFeatureList, newNode, transformer, service);
163

    
164
		addFeataureNodesByStringList(generellDescriptionsList, root, transformer, service);
165

    
166
		
167
		newNode = FeatureNode.NewInstance(Feature.DISTRIBUTION());
168
		root.addChild(newNode);
169

    
170
		newNode = FeatureNode.NewInstance(Feature.ECOLOGY());
171
		root.addChild(newNode);
172
		addFeataureNodesByStringList(habitatEcologyList, root, transformer, service);
173
		
174
		newNode = FeatureNode.NewInstance(Feature.USES());
175
		root.addChild(newNode);
176
		
177
		addFeataureNodesByStringList(chomosomesList, root, transformer, service);
178

    
179
		newNode = FeatureNode.NewInstance(Feature.CITATION());
180
		root.addChild(newNode);
181
		
182
		return result;
183
	}
184
	
185
	private static String [] chomosomesList = new String[]{
186
		"Chromosomes", 
187
	};
188

    
189
	
190
	private static String [] habitatEcologyList = new String[]{
191
		"Habitat",
192
		"Habitat & Ecology"
193
	};
194
	
195
	
196
	private static String [] generellDescriptionsList = new String[]{
197
		"Fossils",
198
		"Morphology and anatomy",
199
		"Morphology", 
200
		"Vegetative morphology and anatomy",
201
		"Flower morphology",
202
		"Palynology",  
203
		"Pollination",  
204
		"Pollen morphology",
205
		"Life cycle",
206
		"Fruits and embryology",
207
		"Dispersal",
208
		"Wood anatomy",  
209
		"Leaf anatomy",  
210
		"Chromosome numbers", 
211
		"Phytochemistry and Chemotaxonomy",
212
		"Phytochemistry",
213
		"Taxonomy",	
214
	};
215

    
216
	private static String [] descriptionFeatureList = new String[]{
217
		"lifeform", 
218
		"Bark",  
219
		"Indumentum",  
220
		"endophytic body",  
221
		"flowering buds",  
222
		"Branchlets",  
223
		"Branches",  
224
		"Branch",  
225
		"Flowering branchlets",
226
		"Trees",  
227
		"Twigs",  
228
		"stem",  
229
		"Stems",  
230
		"stem leaves", 
231
		"Leaves",
232
		"flower-bearing stems",  
233
		"Petiole",  
234
		"Petiolules",  
235
		"Leaflets", 
236
		"Thyrsus",  
237
		"Thyrses",  
238
		"Inflorescences",  
239
		"Inflorescence",
240
		"Young inflorescences", 
241
		"Bracts",  
242
		"Pedicels",  
243
		"flowering buds",  
244
		"scales",  
245
		"Buds",  
246
		"Flowers",  
247
		"Flower",  
248
		"Flowering",
249
		"Stigma",  
250
		"perianth",  
251
		"Sepals",  
252
		"Sepal",  
253
		"Outer Sepals",  
254
		"Axillary",  
255
		"cymes",  
256
		"Calyx",  
257
		"Petal",  
258
		"Petals",  
259
		"perigone tube",
260
		"Disc",  
261
		"corolla",  
262
		"Stamens",  
263
		"Staminodes",  
264
		"Ovary",  
265
		"Anthers",
266
		"anther",  
267
		"Pistil",  
268
		"Pistillode",  
269
		"Ovules",  
270
		"androecium",  
271
		"gynoecium",  
272
		"Filaments",  		
273
		"Style",  
274
		"annulus",  
275
		"female flowers",  
276
		"Male flowers",  
277
		"Female",  
278
		"Infructescences",    //order not consistent (sometimes before "Flowers")  
279
		"Fruit",  
280
		"Fruits",  
281
		"fruiting axes",  
282
		"drupes",  
283
		"Arillode",  
284
		"seed",  
285
		"Seeds",  
286
		"Seedling",  
287
		"flower tube", 
288
		"nutlets",  
289
		"pollen",  
290
		"secondary xylem",  
291
		"chromosome number",  
292
	
293
		"figure",  
294
		"fig",  
295
		"figs",  
296

    
297

    
298

    
299
		
300
	};
301
	
302
	public void addFeataureNodesByStringList(String[] featureStringList, FeatureNode root, IInputTransformer transformer, ITermService termService){
303
		try {
304
			for (String featureString : featureStringList){
305
			UUID featureUuid;
306
			featureUuid = transformer.getFeatureUuid(featureString);
307
			Feature feature = (Feature)termService.find(featureUuid);
308
			if (feature != null){
309
				FeatureNode child = FeatureNode.NewInstance(feature);
310
				root.addChild(child);	
311
			}
312
		}
313
		} catch (UndefinedTransformerMethodException e) {
314
			logger.error("getFeatureUuid is not implemented in transformer. Features could not be added");
315
		}
316
	}
317
	
318

    
319

    
320
	/**
321
	 * @param args
322
	 */
323
	public static void main(String[] args) {
324
		FloraMalesianaActivator_OLD me = new FloraMalesianaActivator_OLD();
325
		me.doImport(cdmDestination);
326
	}
327
	
328
}
(11-11/15)