Project

General

Profile

Download (11.3 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.cuba;
11

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

    
15
import org.apache.log4j.Logger;
16

    
17
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
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.cuba.CubaImportConfigurator;
26
import eu.etaxonomy.cdm.io.cuba.CubaTransformer;
27
import eu.etaxonomy.cdm.model.agent.Person;
28
import eu.etaxonomy.cdm.model.description.Feature;
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 04.01.2016
37
 */
38
public class CubaActivator {
39
	private static final Logger logger = Logger.getLogger(CubaActivator.class);
40

    
41
	//database validation status (create, update, validate ...)
42
	static DbSchemaValidation hbm2dll = DbSchemaValidation.VALIDATE;
43

    
44
//  static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
45
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql_test();
46
    static final ICdmDataSource cdmDestination = CdmDestinations.cdm_local_cuba();
47
//  static final ICdmDataSource cdmDestination = CdmDestinations.cdm_production_flora_cuba();
48

    
49
	static boolean invers = true;
50

    
51
    boolean doAsteraceae = include;
52
    boolean doConvolvulaceae = include;
53
    boolean doCyperaceae = include;
54
    boolean doDicotA_C = include;
55
    boolean doDicotD_M = include;
56
    boolean doDicotN_Z = include;
57
    boolean doEuphorbiaceae = include;
58
    boolean doFabaceae = include;
59
    boolean doGymnospermae = include;
60
    boolean doLamVerbenaceae = include;
61
    boolean doMalpighiaceae = include;
62
    boolean doMelastomataceae = include;
63
    boolean doMonocots = include;
64
    boolean doMyrtaceae = include;
65
    boolean doOrchidaceae = include;
66
    boolean doRubiaceae = include;
67
    boolean doUrticaceae = include;
68
    boolean doPteridophyta = !include;
69

    
70
    static boolean include = !invers;
71

    
72

    
73
	//feature tree uuid
74
	public static final UUID featureTreeUuid = UUID.fromString("dad6b9b5-693f-4367-a7aa-076cc9c99476");
75

    
76
	//classification
77
	static final UUID classificationUuid = UUID.fromString("5de394de-9c76-4b97-b04d-71be31c7f44b");
78
	private static final String classificationName = "Cuba Checklist";
79

    
80
	static final String sourceReferenceTitle = "Cuba Checklist Word Documents";
81

    
82
	//check - import
83
	static final CHECK check = CHECK.IMPORT_WITHOUT_CHECK;
84

    
85
	boolean doVocabularies = (hbm2dll == DbSchemaValidation.CREATE);
86
	static final boolean doTaxa = true;
87
	static final boolean doDeduplicate = false;
88

    
89
	static final boolean doAltFlorasSanchez2017 = true;
90
	static final boolean doAltFlorasFRC = true;
91
	static final boolean doAltFlorasFC = false;
92
	static final boolean doAltFlorasAS = false;
93

    
94

    
95
	private void doImport(ICdmDataSource cdmDestination){
96

    
97
	    URI source = monocots();  //just any
98

    
99
		//make Source
100
		CubaImportConfigurator config= CubaImportConfigurator.NewInstance(source, cdmDestination);
101
		config.setClassificationUuid(classificationUuid);
102
        config.setClassificationName(classificationName);
103
        config.setCheck(check);
104
//		config.setDoDistribution(doDistribution);
105
		config.setDoTaxa(doTaxa);
106
		config.setDbSchemaValidation(hbm2dll);
107
		config.setSourceReferenceTitle(sourceReferenceTitle);
108
		config.setDoVocabularies(doVocabularies);
109
		config.setDoAltFlorasAS(doAltFlorasAS);
110
		config.setDoAltFlorasFC(doAltFlorasFC);
111
		config.setDoAltFlorasFRC(doAltFlorasFRC);
112
		config.setDoAltFlorasSanchez2017(doAltFlorasSanchez2017);
113

    
114
		CdmDefaultImport<CubaImportConfigurator> myImport = new CdmDefaultImport<>();
115

    
116

    
117
		//...
118
        if (doAsteraceae){
119
            doSingleSource(asteraceae(), config, myImport, doVocabularies);
120
        }
121
        if (doConvolvulaceae){
122
            doSingleSource(convolvulaceae(), config, myImport, doVocabularies);
123
        }
124
        if (doCyperaceae){
125
            doSingleSource(cyperaceae(), config, myImport, doVocabularies);
126
        }
127
        if (doDicotA_C){
128
            doSingleSource(dicotA_C(), config, myImport, doVocabularies);
129
        }
130
        if (doDicotD_M){
131
            doSingleSource(dicotD_M(), config, myImport, doVocabularies);
132
        }
133
        if (doDicotN_Z){
134
            doSingleSource(dicotN_Z(), config, myImport, doVocabularies);
135
        }
136
        if (doEuphorbiaceae){
137
            doSingleSource(euphorbiaceae(), config, myImport, doVocabularies);
138
        }
139
        if (doFabaceae){
140
            doSingleSource(fabaceae(), config, myImport, doVocabularies);
141
        }
142
        if (doGymnospermae){
143
            doSingleSource(gymnospermae(), config, myImport, doVocabularies);
144
        }
145
        if (doLamVerbenaceae){
146
            doSingleSource(lamVerbenaceae(), config, myImport, doVocabularies);
147
        }
148
        if (doMalpighiaceae){
149
            doSingleSource(malpighiaceae(), config, myImport, doVocabularies);
150
        }
151
        if (doMelastomataceae){
152
            doSingleSource(melastomataceae(), config, myImport, doVocabularies);
153
        }
154
        if (doMonocots){
155
            doSingleSource(monocots(), config, myImport, doVocabularies);
156
        }
157
        if (doMyrtaceae){
158
            doSingleSource(myrtaceae(), config, myImport, doVocabularies);
159
        }
160
        if (doOrchidaceae){
161
            doSingleSource(orchidaceae(), config, myImport, doVocabularies);
162
        }
163
        if (doRubiaceae){
164
            doSingleSource(rubiaceae(), config, myImport, doVocabularies);
165
        }
166
        if (doUrticaceae){
167
            doSingleSource(urticaceae(), config, myImport, doVocabularies);
168
        }
169
        if (doPteridophyta){
170
            doSingleSource(pteridophyta(), config, myImport, doVocabularies);
171
        }
172

    
173

    
174
		//deduplicate
175
		if (doDeduplicate){
176
		    logger.warn("Start deduplication ...");
177

    
178
		    ICdmRepository app = myImport.getCdmAppController();
179
			if (app == null){
180
                app = CdmApplicationController.NewInstance(cdmDestination, hbm2dll, false);
181
            }
182
			int count = app.getAgentService().deduplicate(Person.class, null, null);
183
			logger.warn("Deduplicated " + count + " persons.");
184
//			count = app.getAgentService().deduplicate(Team.class, null, null);
185
//			logger.warn("Deduplicated " + count + " teams.");
186
//			count = app.getReferenceService().deduplicate(Reference.class, null, null);
187
//			logger.warn("Deduplicated " + count + " references.");
188
		}
189

    
190
		System.exit(0);
191

    
192
	}
193

    
194
    /**
195
     * @param source
196
     * @param config
197
     * @param myImport
198
     */
199
    private void doSingleSource(URI source, CubaImportConfigurator config,
200
            CdmDefaultImport<CubaImportConfigurator> myImport, boolean doVocabularies) {
201
        config.setSource(source);
202
        String fileName = source.toString();
203
        fileName = fileName.substring(fileName.lastIndexOf("/") + 1 );
204

    
205
        String message = "Start import from ("+ fileName + ") ...";
206
        System.out.println(message);
207
        logger.warn(message);
208
        config.setSourceReference(getSourceReference(fileName));
209
        config.setDoVocabularies(doVocabularies);
210
        myImport.invoke(config);
211

    
212
        if (doVocabularies){
213
            TermTree<Feature> tree = makeFeatureNodes(myImport.getCdmAppController().getTermService());
214
            myImport.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree);
215
            this.doVocabularies = false;
216
        }
217
        System.out.println("End import from ("+ source.toString() + ")...");
218
    }
219

    
220
    private final Reference inRef = ReferenceFactory.newGeneric();
221
	private Reference getSourceReference(String string) {
222
		Reference result = ReferenceFactory.newGeneric();
223
		result.setTitleCache(string, true);
224
		result.setInReference(inRef);
225
		inRef.setTitleCache(sourceReferenceTitle, true);
226
		return result;
227
	}
228

    
229
	private TermTree<Feature> makeFeatureNodes(ITermService service){
230
//		CyprusTransformer transformer = new CyprusTransformer();
231

    
232
	    TermTree<Feature> result = TermTree.NewFeatureInstance(featureTreeUuid);
233
		result.setTitleCache("Cuba Feature Tree", true);
234
		TermNode<Feature> root = result.getRoot();
235

    
236
		root.addChild(Feature.DISTRIBUTION());
237

    
238
//		Feature featurAltFam = (Feature)service.find(CubaTransformer.uuidAlternativeFamily);
239
//		root.addChild(featurAltFam);
240

    
241
	    Feature featurAltFam2 = (Feature)service.find(CubaTransformer.uuidAlternativeFamily2);
242
	    root.addChild(featurAltFam2);
243

    
244
		return result;
245
	}
246

    
247

    
248
	//Monocots
249
	public static URI monocots() {
250
	    return URI.create("file:////BGBM-PESIHPC/Cuba/Monocot.xlsx");
251
	}
252
	//Cyperaceae
253
	public static URI cyperaceae() {
254
	    return URI.create("file:////BGBM-PESIHPC/Cuba/Cyper_Poaceae.xlsx");
255
	}
256
    //Fabaceae
257
    public static URI fabaceae() {
258
        return URI.create("file:////BGBM-PESIHPC/Cuba/Fabaceae.xlsx");
259
    }
260
    //Urticaceae
261
    public static URI urticaceae() {
262
        return URI.create("file:////BGBM-PESIHPC/Cuba/Urticaceae.xlsx");
263
    }
264
    //Asteraceae
265
    public static URI asteraceae() {
266
        return URI.create("file:////BGBM-PESIHPC/Cuba/Asteraceae.xlsx");
267
    }
268
    //Convolvulaceae
269
    public static URI convolvulaceae() {
270
        return URI.create("file:////BGBM-PESIHPC/Cuba/Convolvulaceae.xlsx");
271
    }
272
    //dicot A-C
273
    public static URI dicotA_C() {
274
        return URI.create("file:////BGBM-PESIHPC/Cuba/dicotA_C.xlsx");
275
    }
276
    //dicot D-M
277
    public static URI dicotD_M() {
278
        return URI.create("file:////BGBM-PESIHPC/Cuba/dicotD_M.xlsx");
279
    }
280
    //dicot N-Z
281
    public static URI dicotN_Z() {
282
        return URI.create("file:////BGBM-PESIHPC/Cuba/dicotN_Z.xlsx");
283
    }
284
    //Euphorbiaceae
285
    public static URI euphorbiaceae() {
286
        return URI.create("file:////BGBM-PESIHPC/Cuba/Euphorbiaceae.xlsx");
287
    }
288
    //Gymnospermae
289
    public static URI gymnospermae() {
290
        return URI.create("file:////BGBM-PESIHPC/Cuba/gymnospermae.xlsx");
291
    }
292
    //Lam.Verbenaceae
293
    public static URI lamVerbenaceae() {
294
        return URI.create("file:////BGBM-PESIHPC/Cuba/Lam_Verbenaceae.xlsx");
295
    }
296
    //Malpighiaceae
297
    public static URI malpighiaceae() {
298
        return URI.create("file:////BGBM-PESIHPC/Cuba/Malpighiaceae.xlsx");
299
    }
300
    //Melastomataceae
301
    public static URI melastomataceae() {
302
        return URI.create("file:////BGBM-PESIHPC/Cuba/Melastomataceae.xlsx");
303
    }
304
    //Myrtaceae
305
    public static URI myrtaceae() {
306
        return URI.create("file:////BGBM-PESIHPC/Cuba/Myrtaceae.xlsx");
307
    }
308
    //Orchidaceae
309
    public static URI orchidaceae() {
310
        return URI.create("file:////BGBM-PESIHPC/Cuba/Orchidaceae.xlsx");
311
    }
312
    //Rubiaceae
313
    public static URI rubiaceae() {
314
        return URI.create("file:////BGBM-PESIHPC/Cuba/Rubiaceae.xlsx");
315
    }
316
    //Rubiaceae
317
    public static URI pteridophyta() {
318
        return URI.create("file:////BGBM-PESIHPC/Cuba/Pteridophyta.xlsx");
319
    }
320

    
321
	/**
322
	 * @param args
323
	 */
324
	public static void main(String[] args) {
325
	    CubaActivator me = new CubaActivator();
326
		me.doImport(cdmDestination);
327
	    System.exit(0);
328
	}
329

    
330
}
    (1-1/1)