minor
[cdmlib-apps.git] / cdm-pesi / src / main / java / eu / etaxonomy / cdm / io / pesi / faunaEuropaea / FaunaEuropaeaDistributionImport.java
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.io.pesi.faunaEuropaea;
10
11 import java.sql.ResultSet;
12 import java.sql.SQLException;
13 import java.util.HashMap;
14 import java.util.HashSet;
15 import java.util.List;
16 import java.util.Map;
17 import java.util.Set;
18 import java.util.UUID;
19
20 import org.apache.logging.log4j.LogManager;
21 import org.apache.logging.log4j.Logger;
22 import org.springframework.stereotype.Component;
23 import org.springframework.transaction.TransactionStatus;
24
25 import eu.etaxonomy.cdm.io.common.Source;
26 import eu.etaxonomy.cdm.model.common.CdmBase;
27 import eu.etaxonomy.cdm.model.description.Distribution;
28 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
29 import eu.etaxonomy.cdm.model.description.TaxonDescription;
30 import eu.etaxonomy.cdm.model.location.NamedArea;
31 import eu.etaxonomy.cdm.model.taxon.Taxon;
32 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
33 import eu.etaxonomy.cdm.model.term.TermType;
34 import eu.etaxonomy.cdm.model.term.TermVocabulary;
35
36 /**
37 * @author a.babadshanjan
38 * @since 12.05.2009
39 */
40 @Component
41 public class FaunaEuropaeaDistributionImport extends FaunaEuropaeaImportBase {
42
43 private static final long serialVersionUID = 746146902707885655L;
44 private static Logger logger = LogManager.getLogger();
45
46 @Override
47 protected boolean doCheck(FaunaEuropaeaImportState state) {
48 boolean result = true;
49 logger.warn("Checking for Distributions not yet implemented");
50 return result;
51 }
52
53 @Override
54 protected void doInvoke(FaunaEuropaeaImportState state) {
55 /*
56 logger.warn("Start distribution doInvoke");
57 ProfilerController.memorySnapshot();
58 */
59
60 if (!state.getConfig().isDoOccurrence()){
61 return;
62 }
63
64 int limit = state.getConfig().getLimitSave();
65 UUID noDataUuid;
66 /* Taxon store for retrieving taxa from and saving taxa to CDM */
67 List<TaxonBase> taxonList = null;
68 /* UUID store as input for retrieving taxa from CDM */
69 Set<UUID> taxonUuids = null;
70 /* Store to hold helper objects */
71 Map<UUID, FaunaEuropaeaDistributionTaxon> fauEuTaxonMap = null;
72
73
74 TransactionStatus txStatus = null;
75
76 //txStatus = startTransaction();
77 /*PresenceAbsenceTerm noDataStatusTerm = PresenceAbsenceTerm.NewPresenceInstance("no data", "no data", "nod");
78 noDataUuid = noDataStatusTerm.getUuid();
79 TermVocabulary<PresenceAbsenceTerm> voc = getVocabularyService().find(30);
80 HibernateProxyHelper.deproxy(voc, OrderedTermVocabulary.class);
81 //voc.addTerm(noDataStatusTerm);
82 // getVocabularyService().saveOrUpdate(voc);
83 getTermService().save(noDataStatusTerm);*/
84 //commitTransaction(txStatus);
85
86 // FaunaEuropaeaTransformer.setUUIDs(noDataUuid);
87 logger.info("create termvoc");
88 createTermVocabulary(txStatus, state);
89
90 FaunaEuropaeaImportConfigurator fauEuConfig = state.getConfig();
91 Source source = fauEuConfig.getSource();
92
93 int i = 0;
94
95 String selectCount =
96 " SELECT count(*) ";
97
98 String selectColumns =
99 " SELECT distribution.*, Area.*, Taxon.UUID ";
100
101 String fromClause =
102 " FROM distribution INNER JOIN " +
103 " Area ON distribution.dis_ara_id = Area.ara_id INNER JOIN " +
104 " Taxon ON distribution.dis_tax_id = Taxon.TAX_ID ";
105 String orderBy = " ORDER BY distribution.dis_tax_id";
106
107 String countQuery =
108 selectCount + fromClause;
109
110 String selectQuery =
111 selectColumns + fromClause + orderBy;
112
113 if(logger.isInfoEnabled()) { logger.info("Start making distributions..."); }
114
115 try {
116 ResultSet rs = source.getResultSet(countQuery);
117 rs.next();
118 int count = rs.getInt(1);
119
120 rs = source.getResultSet(selectQuery);
121
122 if (logger.isInfoEnabled()) {
123 logger.info("Number of rows: " + count);
124 logger.info("Count Query: " + countQuery);
125 logger.info("Select Query: " + selectQuery);
126 }
127
128 //int taxonId;
129
130 while (rs.next()) {
131 if ((i++ % limit) == 0) {
132
133 txStatus = startTransaction();
134 taxonUuids = new HashSet<>(limit);
135 fauEuTaxonMap = new HashMap<>(limit);
136
137 if(logger.isInfoEnabled()) {
138 logger.info("i = " + i + " - Distribution import transaction started");
139 }
140 }
141
142 //taxonId = rs.getInt("dis_tax_id");
143 int disId = rs.getInt("dis_id");
144 int occStatusId = rs.getInt("dis_present");
145 int areaId = rs.getInt("ara_id");
146 String areaName = rs.getString("ara_name");
147 String areaCode = rs.getString("ara_code");
148 int extraLimital = rs.getInt("ara_extralimital");
149 UUID currentTaxonUuid = null;
150 if (resultSetHasColumn(rs,"UUID")){
151 currentTaxonUuid = UUID.fromString(rs.getString("UUID"));
152 } else {
153 currentTaxonUuid = UUID.randomUUID();
154 }
155
156 FaunaEuropaeaDistribution fauEuDistribution = new FaunaEuropaeaDistribution();
157 fauEuDistribution.setDistributionId(disId);
158 fauEuDistribution.setOccurrenceStatusId(occStatusId);
159 fauEuDistribution.setAreaId(areaId);
160 fauEuDistribution.setAreaName(areaName);
161 fauEuDistribution.setAreaCode(areaCode);
162 fauEuDistribution.setExtraLimital(extraLimital);
163
164 if (!taxonUuids.contains(currentTaxonUuid)) {
165 taxonUuids.add(currentTaxonUuid);
166 FaunaEuropaeaDistributionTaxon fauEuDistributionTaxon =
167 new FaunaEuropaeaDistributionTaxon(currentTaxonUuid);
168 fauEuTaxonMap.put(currentTaxonUuid, fauEuDistributionTaxon);
169 fauEuDistributionTaxon = null;
170 } else {
171 if (logger.isTraceEnabled()) {
172 logger.trace("Taxon (" + currentTaxonUuid + ") already stored.");
173 continue;
174 }
175 }
176
177 fauEuTaxonMap.get(currentTaxonUuid).addDistribution(fauEuDistribution);
178
179 if (((i % limit) == 0 && i != 1 ) || i == count ) {
180
181 try {
182 commitTaxaAndDistribution(state, taxonUuids, fauEuTaxonMap, txStatus);
183 taxonUuids = null;
184 taxonList = null;
185 fauEuTaxonMap = null;
186
187 } catch (Exception e) {
188 logger.error("Commit of taxa and distributions failed" + e.getMessage());
189 e.printStackTrace();
190 }
191
192 if(logger.isInfoEnabled()) { logger.info("i = " + i + " - Transaction committed");}
193 }
194
195
196 }
197 if (taxonUuids != null){
198 try {
199 commitTaxaAndDistribution(state, taxonUuids, fauEuTaxonMap, txStatus);
200 taxonUuids = null;
201 taxonList = null;
202 fauEuTaxonMap = null;
203 } catch (Exception e) {
204 logger.error("Commit of taxa and distributions failed");
205 logger.error(e.getMessage());
206 e.printStackTrace();
207 }
208 }
209 rs = null;
210 } catch (SQLException e) {
211 logger.error("SQLException:" + e);
212 state.setUnsuccessfull();
213 }
214
215 if(logger.isInfoEnabled()) { logger.info("End making distributions..."); }
216
217
218 return;
219 }
220
221 /**
222 *
223 */
224 private void createTermVocabulary(TransactionStatus txStatus, FaunaEuropaeaImportState state) {
225 TermVocabulary<NamedArea> faunaEuAreaVocabulary = TermVocabulary.NewInstance(TermType.NamedArea,
226 NamedArea.class, "Areas for Fauna Europaea distribution data", "FE areas", "FE", null);
227 faunaEuAreaVocabulary.setUuid(FaunaEuropaeaTransformer.uuidFauEuArea);
228
229 NamedArea area =NamedArea.NewInstance(null, "Andorra", "AD");
230 area.setUuid(UUID.randomUUID());
231 area.setIdInVocabulary("AD");
232 state.putNamedArea(area);
233 faunaEuAreaVocabulary.addTerm(area);
234 area = NamedArea.NewInstance(null, "Albania", "AL");
235 area.setIdInVocabulary("AL");
236 area.setUuid(UUID.randomUUID());
237 state.putNamedArea(area);
238 faunaEuAreaVocabulary.addTerm(area);
239 area = NamedArea.NewInstance(null, "Austria", "AT");
240 area.setIdInVocabulary("AT");
241 area.setUuid(UUID.randomUUID());
242 state.putNamedArea(area);
243 faunaEuAreaVocabulary.addTerm(area);
244 area = NamedArea.NewInstance(null, "Bosnia and Herzegovina", "BA");
245 area.setUuid(UUID.randomUUID());
246 area.setIdInVocabulary("BA");
247 state.putNamedArea(area);
248 faunaEuAreaVocabulary.addTerm(area);
249 area = NamedArea.NewInstance(null, "Belgium", "BE");
250 area.setUuid(UUID.randomUUID());
251 area.setIdInVocabulary("BE");
252 state.putNamedArea(area);
253 faunaEuAreaVocabulary.addTerm(area);
254 area = NamedArea.NewInstance(null, "Bulgaria", "BG");
255 area.setUuid(UUID.randomUUID());
256 area.setIdInVocabulary("BG");
257 state.putNamedArea(area);
258 faunaEuAreaVocabulary.addTerm(area);
259 area = NamedArea.NewInstance(null, "Belarus", "BY");
260 area.setUuid(UUID.randomUUID());
261 area.setIdInVocabulary("BY");
262 state.putNamedArea(area);
263 faunaEuAreaVocabulary.addTerm(area);
264 area = NamedArea.NewInstance(null, "Switzerland", "CH");
265 area.setUuid(UUID.randomUUID());
266 area.setIdInVocabulary("CH");
267 state.putNamedArea(area);
268 faunaEuAreaVocabulary.addTerm(area);
269 area = NamedArea.NewInstance(null, "Cyprus", "CY");
270 area.setUuid(UUID.randomUUID());
271 area.setIdInVocabulary("CY");
272 state.putNamedArea(area);
273 faunaEuAreaVocabulary.addTerm(area);
274 area = NamedArea.NewInstance(null, "Czech Republic", "CZ");
275 area.setUuid(UUID.randomUUID());
276 area.setIdInVocabulary("CZ");
277 state.putNamedArea(area);
278 faunaEuAreaVocabulary.addTerm(area);
279 area = NamedArea.NewInstance(null, "Germany", "DE");
280 area.setUuid(UUID.randomUUID());
281 area.setIdInVocabulary("DE");
282 state.putNamedArea(area);
283 faunaEuAreaVocabulary.addTerm(area);
284 area = NamedArea.NewInstance("Incl. Bornholm I.", "Danish mainland", "DK-DEN");
285 area.setUuid(UUID.randomUUID());
286 area.setIdInVocabulary("DK-DEN");
287 state.putNamedArea(area);
288 faunaEuAreaVocabulary.addTerm(area);
289 area = NamedArea.NewInstance(null, "Faroe Is.", "DK-FOR");
290 area.setUuid(UUID.randomUUID());
291 area.setIdInVocabulary("DK-FOR");
292 state.putNamedArea(area);
293 faunaEuAreaVocabulary.addTerm(area);
294 area = NamedArea.NewInstance(null, "Estonia", "EE");
295 area.setUuid(UUID.randomUUID());
296 area.setIdInVocabulary("EE");
297 state.putNamedArea(area);
298 faunaEuAreaVocabulary.addTerm(area);
299 area = NamedArea.NewInstance("Incl. Mallorca I., Menorca I., and Pityuses Is.(=Ibiza I. + Formentera I.)", "Balearic Is.", "ES-BAL");
300 area.setUuid(UUID.randomUUID());
301 area.setIdInVocabulary("ES-BAL");
302 state.putNamedArea(area);
303 faunaEuAreaVocabulary.addTerm(area);
304 area = NamedArea.NewInstance(null, "Canary Is.", "ES-CNY");
305 area.setUuid(UUID.randomUUID());
306 area.setIdInVocabulary("ES-CNY");
307 state.putNamedArea(area);
308 faunaEuAreaVocabulary.addTerm(area);
309 area = NamedArea.NewInstance("Incl. Alboran I.", "Spanish mainland", "ES-SPA");
310 area.setUuid(UUID.randomUUID());
311 area.setIdInVocabulary("ES-SPA");
312 state.putNamedArea(area);
313 faunaEuAreaVocabulary.addTerm(area);
314 area = NamedArea.NewInstance(null, "Finland", "FI");
315 area.setUuid(UUID.randomUUID());
316 area.setIdInVocabulary("FI");
317 state.putNamedArea(area);
318 faunaEuAreaVocabulary.addTerm(area);
319 area = NamedArea.NewInstance(null, "Corsica", "FR-COR");
320 area.setUuid(UUID.randomUUID());
321 area.setIdInVocabulary("FR-COR");
322 state.putNamedArea(area);
323 faunaEuAreaVocabulary.addTerm(area);
324 area = NamedArea.NewInstance(null, "French mainland", "FR-FRA");
325 area.setUuid(UUID.randomUUID());
326 area.setIdInVocabulary("FR-FRA");
327 state.putNamedArea(area);
328 faunaEuAreaVocabulary.addTerm(area);
329 area = NamedArea.NewInstance("Incl. Jersey, Guernsey, Alderney", "Channel Is.", "GB-CI");
330 area.setUuid(UUID.randomUUID());
331 area.setIdInVocabulary("GB-CI");
332 state.putNamedArea(area);
333 faunaEuAreaVocabulary.addTerm(area);
334 area = NamedArea.NewInstance(null, "Gibraltar", "GB-GI");
335 area.setUuid(UUID.randomUUID());
336 area.setIdInVocabulary("GB-GI");
337 state.putNamedArea(area);
338 faunaEuAreaVocabulary.addTerm(area);
339 area = NamedArea.NewInstance("Incl. Shetlands, Orkneys, Hebrides and Man Is.", "Britain I.", "GB-GRB");
340 area.setUuid(UUID.randomUUID());
341 area.setIdInVocabulary("GB-GRB");
342 state.putNamedArea(area);
343 faunaEuAreaVocabulary.addTerm(area);
344 area = NamedArea.NewInstance(null, "Northern Ireland", "GB-NI");
345 area.setUuid(UUID.randomUUID());
346 area.setIdInVocabulary("GB-NI");
347 state.putNamedArea(area);
348 faunaEuAreaVocabulary.addTerm(area);
349 area = NamedArea.NewInstance("Incl. Andípsara, Áyios Evstrátios, Foúrnoi,Ikaría, Khíos, "
350 + "Lésvos, Límnos, Oinoúsa, Psará, Sámos, Skópelos Kaloyeroi and other smaller"
351 + " islands","Vóreion Aiyáion (North Aegean Is.)", "GR-AEG");
352 area.setUuid(UUID.randomUUID());
353 area.setIdInVocabulary("GR-AEG");
354 state.putNamedArea(area);
355 faunaEuAreaVocabulary.addTerm(area);
356 area = NamedArea.NewInstance("Incl. Amorgós, Anáfi, Ánidros, Ándros, Andíparos, Denoúsa, Folégandros, "
357 + "Íos, Iráklia, Káros, Kímolos, Kéa, Kýthnos, Mílos, Mýkonos, Náxos, Páros, Políaigos, Sérifos, "
358 + "Sífnos, Síkinos, Sýros, Thíra, Tínos, Yiarós and other smaller islands", "Kikládes (Cyclades Is.)", "GR-CYC");
359 area.setUuid(UUID.randomUUID());
360 area.setIdInVocabulary("GR-CYC");
361 state.putNamedArea(area);
362 faunaEuAreaVocabulary.addTerm(area);
363 area = NamedArea.NewInstance("Incl. Alimniá, Árkoi, Astipálaia, Avgonísi, Ankathonísi, Farmakonísi, Ioinianísia,"
364 + " Kálimnos, Kalolímnos, Kandelioúsa, Kárpathos, Kásos, Khálki, Khamilí, Kínaros, Kos, Léros, Levítha, "
365 + "Lipsói, Meyísti, Nísiros, Ofidoúsa, Pátmos, Ródhos, Saría, Sími, Sírina, Tílos, Tría Nisiá, Yialí "
366 + "and other smaller islands", "Dodekánisos (Dodecanese Is.) ", "GR-DOD");
367 area.setUuid(UUID.randomUUID());
368 area.setIdInVocabulary("GR-DOD");
369 state.putNamedArea(area);
370 faunaEuAreaVocabulary.addTerm(area);
371 area = NamedArea.NewInstance(" Incl. Andikíthira I., Evvia I., Ionian Is., Samothráki I., Northern Sporades Is., Thásos I.",
372 "Greek mainland", "GR-GRC");
373 area.setUuid(UUID.randomUUID());
374 area.setIdInVocabulary("GR-GRC");
375 state.putNamedArea(area);
376 faunaEuAreaVocabulary.addTerm(area);
377 area = NamedArea.NewInstance("Incl. small adjacent islands like Gávdhos. Note that Andikíthira I. although being "
378 + "closer to Kriti than to mainland, belongs to a mainland province", "Kriti (Crete)", "GR-KRI");
379 area.setUuid(UUID.randomUUID());
380 area.setIdInVocabulary("GR-KRI");
381 state.putNamedArea(area);
382 faunaEuAreaVocabulary.addTerm(area);
383 area = NamedArea.NewInstance(null, "Croatia", "HR");
384 area.setUuid(UUID.randomUUID());
385 area.setIdInVocabulary("HR");
386 state.putNamedArea(area);
387 faunaEuAreaVocabulary.addTerm(area);
388 area = NamedArea.NewInstance(null, "Hungary", "HU");
389 area.setUuid(UUID.randomUUID());
390 area.setIdInVocabulary("HU");
391 state.putNamedArea(area);
392 faunaEuAreaVocabulary.addTerm(area);
393 area = NamedArea.NewInstance(null, "Ireland", "IE");
394 area.setUuid(UUID.randomUUID());
395 area.setIdInVocabulary("IE");
396 state.putNamedArea(area);
397 faunaEuAreaVocabulary.addTerm(area);
398 area = NamedArea.NewInstance(null, "Iceland", "IS");
399 area.setUuid(UUID.randomUUID());
400 area.setIdInVocabulary("IS");
401 state.putNamedArea(area);
402 faunaEuAreaVocabulary.addTerm(area);
403 area = NamedArea.NewInstance(null, "Italian mainland", "IT-ITA");
404 area.setUuid(UUID.randomUUID());
405 area.setIdInVocabulary("IT-ITA");
406 state.putNamedArea(area);
407 faunaEuAreaVocabulary.addTerm(area);
408 area = NamedArea.NewInstance(null, "Sardinia", "IT-SAR");
409 area.setUuid(UUID.randomUUID());
410 area.setIdInVocabulary("IT-SAR");
411 state.putNamedArea(area);
412 faunaEuAreaVocabulary.addTerm(area);
413 area = NamedArea.NewInstance(" Incl. adjacent Italian islands (Lipari Is., Ustica I., Egadi Is., "
414 + "Pantelleria I., Pelagie Is.) ", "Sicily", "IT-SI");
415 area.setUuid(UUID.randomUUID());
416 area.setIdInVocabulary("IT-SI");
417 state.putNamedArea(area);
418 faunaEuAreaVocabulary.addTerm(area);
419 area = NamedArea.NewInstance(null, "Liechtenstein", "LI");
420 area.setUuid(UUID.randomUUID());
421 area.setIdInVocabulary("LI");
422 state.putNamedArea(area);
423 faunaEuAreaVocabulary.addTerm(area);
424 area = NamedArea.NewInstance(null, "Lithuania", "LT");
425 area.setUuid(UUID.randomUUID());
426 area.setIdInVocabulary("LT");
427 state.putNamedArea(area);
428 faunaEuAreaVocabulary.addTerm(area);
429 area = NamedArea.NewInstance(null, "Luxembourg", "LU");
430 area.setUuid(UUID.randomUUID());
431 area.setIdInVocabulary("LU");
432 state.putNamedArea(area);
433 faunaEuAreaVocabulary.addTerm(area);
434 area = NamedArea.NewInstance(null, "Latvia", "LV");
435 area.setUuid(UUID.randomUUID());
436 area.setIdInVocabulary("LV");
437 state.putNamedArea(area);
438 faunaEuAreaVocabulary.addTerm(area);
439 area = NamedArea.NewInstance(null, "Monaco", "MC");
440 area.setUuid(UUID.randomUUID());
441 area.setIdInVocabulary("MC");
442 state.putNamedArea(area);
443 faunaEuAreaVocabulary.addTerm(area);
444 area = NamedArea.NewInstance(null, "Moldova, Republic of", "MD");
445 area.setUuid(UUID.randomUUID());
446 area.setIdInVocabulary("MD");
447 state.putNamedArea(area);
448 faunaEuAreaVocabulary.addTerm(area);
449 area = NamedArea.NewInstance(null, "Macedonia, the former Yugoslav Republic of", "MK");
450 area.setUuid(UUID.randomUUID());
451 area.setIdInVocabulary("MK");
452 state.putNamedArea(area);
453 faunaEuAreaVocabulary.addTerm(area);
454 area = NamedArea.NewInstance(null, "Malta", "MT");
455 area.setUuid(UUID.randomUUID());
456 area.setIdInVocabulary("MT");
457 state.putNamedArea(area);
458 faunaEuAreaVocabulary.addTerm(area);
459 area = NamedArea.NewInstance(null, "The Netherlands", "NL");
460 area.setUuid(UUID.randomUUID());
461 area.setIdInVocabulary("NL");
462 state.putNamedArea(area);
463 faunaEuAreaVocabulary.addTerm(area);
464 area = NamedArea.NewInstance(null, "Norwegian mainland", "NO-NOR");
465 area.setUuid(UUID.randomUUID());
466 area.setIdInVocabulary("NO-NOR");
467 state.putNamedArea(area);
468 faunaEuAreaVocabulary.addTerm(area);
469 area = NamedArea.NewInstance("Incl. Bear I.", "Svalbard & Jan Mayen", "NO-SVA");
470 area.setUuid(UUID.randomUUID());
471 area.setIdInVocabulary("NO-SVA");
472 state.putNamedArea(area);
473 faunaEuAreaVocabulary.addTerm(area);
474 area = NamedArea.NewInstance(null, "Poland", "PL");
475 area.setUuid(UUID.randomUUID());
476 area.setIdInVocabulary("PL");
477 state.putNamedArea(area);
478 faunaEuAreaVocabulary.addTerm(area);
479 area = NamedArea.NewInstance(null, "Azores Is.", "PT-AZO");
480 area.setUuid(UUID.randomUUID());
481 area.setIdInVocabulary("PT-AZO");
482 state.putNamedArea(area);
483 faunaEuAreaVocabulary.addTerm(area);
484 area = NamedArea.NewInstance(null, "Madeira Is.", "PT-MDR");
485 area.setUuid(UUID.randomUUID());
486 area.setIdInVocabulary("PT-MDR");
487 state.putNamedArea(area);
488 faunaEuAreaVocabulary.addTerm(area);
489 area = NamedArea.NewInstance(null, "Portuguese mainland", "PT-POR");
490 area.setUuid(UUID.randomUUID());
491 area.setIdInVocabulary("PT-POR");
492 state.putNamedArea(area);
493 faunaEuAreaVocabulary.addTerm(area);
494 area = NamedArea.NewInstance(null, "Selvagens Is.", "PT-SEL");
495 area.setUuid(UUID.randomUUID());
496 area.setIdInVocabulary("PT-SEL");
497 state.putNamedArea(area);
498 faunaEuAreaVocabulary.addTerm(area);
499 area = NamedArea.NewInstance(null, "Romania", "RO");
500 area.setUuid(UUID.randomUUID());
501 area.setIdInVocabulary("RO");
502 state.putNamedArea(area);
503 faunaEuAreaVocabulary.addTerm(area);
504 area = NamedArea.NewInstance("Excl. Ushakova I. and Vize I.", "Franz Josef Land", "RU-FJL");
505 area.setUuid(UUID.randomUUID());
506 area.setIdInVocabulary("RU-FJL");
507 state.putNamedArea(area);
508 faunaEuAreaVocabulary.addTerm(area);
509 area = NamedArea.NewInstance(null, "Kaliningrad Region", "RU-KGD");
510 area.setUuid(UUID.randomUUID());
511 area.setIdInVocabulary("RU-KGD");
512 state.putNamedArea(area);
513 faunaEuAreaVocabulary.addTerm(area);
514 area = NamedArea.NewInstance(null, "Novaya Zemlya", "RU-NOZ");
515 area.setUuid(UUID.randomUUID());
516 area.setIdInVocabulary("RU-NOZ");
517 state.putNamedArea(area);
518 faunaEuAreaVocabulary.addTerm(area);
519 area = NamedArea.NewInstance(null, "Central European Russia", "RU-RUC");
520 area.setUuid(UUID.randomUUID());
521 area.setIdInVocabulary("RU-RUC");
522 state.putNamedArea(area);
523 faunaEuAreaVocabulary.addTerm(area);
524 area = NamedArea.NewInstance(null, "East European Russia", "RU-RUE");
525 area.setUuid(UUID.randomUUID());
526 area.setIdInVocabulary("RU-RUE");
527 state.putNamedArea(area);
528
529 faunaEuAreaVocabulary.addTerm(area);
530 area = NamedArea.NewInstance(null, "North European Russia", "RU-RUN");
531 area.setUuid(UUID.randomUUID());
532 area.setIdInVocabulary("RU-RUN");
533 state.putNamedArea(area);
534 faunaEuAreaVocabulary.addTerm(area);
535 area = NamedArea.NewInstance(null, "South European Russia", "RU-RUS");
536 area.setUuid(UUID.randomUUID());
537 area.setIdInVocabulary("RU-RUS");
538 state.putNamedArea(area);
539 faunaEuAreaVocabulary.addTerm(area);
540 area = NamedArea.NewInstance(null, "Northwest European Russia", "RU-RUW");
541 area.setUuid(UUID.randomUUID());
542 area.setIdInVocabulary("RU-RUW");
543 state.putNamedArea(area);
544 faunaEuAreaVocabulary.addTerm(area);
545 area = NamedArea.NewInstance("Incl. Gotland I.", "Sweden", "SE");
546 area.setUuid(UUID.randomUUID());
547 area.setIdInVocabulary("SE");
548 state.putNamedArea(area);
549 faunaEuAreaVocabulary.addTerm(area);
550 area = NamedArea.NewInstance(null, "Slovenia", "SI");
551 area.setUuid(UUID.randomUUID());
552 area.setIdInVocabulary("SI");
553 state.putNamedArea(area);
554 faunaEuAreaVocabulary.addTerm(area);
555 area = NamedArea.NewInstance(null, "Slovakia", "SK");
556 area.setUuid(UUID.randomUUID());
557 area.setIdInVocabulary("SK");
558 state.putNamedArea(area);
559 faunaEuAreaVocabulary.addTerm(area);
560 area = NamedArea.NewInstance(null, "San Marino", "SM");
561 area.setUuid(UUID.randomUUID());
562 area.setIdInVocabulary("SM");
563 state.putNamedArea(area);
564 faunaEuAreaVocabulary.addTerm(area);
565 area = NamedArea.NewInstance("Incl. Imroz I. - Gökçeada, but not those in the Sea of Marmara",
566 "European Turkey", "TR-TUE");
567 area.setUuid(UUID.randomUUID());
568 area.setIdInVocabulary("TR-TUE");
569 state.putNamedArea(area);
570 faunaEuAreaVocabulary.addTerm(area);
571 area = NamedArea.NewInstance(null, "Ukraine", "UA");
572 area.setUuid(UUID.randomUUID());
573 area.setIdInVocabulary("UA");
574 state.putNamedArea(area);
575 faunaEuAreaVocabulary.addTerm(area);
576 area = NamedArea.NewInstance(null, "Vatican City", "VA");
577 area.setUuid(UUID.randomUUID());
578 area.setIdInVocabulary("VA");
579 state.putNamedArea(area);
580 faunaEuAreaVocabulary.addTerm(area);
581 area = NamedArea.NewInstance("Incl. Serbia, Kosovo, Voivodina, Montenegro", "Yugoslavia", "YU");
582 area.setUuid(UUID.randomUUID());
583 area.setIdInVocabulary("YU");
584 state.putNamedArea(area);
585 faunaEuAreaVocabulary.addTerm(area);
586 area = NamedArea.NewInstance(null, "Afro-tropical region", "AFR");
587 area.setUuid(UUID.randomUUID());
588 area.setIdInVocabulary("AFR");
589 state.putNamedArea(area);
590 faunaEuAreaVocabulary.addTerm(area);
591 area = NamedArea.NewInstance(null, "Australian region", "AUS");
592 area.setUuid(UUID.randomUUID());
593 area.setIdInVocabulary("AUS");
594 state.putNamedArea(area);
595 faunaEuAreaVocabulary.addTerm(area);
596 area = NamedArea.NewInstance("East of the border line here defined", "East Palaearctic", "EPA");
597 area.setUuid(UUID.randomUUID());
598 area.setIdInVocabulary("EPA");
599 state.putNamedArea(area);
600 faunaEuAreaVocabulary.addTerm(area);
601 area = NamedArea.NewInstance("Not including Sinai Peninsula", "North Africa", "NAF");
602 area.setUuid(UUID.randomUUID());
603 area.setIdInVocabulary("NAF");
604 state.putNamedArea(area);
605 faunaEuAreaVocabulary.addTerm(area);
606 area = NamedArea.NewInstance(null, "Nearctic region", "NEA");
607 area.setUuid(UUID.randomUUID());
608 area.setIdInVocabulary("NEA");
609 state.putNamedArea(area);
610 faunaEuAreaVocabulary.addTerm(area);
611 area = NamedArea.NewInstance(null, "Neotropical region", "NEO");
612 area.setUuid(UUID.randomUUID());
613 area.setIdInVocabulary("NEO");
614 state.putNamedArea(area);
615 faunaEuAreaVocabulary.addTerm(area);
616 area = NamedArea.NewInstance("Asian Turkey, Caucasian Russian republics, Georgia, Armenia, Azerbaijan, "
617 + "Lebanon, Syria, Israel, Jordan, Sinai Peninsula (Egypt), Arabian peninsula, Iran, Iraq",
618 "Near East", "NRE");
619 area.setUuid(UUID.randomUUID());
620 area.setIdInVocabulary("NRE");
621 state.putNamedArea(area);
622 faunaEuAreaVocabulary.addTerm(area);
623 area = NamedArea.NewInstance(null, "Oriental region", "ORR");
624 area.setUuid(UUID.randomUUID());
625 area.setIdInVocabulary("ORR");
626 state.putNamedArea(area);
627 faunaEuAreaVocabulary.addTerm(area);
628 if (txStatus == null){
629 txStatus = startTransaction();
630 }
631 //txStatus = startTransaction();
632 faunaEuAreaVocabulary = getVocabularyService().save(faunaEuAreaVocabulary);
633 logger.info("save voc");
634 commitTransaction(txStatus);
635 state.setAreaVoc(faunaEuAreaVocabulary);
636 }
637
638 private void commitTaxaAndDistribution(
639 FaunaEuropaeaImportState state,
640 Set<UUID> taxonUuids,
641 Map<UUID, FaunaEuropaeaDistributionTaxon> fauEuTaxonMap,
642 TransactionStatus txStatus) throws Exception {
643
644 List<TaxonBase> taxonList = prepareTaxaAndDistribution(getTaxonService().find(taxonUuids), fauEuTaxonMap, state);
645
646 getTaxonService().save(taxonList);
647 taxonList = null;
648 taxonUuids = null;
649 fauEuTaxonMap = null;
650 commitTransaction(txStatus);
651
652 }
653
654 private List<TaxonBase> prepareTaxaAndDistribution(List<TaxonBase> taxonList, Map<UUID, FaunaEuropaeaDistributionTaxon> fauEuTaxonMap, FaunaEuropaeaImportState state) throws Exception{
655
656 Distribution newDistribution = null;
657 NamedArea namedArea;
658 PresenceAbsenceTerm presenceAbsenceStatus;
659 FaunaEuropaeaDistributionTaxon fauEuHelperTaxon;
660 UUID taxonUuid;
661 TaxonDescription taxonDescription;
662 Taxon taxon;
663 for (TaxonBase<?> taxonBase : taxonList) {
664
665 if (taxonBase != null) {
666
667 if (taxonBase instanceof Taxon) {
668 taxon = CdmBase.deproxy(taxonBase, Taxon.class);
669 } else {
670 logger.warn("TaxonBase (" + taxonBase.getId() + " is not of type Taxon but: "
671 + taxonBase.getClass().getSimpleName());
672 continue;
673 }
674
675 Set<TaxonDescription> descriptionSet = taxon.getDescriptions();
676 if (descriptionSet.size() > 0) {
677 taxonDescription = descriptionSet.iterator().next();
678 } else {
679 taxonDescription = TaxonDescription.NewInstance();
680 taxon.addDescription(taxonDescription);
681 taxonDescription.setDefault(true);
682 //addOriginalSource(taxonDescription, null, "Default Import", state.getConfig().getSourceReference());
683 }
684
685 taxonUuid = taxonBase.getUuid();
686 fauEuHelperTaxon= fauEuTaxonMap.get(taxonUuid);
687
688 for (FaunaEuropaeaDistribution fauEuHelperDistribution : fauEuHelperTaxon.getDistributions()) {
689 namedArea = null;
690 newDistribution = null;
691 presenceAbsenceStatus = null;
692
693 presenceAbsenceStatus = FaunaEuropaeaTransformer.occStatus2PresenceAbsence(fauEuHelperDistribution.getOccurrenceStatusId());
694
695
696 namedArea = state.areaId2NamedArea(fauEuHelperDistribution, state);
697 if (namedArea == null){
698 logger.warn("Area " + fauEuHelperDistribution.getAreaCode() + "not found in FE transformer");
699 }
700 if (namedArea == null){
701 //UUID areaUuid= FaunaEuropaeaTransformer.getUUIDByAreaAbbr(fauEuHelperDistribution.getAreaCode());
702 //if (areaUuid == null){
703 //logger.warn("Area " + fauEuHelperDistribution.getAreaCode() + "not found in FE transformer");
704 // }
705 // namedArea = getNamedArea(state, areaUuid, fauEuHelperDistribution.getAreaName(), fauEuHelperDistribution.getAreaName(), fauEuHelperDistribution.getAreaCode(), null, null, state.getAreaVoc(), TermMatchMode.UUID_ABBREVLABEL);
706 // namedArea.setIdInVocabulary(fauEuHelperDistribution.getAreaCode());
707 // state.putNamedArea(namedArea);
708 }
709
710 newDistribution = Distribution.NewInstance(namedArea, presenceAbsenceStatus);
711 newDistribution.setCreated(null);
712
713 taxonDescription.addElement(newDistribution);
714
715 }
716 }
717 }
718
719 taxonDescription= null;
720 newDistribution = null;
721 namedArea= null;
722 return taxonList;
723 }
724
725 @Override
726 protected boolean isIgnore(FaunaEuropaeaImportState state){
727 return !state.getConfig().isDoOccurrence();
728 }
729 }