Project

General

Profile

Download (5.88 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.cyprus;
11

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

    
16
import org.apache.log4j.Logger;
17

    
18
import eu.etaxonomy.cdm.api.application.ICdmRepository;
19
import eu.etaxonomy.cdm.api.service.ITermService;
20
import eu.etaxonomy.cdm.app.common.CdmDestinations;
21
import eu.etaxonomy.cdm.database.DbSchemaValidation;
22
import eu.etaxonomy.cdm.database.ICdmDataSource;
23
import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
24
import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
25
import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;
26
import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;
27
import eu.etaxonomy.cdm.io.cyprus.CyprusImportConfigurator;
28
import eu.etaxonomy.cdm.io.cyprus.CyprusTransformer;
29
import eu.etaxonomy.cdm.model.agent.Person;
30
import eu.etaxonomy.cdm.model.description.Feature;
31
import eu.etaxonomy.cdm.model.reference.Reference;
32
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
33
import eu.etaxonomy.cdm.model.term.TermNode;
34
import eu.etaxonomy.cdm.model.term.TermTree;
35

    
36
/**
37
 * @author a.mueller
38
 * @since 16.12.2010
39
 */
40
public class CyprusActivator {
41
	private static final Logger logger = Logger.getLogger(CyprusActivator.class);
42

    
43
	//database validation status (create, update, validate ...)
44
	static DbSchemaValidation hbm2dll = DbSchemaValidation.CREATE;
45
//	static final URI source = cyprus_distribution();
46
	static final URI source = cyprus_local();
47

    
48

    
49
	static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
50
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_local_postgres_CdmTest();
51
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql();
52
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_cyprus();
53
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_cyprus_production();
54

    
55

    
56
	//feature tree uuid
57
	public static final UUID featureTreeUuid = UUID.fromString("14d1e912-5ec2-4d10-878b-828788b70a87");
58

    
59
	//classification
60
	static final UUID classificationUuid = UUID.fromString("0c2b5d25-7b15-4401-8b51-dd4be0ee5cab");
61

    
62
	//check - import
63
	static final CHECK check = CHECK.IMPORT_WITHOUT_CHECK;
64

    
65
	//taxa
66
	static final boolean doTaxa = true;
67
	static final boolean doDeduplicate = false;
68
	static final boolean doDistribution = false;
69

    
70

    
71
	private void doImport(ICdmDataSource cdmDestination){
72

    
73
		//make Source
74
		CyprusImportConfigurator config= CyprusImportConfigurator.NewInstance(source, cdmDestination);
75
		config.setClassificationUuid(classificationUuid);
76
		config.setCheck(check);
77
		config.setDoDistribution(doDistribution);
78
		config.setDoTaxa(doTaxa);
79
		config.setDbSchemaValidation(hbm2dll);
80

    
81
		CdmDefaultImport myImport = new CdmDefaultImport();
82

    
83

    
84
		//...
85
		if (true){
86
			System.out.println("Start import from ("+ source.toString() + ") ...");
87
			config.setSourceReference(getSourceReference(config.getSourceReferenceTitle()));
88
			myImport.invoke(config);
89
			if (doTaxa){
90
				TermTree<Feature> tree = makeFeatureNodes(myImport.getCdmAppController().getTermService());
91
				myImport.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree);
92
			}
93

    
94
			System.out.println("End import from ("+ source.toString() + ")...");
95
		}
96

    
97

    
98

    
99
		//deduplicate
100
		if (doDeduplicate){
101
			ICdmRepository app = myImport.getCdmAppController();
102
			int count = app.getAgentService().deduplicate(Person.class, null, null);
103
			logger.warn("Deduplicated " + count + " persons.");
104
//			count = app.getAgentService().deduplicate(Team.class, null, null);
105
//			logger.warn("Deduplicated " + count + " teams.");
106
			count = app.getReferenceService().deduplicate(Reference.class, null, null);
107
			logger.warn("Deduplicated " + count + " references.");
108
		}
109

    
110
	}
111

    
112
	private Reference getSourceReference(String string) {
113
		Reference result = ReferenceFactory.newGeneric();
114
		result.setTitleCache(string, true);
115
		return result;
116
	}
117

    
118
	private TermTree<Feature> makeFeatureNodes(ITermService service){
119
		CyprusTransformer transformer = new CyprusTransformer();
120

    
121
		TermTree<Feature> result = TermTree.NewFeatureInstance(featureTreeUuid);
122
		result.setTitleCache("Cyprus Feature Tree", true);
123
		TermNode<Feature> root = result.getRoot();
124

    
125
		root.addChild(Feature.STATUS());
126

    
127
		root.addChild(Feature.DISTRIBUTION());
128

    
129
		root.addChild(Feature.SYSTEMATICS());
130

    
131
		//user defined features
132
		String [] featureList = new String[]{"Red Book", "Endemism"};
133
		addFeataureNodesByStringList(featureList, root, transformer, service);
134

    
135
		return result;
136
	}
137

    
138

    
139
	//Cyprus
140
	public static URI cyprus_local() {
141
		URI sourceUrl;
142
		try {
143
			sourceUrl = new URI("file:/C:/localCopy/Data/zypern/Zypern.xls");
144
			return sourceUrl;
145
		} catch (URISyntaxException e) {
146
			e.printStackTrace();
147
			return null;
148
		}
149
	}
150
	//Cyprus distriution
151
	public static URI cyprus_distribution() {
152
		URI sourceUrl;
153
		try {
154
			sourceUrl = new URI("file:/C:/localCopy/Data/zypern/Zypern_distribution_RH_corr.xls");
155
			return sourceUrl;
156
		} catch (URISyntaxException e) {
157
			e.printStackTrace();
158
			return null;
159
		}
160
	}
161

    
162
	public void addFeataureNodesByStringList(String[] featureStringList, TermNode<Feature> root, IInputTransformer transformer, ITermService termService){
163
		try {
164
			for (String featureString : featureStringList){
165
			UUID featureUuid;
166
			featureUuid = transformer.getFeatureUuid(featureString);
167
			Feature feature = (Feature)termService.find(featureUuid);
168
			if (feature != null){
169
				root.addChild(feature);
170
			}
171
		}
172
		} catch (UndefinedTransformerMethodException e) {
173
			logger.error("getFeatureUuid is not implemented in transformer. Features could not be added");
174
		}
175
	}
176

    
177

    
178
	/**
179
	 * @param args
180
	 */
181
	public static void main(String[] args) {
182
		CyprusActivator me = new CyprusActivator();
183
		me.doImport(cdmDestination);
184
	}
185

    
186
}
(1-1/4)