Project

General

Profile

Download (14.2 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.redlist;
11

    
12
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand1_kriechtiere;
13
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand1_lurche;
14
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand1_saeugetiere;
15
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand1_suessfische;
16
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand2_bodenlebendenWirbellosenMeerestiere;
17
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand2_meeresfischeUndNeunaugen;
18
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_ameisen;
19
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_bienen;
20
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_binnenmollusken;
21
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_eulenfalter;
22
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_fransenfluegler;
23
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_heuschrecken;
24
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_ohrwuermer;
25
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_pflanzenwespen;
26
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_raubfliegen;
27
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_schaben;
28
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_schwebfliegen;
29
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_spanner;
30
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_spinner;
31
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_tagfalter;
32
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_tanzfliegen;
33
import static eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences.uuidBand3_zuenslerfalter;
34

    
35
import java.net.URI;
36
import java.util.Arrays;
37
import java.util.Iterator;
38
import java.util.List;
39
import java.util.Scanner;
40
import java.util.UUID;
41

    
42
import org.apache.log4j.Logger;
43

    
44
import eu.etaxonomy.cdm.api.application.ICdmRepository;
45
import eu.etaxonomy.cdm.app.common.CdmDestinations;
46
import eu.etaxonomy.cdm.database.DbSchemaValidation;
47
import eu.etaxonomy.cdm.database.ICdmDataSource;
48
import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
49
import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
50
import eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportConfigurator;
51
import eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences;
52
import eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlTransformer;
53
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
54
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
55
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
56
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
57

    
58
/**
59
 * @author a.oppermann
60
 * @created 16.07.2013
61
 */
62
public class BfnXmlImportActivator {
63

    
64
	private static final Logger logger = Logger.getLogger(BfnXmlImportActivator.class);
65

    
66
	//database validation status (create, update, validate ...)
67
	static DbSchemaValidation schemaValidation = DbSchemaValidation.CREATE;
68
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_redlist_plant_localhost();
69
//	static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
70
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql();
71
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_redlist_animalia_production_final();
72
    static final ICdmDataSource cdmDestination = CdmDestinations.cdm_redlist_mammalia_test();
73

    
74
	private static final String sourceUriBase = "file:////BGBM-PESIHPC/RoteListen/RoteListenXml/";
75

    
76
	//nom Code
77
	private static final NomenclaturalCode nomenclaturalCode = NomenclaturalCode.ICZN;
78

    
79
	//check - import
80
	static final CHECK check = CHECK.IMPORT_WITHOUT_CHECK;
81

    
82

    
83
	static final boolean doMetaData = true;
84
	static final boolean doTaxonNames = true;
85
	static final boolean doFeature = true;
86
    static final boolean doAdditionalTerms = true;
87

    
88
    private String filename;
89

    
90
	public BfnXmlImportActivator(String fileName){
91
		filename = fileName;
92
	}
93

    
94
	private void doImport(BfnXmlImportConfigurator config, CdmDefaultImport<BfnXmlImportConfigurator> bfnImport){
95
		System.out.println("Start import from " + filename + " to "+ cdmDestination.getDatabase() + " ...");
96

    
97
		//make Source
98
		URI source;
99
		try {
100
		    source = URI.create(sourceUriBase + filename);
101
		    config.setSource(source);
102

    
103
			//if xmllist has two lists
104
			config.setHasSecondList(filename.contains("BFN_Saeuger"));
105
			config.setNomenclaturalCode(nomenclaturalCode);
106
			config.setDoMetaData(doMetaData);
107
			config.setDoTaxonNames(doTaxonNames);
108
			config.setDoFeature(doFeature);
109
			config.setDoAdditionalTerms(doAdditionalTerms);
110

    
111
			config.setCheck(check);
112
			config.setDbSchemaValidation(schemaValidation);
113

    
114
			//TODO only quickfix see also MetaData import
115
			String classificationName;
116
			if (filename.startsWith("rldb")){
117
			    classificationName = filename.replace("rldb_print_v4_0_1_0_", "")
118
			            .split("_")[0].replace(".xml", "").replace("artenarmeWeichtiergruppen", "Artenarme Weichtiergruppen");
119
			}else{
120
			    classificationName = filename.replace("RoteListe_v4_0_6_0_BFN_Saeuger_korr.xml", "Säuger");
121
			}
122
			config.setClassificationName(classificationName);
123

    
124
			// invoke import
125
			bfnImport.invoke(config);
126

    
127
			setVaadinPreferences(bfnImport, nomenclaturalCode);
128
			logger.info("End");
129
			System.out.println("End import from BfnXML ("+ source.toString() + ")...");
130
		} catch (Exception e) {
131
			e.printStackTrace();
132
		}
133

    
134
	}
135

    
136

    
137
    /**
138
	 * @param args
139
	 */
140
	public static void main(String[] args) {
141

    
142
		List<String> fileNames = Arrays.asList(
143
//				Plants
144
//		        //band2
145
//		        "rldb_print_v4_0_1_0_Makroalgen_150121_syn.xml",uuidBand2_marineMakroalgen.toString(),
146

    
147
		        //fungi
148
		        //band6
149
//				"rldb_print_v4_0_1_0_Flechten_korr_verantw_syn.xml",uuidBand6_flechtenUndPilze.toString(),
150
//				//korrekt??
151
//				"rldb_print_v4_0_1_0_Saprophyten_verantw.xml",uuidBand6_flechtenUndPilze.toString(),
152
//				"rldb_print_v4_0_1_0_Lichenicole_verantw_syn.xml",uuidBand6_flechtenUndPilze.toString(),
153
//				"rldb_print_v4_0_1_0_Myxo_110708_korr_syn_neu.xml",uuidBand6_myxomyzeten.toString(),
154
//
155
//				Animals
156
		        //band1
157
				"rldb_print_v4_0_1_0_Brutvoegel.xml",BfnXmlImportReferences.uuidBand1_brutvoegel.toString(), //Brutvögel
158
				"rldb_print_v4_0_1_0_Reptilien_1.xml",uuidBand1_kriechtiere.toString(),
159
                "rldb_print_v4_0_1_0_Amphibien.xml",uuidBand1_lurche.toString(),  //Kriechtiere
160
                "RoteListe_v4_0_6_0_BFN_Saeuger_korr.xml",uuidBand1_saeugetiere.toString(), //Säugetiere
161
                "rldb_print_v4_0_1_0_Fische.xml",uuidBand1_suessfische.toString(),
162
                //
163
		        //band2
164
		        "rldb_print_v4_0_1_0_artenarmeWeichtiergruppen_121127_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
165
		        "rldb_print_v4_0_1_0_Asselspinnen_120907_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
166
		        "rldb_print_v4_0_1_0_Flohkrebse_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
167
		        "rldb_print_v4_0_1_0_Igelwuermer_120907_verantw.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
168
		        "rldb_print_v4_0_1_0_Kumazeen_120709_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
169
		        "rldb_print_v4_0_1_0_Asseln_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
170
		        "rldb_print_v4_0_1_0_Moostierchen_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
171
		        "rldb_print_v4_0_1_0_Muscheln_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
172
		        "rldb_print_v4_0_1_0_Schnecken_130206_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
173
		        "rldb_print_v4_0_1_0_Meeresfische_syn.xml",uuidBand2_meeresfischeUndNeunaugen.toString(),
174
		        "rldb_print_v4_0_1_0_Nesseltiere_130104_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
175
		        "rldb_print_v4_0_1_0_Schaedellose_120907_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(), //Schädellose
176
		        "rldb_print_v4_0_1_0_Schwaemme_121127_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(), //Schwämme
177
		        "rldb_print_v4_0_1_0_Seepocken_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
178
		        "rldb_print_v4_0_1_0_Seescheiden_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
179
		        "rldb_print_v4_0_1_0_Stachelhaeuter_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(), //Stachelhäuter
180
		        "rldb_print_v4_0_1_0_Vielborster_130206_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
181
		        "rldb_print_v4_0_1_0_Wenigborster_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
182
		        "rldb_print_v4_0_1_0_Zehnfusskrebse_130104_verantw_syn.xml", uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
183
		        //
184
		        //band3
185
			    "rldb_print_v4_0_1_0_Ameisen_110609_rev120113_syn.xml", uuidBand3_ameisen.toString(), //Hymenoptera: Formicidae
186
			    "rldb_print_v4_0_1_0_Bienen_PWKorr_HG_120413_DF_120612_syn.xml",uuidBand3_bienen.toString(),  //Hymnenoptera: Apidae
187
			    "rldb_print_v4_0_1_0_Binnenmollusken_0alle_120413_DF_syn.xml",uuidBand3_binnenmollusken.toString(),
188
			    //eulenfalter - korrekt?
189
			    "rldb_print_v4_0_1_0_Eulen_Korruebern_23-05-2012_KorrV_syn.xml",uuidBand3_eulenfalter.toString(), //Eulen & Korrübern
190
			    "rldb_print_v4_0_1_0_Thysanoptera_120413_DF_korrV_Verantw.xml",uuidBand3_fransenfluegler.toString(),
191
			    "rldb_print_v4_0_1_0_Heuschrecken_syn.xml",uuidBand3_heuschrecken.toString(),  //Saltatoria
192
			    "rldb_print_v4_0_1_0_Ohrwuermer_DF_syn.xml",uuidBand3_ohrwuermer.toString(),   //Dermaptera
193
			    "rldb_print_v4_0_1_0_Pflanzenwespen_280711_Autor_110815_HG2_120413_DF_syn.xml",uuidBand3_pflanzenwespen.toString(), //Hymenoptera: Symphata
194
			    "rldb_print_v4_0_1_0_Asilidae_GMH_Wolff_110314_HGxls_120413_DF_korrV_Verantw_syn.xml",uuidBand3_raubfliegen.toString(),
195
			    "rldb_print_v4_0_1_0_Blattoptera_140413_DF_syn.xml",uuidBand3_schaben.toString(),
196
			    "rldb_print_v4_0_1_0_Schwebfliegen_111103_KorrAS_120413_DF_syn.xml",uuidBand3_schwebfliegen.toString(), //Diptera: Syrphidae
197
			    //spanner - korrekt?
198
				"rldb_print_v4_0_1_0_Eulenspinner_Spanner_13-06-2012_KorrV_syn.xml",uuidBand3_spanner.toString(), //Eulenspinner & Spanner
199
			    "rldb_print_v4_0_1_0_Spinner_Oktober2011_eingearbKorr_120124_Korruebern_MB_02-05-2012_KorrV_syn.xml",uuidBand3_spinner.toString(),
200
			    "rldb_print_v4_0_1_0_Tagfalter_06-06-2012_KorrV_syn.xml",uuidBand3_tagfalter.toString(),
201
			    "rldb_print_v4_0_1_0_Empidoidea_120413_DF.xml",uuidBand3_tanzfliegen.toString(),  //Empidoidea
202
			    //wespen - fehlen ????? => siehe auch titel des Referenz Word Files
203
			    "rldb_print_v4_0_1_0_Pyraloidea_Februar_2012_Korruebern_MB_24-04-2012_syn.xml",uuidBand3_zuenslerfalter.toString()
204

    
205

    
206
//		        //the 4 first lists, THESE ARE DUPLICATES
207
//		        "RoteListe_v4_0_6_0_BFN_Saeuger_korr.xml",
208
//                "rldb_print_v4_0_1_0_Amphibien.xml",
209
//                "rldb_print_v4_0_1_0_Reptilien_1.xml",
210
//                "rldb_print_v4_0_1_0_Heuschrecken_syn.xml"
211

    
212
				);
213

    
214
        CdmDefaultImport<BfnXmlImportConfigurator> bfnImport = new CdmDefaultImport<>();
215

    
216
        ICdmDataSource destination = cdmDestination;
217
        URI source = null;
218
		BfnXmlImportConfigurator config = BfnXmlImportConfigurator.NewInstance(source,  destination);
219

    
220
		Iterator<String> it = fileNames.iterator();
221
		while(it.hasNext()){
222
		    String fileName = it.next();
223
			BfnXmlImportActivator bfnXmlTestActivator = new BfnXmlImportActivator(fileName);
224
			String uuid = it.next();
225
			config.setSourceRefUuid(UUID.fromString(uuid));
226
			bfnXmlTestActivator.doImport(config, bfnImport);
227
//			pauseProg();
228
			schemaValidation = DbSchemaValidation.VALIDATE;
229
		}
230

    
231

    
232
			//first run
233
			//create DB,Metadata
234
//			String fileName = "rldb_print_v4_0_1_0_Ameisen_110609_rev120113_syn.xml";
235
//			BfnXmlTestActivator bfnXmlTestActivator = new BfnXmlTestActivator(fileName);
236
//			bfnXmlTestActivator.doImport();
237

    
238
		System.exit(0);
239
	}
240

    
241
	@SuppressWarnings("resource")
242
    public static void pauseProg(){
243
		System.out.println("Press enter to continue...");
244
		Scanner keyboard = new Scanner(System.in);
245
		keyboard.nextLine();
246
	}
247

    
248
    /**
249
     * @param bfnImport
250
     * @param nomCode
251
     */
252
    private void setVaadinPreferences(CdmDefaultImport<BfnXmlImportConfigurator> bfnImport, NomenclaturalCode nomCode) {
253
        ICdmRepository app = bfnImport.getCdmAppController();
254
        CdmPreference statusPref = CdmPreference.NewInstance(
255
                PreferenceSubject.NewVaadinInstance(),
256
                PreferencePredicate.AvailableDistributionStatus,
257
                BfnXmlTransformer.uuidStatusVorkommend,
258
                BfnXmlTransformer.uuidStatusUnsicher,
259
                BfnXmlTransformer.uuidStatusAbgelehnt,
260
                BfnXmlTransformer.uuidStatusKeinNachweis
261
                );
262
        app.getPreferenceService().set(statusPref);
263
        CdmPreference areaVocPref = CdmPreference.NewInstance(
264
                PreferenceSubject.NewVaadinInstance(),
265
                PreferencePredicate.AvailableDistributionAreaVocabularies,
266
                BfnXmlTransformer.uuidVocGermanFederalStates);
267
        app.getPreferenceService().set(areaVocPref);
268
        CdmPreference nomCodePref = CdmPreference.NewDatabaseInstance(PreferencePredicate.NomenclaturalCode, "eu.etaxonomy.cdm.model.name.NomenclaturalCode." + nomCode.getUuid());
269
        app.getPreferenceService().set(nomCodePref);
270

    
271
    }
272
}
273

    
(2-2/5)