Project

General

Profile

Download (9.34 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
package eu.etaxonomy.cdm.app.eflora;
10

    
11
import java.util.List;
12
import java.util.UUID;
13

    
14
import org.apache.log4j.Logger;
15
import org.springframework.transaction.TransactionStatus;
16

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

    
34
/**
35
 * @author a.mueller
36
 * @since 20.06.2008
37
 */
38
public class FloraMalesianaActivator_OLD {
39
	private static final Logger logger = Logger.getLogger(FloraMalesianaActivator_OLD.class);
40

    
41
	//database validation status (create, update, validate ...)
42
	static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE;
43
	static final URI fmSource1 = EfloraSources.fm_sapindaceae_local();
44
	static final URI fmSource2 = EfloraSources.fm_sapindaceae2_local();
45
	static final URI fmSource13_1 = EfloraSources.fm_13_1_local();
46
	static final URI fmSource13_2 = EfloraSources.fm_13_2_local();
47

    
48
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_andreasM3();
49
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_flora_malesiana_preview();
50
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_flora_malesiana_production();
51
	static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
52
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql();
53

    
54
	//feature tree uuid
55
	public static final UUID featureTreeUuid = UUID.fromString("168df0c6-6429-484c-b26f-ded1f7e44bd9");
56

    
57
	//classification
58
	static final UUID classificationUuid = UUID.fromString("ca4e4bcb-a1d1-4124-a358-a3d3c41dd450");
59

    
60
	//check - import
61
	static final CHECK check = CHECK.IMPORT_WITHOUT_CHECK;
62

    
63
	static boolean doPrintKeys = false;
64

    
65
	//taxa
66
	static final boolean doTaxa = true;
67

    
68
	private boolean includeSapindaceae1 = true;
69
	private boolean includeSapindaceae2 = true;
70
	private boolean includeVol13_1 = false;
71
	private boolean includeVol13_2 = false;
72

    
73

    
74
	private void doImport(ICdmDataSource cdmDestination){
75

    
76
		//make Source
77
		URI source = fmSource1;
78
		EfloraImportConfigurator floraMalesianaConfig= EfloraImportConfigurator.NewInstance(source, cdmDestination);
79
		floraMalesianaConfig.setClassificationUuid(classificationUuid);
80
		floraMalesianaConfig.setDoTaxa(doTaxa);
81
		floraMalesianaConfig.setCheck(check);
82
		floraMalesianaConfig.setDoPrintKeys(doPrintKeys);
83
		floraMalesianaConfig.setDbSchemaValidation(hbm2dll);
84

    
85
		CdmDefaultImport<EfloraImportConfigurator> myImport = new CdmDefaultImport<EfloraImportConfigurator>();
86

    
87

    
88
		//Sapindaceae1
89
		if (includeSapindaceae1){
90
			System.out.println("Start import from ("+ fmSource1.toString() + ") ...");
91
			floraMalesianaConfig.setSourceReference(getSourceReference("Flora Malesiana - Sapindaceae I"));
92
			myImport.invoke(floraMalesianaConfig);
93
			System.out.println("End import from ("+ fmSource1.toString() + ")...");
94
		}
95

    
96
		//Sapindaceae2
97
		if (includeSapindaceae2){
98
			System.out.println("\nStart import from ("+ fmSource2.toString() + ") ...");
99
			source = fmSource2;
100
			floraMalesianaConfig.setSource(source);
101
			floraMalesianaConfig.setSourceReference(getSourceReference("Flora Malesiana - Sapindaceae II"));
102
			myImport.invoke(floraMalesianaConfig);
103
			System.out.println("End import from ("+ fmSource2.toString() + ")...");
104
		}
105

    
106
		floraMalesianaConfig.setSourceReference(getSourceReference("Flora Malesiana - Vol. 13"));
107
		//Vol13_1
108
		if (includeVol13_1){
109
			System.out.println("\nStart import from ("+ fmSource13_1.toString() + ") ...");
110
			source = fmSource13_1;
111
			floraMalesianaConfig.setSource(source);
112
			myImport.invoke(floraMalesianaConfig);
113
			System.out.println("End import from ("+ fmSource13_1.toString() + ")...");
114
		}
115

    
116
		//Vol13_2
117
		if (includeVol13_2){
118
			System.out.println("\nStart import from ("+ fmSource13_2.toString() + ") ...");
119
			source = fmSource13_2;
120
			floraMalesianaConfig.setSource(source);
121
			myImport.invoke(floraMalesianaConfig);
122
			System.out.println("End import from ("+ fmSource13_2.toString() + ")...");
123
		}
124

    
125
		TermTree<Feature> tree = makeFeatureNode(myImport.getCdmAppController().getTermService());
126
		myImport.getCdmAppController().getTermTreeService().saveOrUpdate(tree);
127

    
128
		//check keys
129
		if (doPrintKeys){
130
			TransactionStatus tx = myImport.getCdmAppController().startTransaction();
131
			List<PolytomousKey> keys = myImport.getCdmAppController().getPolytomousKeyService().list(PolytomousKey.class, null, null, null, null);
132
			for(PolytomousKey key : keys){
133
				key.print(System.out);
134
				System.out.println();
135
			}
136
			myImport.getCdmAppController().commitTransaction(tx);
137
		}
138

    
139
	}
140

    
141
	private Reference getSourceReference(String string) {
142
		Reference result = ReferenceFactory.newGeneric();
143
		result.setTitleCache(string, true);
144
		return result;
145
	}
146

    
147
	private TermTree<Feature> makeFeatureNode(ITermService service){
148
		FloraMalesianaTransformer transformer = new FloraMalesianaTransformer();
149

    
150
		TermTree<Feature> result = TermTree.NewFeatureInstance(featureTreeUuid);
151
		result.setTitleCache("Flora Malesiana Presentation Feature Tree", true);
152
		TermNode<Feature> root = result.getRoot();
153

    
154
		TermNode<Feature> newNode = root.addChild(Feature.DESCRIPTION());
155

    
156
		addFeatureNodesByStringList(descriptionFeatureList, newNode, transformer, service);
157

    
158
		addFeatureNodesByStringList(generellDescriptionsList, root, transformer, service);
159

    
160

    
161
		newNode = root.addChild(Feature.DISTRIBUTION());
162

    
163
		newNode = root.addChild(Feature.ECOLOGY());
164
		addFeatureNodesByStringList(habitatEcologyList, root, transformer, service);
165

    
166
		newNode = root.addChild(Feature.USES());
167

    
168
		addFeatureNodesByStringList(chomosomesList, root, transformer, service);
169

    
170
		newNode = root.addChild(Feature.CITATION());
171

    
172
		return result;
173
	}
174

    
175
	private static String [] chomosomesList = new String[]{
176
		"Chromosomes",
177
	};
178

    
179

    
180
	private static String [] habitatEcologyList = new String[]{
181
		"Habitat",
182
		"Habitat & Ecology"
183
	};
184

    
185

    
186
	private static String [] generellDescriptionsList = new String[]{
187
		"Fossils",
188
		"Morphology and anatomy",
189
		"Morphology",
190
		"Vegetative morphology and anatomy",
191
		"Flower morphology",
192
		"Palynology",
193
		"Pollination",
194
		"Pollen morphology",
195
		"Life cycle",
196
		"Fruits and embryology",
197
		"Dispersal",
198
		"Wood anatomy",
199
		"Leaf anatomy",
200
		"Chromosome numbers",
201
		"Phytochemistry and Chemotaxonomy",
202
		"Phytochemistry",
203
		"Taxonomy",
204
	};
205

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

    
283
		"figure",
284
		"fig",
285
		"figs",
286
	};
287

    
288
	public void addFeatureNodesByStringList(String[] featureStringList, TermNode<Feature> root, IInputTransformer transformer, ITermService termService){
289
		try {
290
			for (String featureString : featureStringList){
291
    			UUID featureUuid;
292
    			featureUuid = transformer.getFeatureUuid(featureString);
293
    			Feature feature = (Feature)termService.find(featureUuid);
294
    			if (feature != null){
295
    				root.addChild(feature);
296
    			}
297
    		}
298
		} catch (UndefinedTransformerMethodException e) {
299
			logger.error("getFeatureUuid is not implemented in transformer. Features could not be added");
300
		}
301
	}
302

    
303
	public static void main(String[] args) {
304
		FloraMalesianaActivator_OLD me = new FloraMalesianaActivator_OLD();
305
		me.doImport(cdmDestination);
306
	}
307
}
(11-11/15)