Project

General

Profile

Download (12.4 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 java.net.URI;
13
import java.util.Arrays;
14
import java.util.Iterator;
15
import java.util.List;
16
import java.util.Scanner;
17
import java.util.UUID;
18

    
19
import org.apache.log4j.Logger;
20

    
21
import eu.etaxonomy.cdm.api.application.ICdmRepository;
22
import eu.etaxonomy.cdm.app.common.CdmDestinations;
23
import eu.etaxonomy.cdm.database.DbSchemaValidation;
24
import eu.etaxonomy.cdm.database.ICdmDataSource;
25
import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
26
import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
27
import eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportConfigurator;
28
import eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlImportReferences;
29
import eu.etaxonomy.cdm.io.redlist.bfnXml.in.BfnXmlTransformer;
30
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
31
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
32
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
33
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
34

    
35
/**
36
 * @author a.oppermann
37
 * @created 16.07.2013
38
 */
39
public class BfnXmlImportActivator {
40

    
41
	private static final Logger logger = Logger.getLogger(BfnXmlImportActivator.class);
42

    
43
	//database validation status (create, update, validate ...)
44
	static DbSchemaValidation schemaValidation = DbSchemaValidation.CREATE;
45
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_redlist_plant_localhost();
46
//	static final ICdmDataSource cdmDestination = CdmDestinations.localH2();
47
//	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_local_mysql();
48
	static final ICdmDataSource cdmDestination = CdmDestinations.cdm_redlist_animalia_production_final();
49
//    static final ICdmDataSource cdmDestination = CdmDestinations.cdm_test_redlist_mammalia();
50

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

    
53
	//nom Code
54
	private static final NomenclaturalCode nomenclaturalCode = NomenclaturalCode.ICZN;
55

    
56
	//check - import
57
	static final CHECK check = CHECK.IMPORT_WITHOUT_CHECK;
58

    
59

    
60
	static final boolean doMetaData = true;
61
	static final boolean doTaxonNames = true;
62
	static final boolean doFeature = true;
63
    static final boolean doAdditionalTerms = true;
64

    
65
    private String filename;
66

    
67
	public BfnXmlImportActivator(String fileName){
68
		filename = fileName;
69
	}
70

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

    
74
		//make Source
75
		URI source;
76
		try {
77
		    source = URI.create(sourceUriBase + filename);
78
		    config.setSource(source);
79

    
80
			//if xmllist has two lists
81
			config.setHasSecondList(filename.contains("BFN_Saeuger"));
82
			config.setNomenclaturalCode(nomenclaturalCode);
83
			config.setDoMetaData(doMetaData);
84
			config.setDoTaxonNames(doTaxonNames);
85
			config.setDoFeature(doFeature);
86
			config.setDoAdditionalTerms(doAdditionalTerms);
87

    
88
			config.setCheck(check);
89
			config.setDbSchemaValidation(schemaValidation);
90

    
91
			//TODO only quickfix see also MetaData import
92
			String classificationName;
93
			if (filename.startsWith("rldb")){
94
			    classificationName = filename.replace("rldb_print_v4_0_1_0_", "")
95
			            .split("_")[0].replace(".xml", "").replace("artenarmeWeichtiergruppen", "Artenarme Weichtiergruppen");
96
			}else{
97
			    classificationName = filename.replace("RoteListe_v4_0_6_0_BFN_Saeuger_korr.xml", "Säuger");
98
			}
99
			config.setClassificationName(classificationName);
100

    
101
			// invoke import
102
			bfnImport.invoke(config);
103

    
104
			setVaadinPreferences(bfnImport, nomenclaturalCode);
105
			logger.info("End");
106
			System.out.println("End import from BfnXML ("+ source.toString() + ")...");
107
		} catch (Exception e) {
108
			e.printStackTrace();
109
		}
110

    
111
	}
112

    
113

    
114
    /**
115
	 * @param args
116
	 */
117
	public static void main(String[] args) {
118

    
119
		List<String> fileNames = Arrays.asList(
120
//				Plants
121
//		        //band2
122
//		        "rldb_print_v4_0_1_0_Makroalgen_150121_syn.xml",uuidBand2_marineMakroalgen.toString(),
123

    
124
		        //fungi
125
		        //band6
126
//				"rldb_print_v4_0_1_0_Flechten_korr_verantw_syn.xml",uuidBand6_flechtenUndPilze.toString(),
127
//				//korrekt??
128
//				"rldb_print_v4_0_1_0_Saprophyten_verantw.xml",uuidBand6_flechtenUndPilze.toString(),
129
//				"rldb_print_v4_0_1_0_Lichenicole_verantw_syn.xml",uuidBand6_flechtenUndPilze.toString(),
130
//				"rldb_print_v4_0_1_0_Myxo_110708_korr_syn_neu.xml",uuidBand6_myxomyzeten.toString(),
131
//
132
//				Animals
133
//		        //band1
134
//				"rldb_print_v4_0_1_0_Brutvoegel.xml",BfnXmlImportReferences.uuidBand1_brutvoegel.toString(), //Brutvögel
135
//				"rldb_print_v4_0_1_0_Reptilien_1.xml",uuidBand1_kriechtiere.toString(),
136
//                "rldb_print_v4_0_1_0_Amphibien.xml",uuidBand1_lurche.toString(),  //Kriechtiere
137
//                "RoteListe_v4_0_6_0_BFN_Saeuger_korr.xml",uuidBand1_saeugetiere.toString(), //Säugetiere
138
//                "rldb_print_v4_0_1_0_Fische.xml",uuidBand1_suessfische.toString(),
139
//                //
140
//		        //band2
141
//		        "rldb_print_v4_0_1_0_artenarmeWeichtiergruppen_121127_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
142
//		        "rldb_print_v4_0_1_0_Asselspinnen_120907_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
143
//		        "rldb_print_v4_0_1_0_Flohkrebse_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
144
//		        "rldb_print_v4_0_1_0_Igelwuermer_120907_verantw.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
145
//		        "rldb_print_v4_0_1_0_Kumazeen_120709_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
146
//		        "rldb_print_v4_0_1_0_Asseln_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
147
//		        "rldb_print_v4_0_1_0_Moostierchen_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
148
//		        "rldb_print_v4_0_1_0_Muscheln_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
149
//		        "rldb_print_v4_0_1_0_Schnecken_130206_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
150
//		        "rldb_print_v4_0_1_0_Meeresfische_syn.xml",uuidBand2_meeresfischeUndNeunaugen.toString(),
151
//		        "rldb_print_v4_0_1_0_Nesseltiere_130104_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
152
//		        "rldb_print_v4_0_1_0_Schaedellose_120907_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(), //Schädellose
153
//		        "rldb_print_v4_0_1_0_Schwaemme_121127_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(), //Schwämme
154
//		        "rldb_print_v4_0_1_0_Seepocken_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
155
//		        "rldb_print_v4_0_1_0_Seescheiden_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
156
//		        "rldb_print_v4_0_1_0_Stachelhaeuter_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(), //Stachelhäuter
157
//		        "rldb_print_v4_0_1_0_Vielborster_130206_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
158
//		        "rldb_print_v4_0_1_0_Wenigborster_121128_verantw_syn.xml",uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
159
//		        "rldb_print_v4_0_1_0_Zehnfusskrebse_130104_verantw_syn.xml", uuidBand2_bodenlebendenWirbellosenMeerestiere.toString(),
160
//		        //
161
//		        //band3
162
//			    "rldb_print_v4_0_1_0_Ameisen_110609_rev120113_syn.xml", uuidBand3_ameisen.toString(), //Hymenoptera: Formicidae
163
//			    "rldb_print_v4_0_1_0_Bienen_PWKorr_HG_120413_DF_120612_syn.xml",uuidBand3_bienen.toString(),  //Hymnenoptera: Apidae
164
//			    "rldb_print_v4_0_1_0_Binnenmollusken_0alle_120413_DF_syn.xml",uuidBand3_binnenmollusken.toString(),
165
//			    //eulenfalter - korrekt?
166
//			    "rldb_print_v4_0_1_0_Eulen_Korruebern_23-05-2012_KorrV_syn.xml",uuidBand3_eulenfalter.toString(), //Eulen & Korrübern
167
//			    "rldb_print_v4_0_1_0_Thysanoptera_120413_DF_korrV_Verantw.xml",uuidBand3_fransenfluegler.toString(),
168
//			    "rldb_print_v4_0_1_0_Heuschrecken_syn.xml",uuidBand3_heuschrecken.toString(),  //Saltatoria
169
//			    "rldb_print_v4_0_1_0_Ohrwuermer_DF_syn.xml",uuidBand3_ohrwuermer.toString(),   //Dermaptera
170
//			    "rldb_print_v4_0_1_0_Pflanzenwespen_280711_Autor_110815_HG2_120413_DF_syn.xml",uuidBand3_pflanzenwespen.toString(), //Hymenoptera: Symphata
171
//			    "rldb_print_v4_0_1_0_Asilidae_GMH_Wolff_110314_HGxls_120413_DF_korrV_Verantw_syn.xml",uuidBand3_raubfliegen.toString(),
172
//			    "rldb_print_v4_0_1_0_Blattoptera_140413_DF_syn.xml",uuidBand3_schaben.toString(),
173
//			    "rldb_print_v4_0_1_0_Schwebfliegen_111103_KorrAS_120413_DF_syn.xml",uuidBand3_schwebfliegen.toString(), //Diptera: Syrphidae
174
//			    //spanner - korrekt?
175
//				"rldb_print_v4_0_1_0_Eulenspinner_Spanner_13-06-2012_KorrV_syn.xml",uuidBand3_spanner.toString(), //Eulenspinner & Spanner
176
//			    "rldb_print_v4_0_1_0_Spinner_Oktober2011_eingearbKorr_120124_Korruebern_MB_02-05-2012_KorrV_syn.xml",uuidBand3_spinner.toString(),
177
//			    "rldb_print_v4_0_1_0_Tagfalter_06-06-2012_KorrV_syn.xml",uuidBand3_tagfalter.toString(),
178
//			    "rldb_print_v4_0_1_0_Empidoidea_120413_DF.xml",uuidBand3_tanzfliegen.toString(),  //Empidoidea
179
//			    //wespen - fehlen ????? => siehe auch titel des Referenz Word Files
180
//			    "rldb_print_v4_0_1_0_Pyraloidea_Februar_2012_Korruebern_MB_24-04-2012_syn.xml",uuidBand3_zuenslerfalter.toString()
181

    
182

    
183
//		        //the 4 first lists, THESE ARE DUPLICATES
184
//		        "RoteListe_v4_0_6_0_BFN_Saeuger_korr.xml",BfnXmlImportReferences.uuidBand1_saeugetiere.toString(),
185
                "rldb_print_v4_0_1_0_Amphibien.xml",BfnXmlImportReferences.uuidBand1_lurche.toString(),
186
                "rldb_print_v4_0_1_0_Reptilien_1.xml",BfnXmlImportReferences.uuidBand1_kriechtiere.toString(),
187
                "rldb_print_v4_0_1_0_Heuschrecken_syn.xml", BfnXmlImportReferences.uuidBand3_heuschrecken.toString()
188

    
189
				);
190

    
191
        CdmDefaultImport<BfnXmlImportConfigurator> bfnImport = new CdmDefaultImport<>();
192

    
193
        ICdmDataSource destination = cdmDestination;
194
        URI source = null;
195
		BfnXmlImportConfigurator config = BfnXmlImportConfigurator.NewInstance(source,  destination);
196

    
197
		Iterator<String> it = fileNames.iterator();
198
		while(it.hasNext()){
199
		    String fileName = it.next();
200
			BfnXmlImportActivator bfnXmlTestActivator = new BfnXmlImportActivator(fileName);
201
			String uuid = it.next();
202
			config.setSourceRefUuid(UUID.fromString(uuid));
203
			bfnXmlTestActivator.doImport(config, bfnImport);
204
//			pauseProg();
205
			schemaValidation = DbSchemaValidation.VALIDATE;
206
		}
207

    
208

    
209
			//first run
210
			//create DB,Metadata
211
//			String fileName = "rldb_print_v4_0_1_0_Ameisen_110609_rev120113_syn.xml";
212
//			BfnXmlTestActivator bfnXmlTestActivator = new BfnXmlTestActivator(fileName);
213
//			bfnXmlTestActivator.doImport();
214

    
215
		System.exit(0);
216
	}
217

    
218
	@SuppressWarnings("resource")
219
    public static void pauseProg(){
220
		System.out.println("Press enter to continue...");
221
		Scanner keyboard = new Scanner(System.in);
222
		keyboard.nextLine();
223
	}
224

    
225
    /**
226
     * @param bfnImport
227
     * @param nomCode
228
     */
229
    private void setVaadinPreferences(CdmDefaultImport<BfnXmlImportConfigurator> bfnImport, NomenclaturalCode nomCode) {
230
        ICdmRepository app = bfnImport.getCdmAppController();
231
        CdmPreference statusPref = CdmPreference.NewInstance(
232
                PreferenceSubject.NewVaadinInstance(),
233
                PreferencePredicate.AvailableDistributionStatus,
234
                BfnXmlTransformer.uuidStatusVorkommend,
235
                BfnXmlTransformer.uuidStatusUnsicher,
236
                BfnXmlTransformer.uuidStatusAbgelehnt,
237
                BfnXmlTransformer.uuidStatusKeinNachweis
238
                );
239
        app.getPreferenceService().set(statusPref);
240
        CdmPreference areaVocPref = CdmPreference.NewInstance(
241
                PreferenceSubject.NewVaadinInstance(),
242
                PreferencePredicate.AvailableDistributionAreaVocabularies,
243
                BfnXmlTransformer.uuidVocGermanFederalStates);
244
        app.getPreferenceService().set(areaVocPref);
245
        CdmPreference nomCodePref = CdmPreference.NewDatabaseInstance(PreferencePredicate.NomenclaturalCode, "eu.etaxonomy.cdm.model.name.NomenclaturalCode." + nomCode.getUuid());
246
        app.getPreferenceService().set(nomCodePref);
247

    
248
    }
249
}
250

    
(2-2/5)