2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.cdm
.io
.pesi
.faunaEuropaea
;
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
;
18 import java
.util
.UUID
;
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
;
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
;
37 * @author a.babadshanjan
41 public class FaunaEuropaeaDistributionImport
extends FaunaEuropaeaImportBase
{
43 private static final long serialVersionUID
= 746146902707885655L;
44 private static Logger logger
= LogManager
.getLogger();
47 protected boolean doCheck(FaunaEuropaeaImportState state
) {
48 boolean result
= true;
49 logger
.warn("Checking for Distributions not yet implemented");
54 protected void doInvoke(FaunaEuropaeaImportState state
) {
56 logger.warn("Start distribution doInvoke");
57 ProfilerController.memorySnapshot();
60 if (!state
.getConfig().isDoOccurrence()){
64 int limit
= state
.getConfig().getLimitSave();
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;
74 TransactionStatus txStatus
= null;
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);
86 // FaunaEuropaeaTransformer.setUUIDs(noDataUuid);
87 logger
.info("create termvoc");
88 createTermVocabulary(txStatus
, state
);
90 FaunaEuropaeaImportConfigurator fauEuConfig
= state
.getConfig();
91 Source source
= fauEuConfig
.getSource();
98 String selectColumns
=
99 " SELECT distribution.*, Area.*, Taxon.UUID ";
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";
108 selectCount
+ fromClause
;
111 selectColumns
+ fromClause
+ orderBy
;
113 if(logger
.isInfoEnabled()) { logger
.info("Start making distributions..."); }
116 ResultSet rs
= source
.getResultSet(countQuery
);
118 int count
= rs
.getInt(1);
120 rs
= source
.getResultSet(selectQuery
);
122 if (logger
.isInfoEnabled()) {
123 logger
.info("Number of rows: " + count
);
124 logger
.info("Count Query: " + countQuery
);
125 logger
.info("Select Query: " + selectQuery
);
131 if ((i
++ % limit
) == 0) {
133 txStatus
= startTransaction();
134 taxonUuids
= new HashSet
<>(limit
);
135 fauEuTaxonMap
= new HashMap
<>(limit
);
137 if(logger
.isInfoEnabled()) {
138 logger
.info("i = " + i
+ " - Distribution import transaction started");
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"));
153 currentTaxonUuid
= UUID
.randomUUID();
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
);
164 if (!taxonUuids
.contains(currentTaxonUuid
)) {
165 taxonUuids
.add(currentTaxonUuid
);
166 FaunaEuropaeaDistributionTaxon fauEuDistributionTaxon
=
167 new FaunaEuropaeaDistributionTaxon(currentTaxonUuid
);
168 fauEuTaxonMap
.put(currentTaxonUuid
, fauEuDistributionTaxon
);
169 fauEuDistributionTaxon
= null;
171 if (logger
.isTraceEnabled()) {
172 logger
.trace("Taxon (" + currentTaxonUuid
+ ") already stored.");
177 fauEuTaxonMap
.get(currentTaxonUuid
).addDistribution(fauEuDistribution
);
179 if (((i
% limit
) == 0 && i
!= 1 ) || i
== count
) {
182 commitTaxaAndDistribution(state
, taxonUuids
, fauEuTaxonMap
, txStatus
);
185 fauEuTaxonMap
= null;
187 } catch (Exception e
) {
188 logger
.error("Commit of taxa and distributions failed" + e
.getMessage());
192 if(logger
.isInfoEnabled()) { logger
.info("i = " + i
+ " - Transaction committed");}
197 if (taxonUuids
!= null){
199 commitTaxaAndDistribution(state
, taxonUuids
, fauEuTaxonMap
, txStatus
);
202 fauEuTaxonMap
= null;
203 } catch (Exception e
) {
204 logger
.error("Commit of taxa and distributions failed");
205 logger
.error(e
.getMessage());
210 } catch (SQLException e
) {
211 logger
.error("SQLException:" + e
);
212 state
.setUnsuccessfull();
215 if(logger
.isInfoEnabled()) { logger
.info("End making distributions..."); }
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
);
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
);
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",
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();
631 //txStatus = startTransaction();
632 faunaEuAreaVocabulary
= getVocabularyService().save(faunaEuAreaVocabulary
);
633 logger
.info("save voc");
634 commitTransaction(txStatus
);
635 state
.setAreaVoc(faunaEuAreaVocabulary
);
638 private void commitTaxaAndDistribution(
639 FaunaEuropaeaImportState state
,
640 Set
<UUID
> taxonUuids
,
641 Map
<UUID
, FaunaEuropaeaDistributionTaxon
> fauEuTaxonMap
,
642 TransactionStatus txStatus
) throws Exception
{
644 List
<TaxonBase
> taxonList
= prepareTaxaAndDistribution(getTaxonService().find(taxonUuids
), fauEuTaxonMap
, state
);
646 getTaxonService().save(taxonList
);
649 fauEuTaxonMap
= null;
650 commitTransaction(txStatus
);
654 private List
<TaxonBase
> prepareTaxaAndDistribution(List
<TaxonBase
> taxonList
, Map
<UUID
, FaunaEuropaeaDistributionTaxon
> fauEuTaxonMap
, FaunaEuropaeaImportState state
) throws Exception
{
656 Distribution newDistribution
= null;
658 PresenceAbsenceTerm presenceAbsenceStatus
;
659 FaunaEuropaeaDistributionTaxon fauEuHelperTaxon
;
661 TaxonDescription taxonDescription
;
663 for (TaxonBase
<?
> taxonBase
: taxonList
) {
665 if (taxonBase
!= null) {
667 if (taxonBase
instanceof Taxon
) {
668 taxon
= CdmBase
.deproxy(taxonBase
, Taxon
.class);
670 logger
.warn("TaxonBase (" + taxonBase
.getId() + " is not of type Taxon but: "
671 + taxonBase
.getClass().getSimpleName());
675 Set
<TaxonDescription
> descriptionSet
= taxon
.getDescriptions();
676 if (descriptionSet
.size() > 0) {
677 taxonDescription
= descriptionSet
.iterator().next();
679 taxonDescription
= TaxonDescription
.NewInstance();
680 taxon
.addDescription(taxonDescription
);
681 taxonDescription
.setDefault(true);
682 //addOriginalSource(taxonDescription, null, "Default Import", state.getConfig().getSourceReference());
685 taxonUuid
= taxonBase
.getUuid();
686 fauEuHelperTaxon
= fauEuTaxonMap
.get(taxonUuid
);
688 for (FaunaEuropaeaDistribution fauEuHelperDistribution
: fauEuHelperTaxon
.getDistributions()) {
690 newDistribution
= null;
691 presenceAbsenceStatus
= null;
693 presenceAbsenceStatus
= FaunaEuropaeaTransformer
.occStatus2PresenceAbsence(fauEuHelperDistribution
.getOccurrenceStatusId());
696 namedArea
= state
.areaId2NamedArea(fauEuHelperDistribution
, state
);
697 if (namedArea
== null){
698 logger
.warn("Area " + fauEuHelperDistribution
.getAreaCode() + "not found in FE transformer");
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");
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);
710 newDistribution
= Distribution
.NewInstance(namedArea
, presenceAbsenceStatus
);
711 newDistribution
.setCreated(null);
713 taxonDescription
.addElement(newDistribution
);
719 taxonDescription
= null;
720 newDistribution
= null;
726 protected boolean isIgnore(FaunaEuropaeaImportState state
){
727 return !state
.getConfig().isDoOccurrence();