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
.berlinModel
.in
;
11 import java
.sql
.ResultSet
;
12 import java
.sql
.SQLException
;
13 import java
.util
.HashMap
;
15 import java
.util
.UUID
;
17 import org
.apache
.commons
.lang
.StringUtils
;
18 import org
.apache
.logging
.log4j
.LogManager
;
19 import org
.apache
.logging
.log4j
.Logger
;
20 import org
.springframework
.stereotype
.Component
;
21 import org
.springframework
.transaction
.TransactionStatus
;
23 import eu
.etaxonomy
.cdm
.common
.URI
;
24 import eu
.etaxonomy
.cdm
.io
.berlinModel
.BerlinModelTransformer
;
25 import eu
.etaxonomy
.cdm
.io
.berlinModel
.in
.validation
.BerlinModelAreaImportValidator
;
26 import eu
.etaxonomy
.cdm
.io
.common
.IOValidator
;
27 import eu
.etaxonomy
.cdm
.io
.common
.ResultSetPartitioner
;
28 import eu
.etaxonomy
.cdm
.io
.common
.Source
;
29 import eu
.etaxonomy
.cdm
.model
.common
.Annotation
;
30 import eu
.etaxonomy
.cdm
.model
.common
.AnnotationType
;
31 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
32 import eu
.etaxonomy
.cdm
.model
.common
.ExtensionType
;
33 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
34 import eu
.etaxonomy
.cdm
.model
.common
.Marker
;
35 import eu
.etaxonomy
.cdm
.model
.common
.MarkerType
;
36 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
37 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaLevel
;
38 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaType
;
39 import eu
.etaxonomy
.cdm
.model
.reference
.OriginalSourceType
;
40 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
41 import eu
.etaxonomy
.cdm
.model
.term
.OrderedTermVocabulary
;
42 import eu
.etaxonomy
.cdm
.model
.term
.TermType
;
43 import eu
.etaxonomy
.cdm
.model
.term
.TermVocabulary
;
50 public class BerlinModelAreaImport
extends BerlinModelImportBase
{
52 private static final long serialVersionUID
= -2810052908318645219L;
53 private static final Logger logger
= LogManager
.getLogger();
55 public static final String NAMESPACE
= "emArea";
57 private static final String pluralString
= "areas";
58 private static final String dbTableName
= "emArea"; //??
60 public BerlinModelAreaImport(){
61 super(dbTableName
, pluralString
);
65 protected String
getIdQuery(BerlinModelImportState state
) {
68 // + " FROM " + getTableName();
69 // if (state.getConfig().isEuroMed()){
70 // result += " WHERE AreaID NOT IN (1, 21, 650, 653, 1718, 654, 646, 647) "; //#3986
73 return null; //not relevant as we have no partitioning here
77 protected String
getRecordQuery(BerlinModelImportConfigurator config
) {
80 // + " FROM emArea a "
81 // + " WHERE (a.AreaId IN (" + ID_LIST_TOKEN + ") )"
82 // + " ORDER BY a.AreaId "
85 return null; //not relevant as we have no partitioning here
88 private Map
<Integer
, NamedArea
> euroMedAreas
= new HashMap
<>();
91 public boolean doPartition(@SuppressWarnings("rawtypes") ResultSetPartitioner partitioner
, BerlinModelImportState state
) {
97 public void doInvoke(BerlinModelImportState state
) {
98 TermVocabulary
<?
> voc
= getVocabularyService().find(BerlinModelTransformer
.uuidVocEuroMedAreas
);
101 createEuroMedAreas(state
);
102 createCaucasusAreas(state
);
103 } catch (SQLException e
) {
104 logger
.warn("Exception when creating areas: " + e
.getMessage());
111 private TermVocabulary
<NamedArea
> createEuroMedAreas(BerlinModelImportState state
) throws SQLException
{
113 logger
.warn("Start creating E+M areas");
114 Source source
= state
.getConfig().getSource();
115 Reference sourceReference
= state
.getConfig().getSourceReference();
117 TransactionStatus txStatus
= this.startTransaction();
119 sourceReference
= getSourceReference(sourceReference
);
121 TermVocabulary
<NamedArea
> euroMedAreasVoc
= makeEmptyEuroMedVocabulary();
123 MarkerType eurMarkerType
= getMarkerType(state
, BerlinModelTransformer
.uuidEurArea
, "eur", "eur Area", "eur", getEuroMedMarkerTypeVoc(state
));
124 MarkerType euroMedAreaMarkerType
= getMarkerType(state
, BerlinModelTransformer
.uuidEurMedArea
, "EuroMedArea", "EuroMedArea", "EuroMedArea", getEuroMedMarkerTypeVoc(state
));
125 ExtensionType isoCodeExtType
= getExtensionType(state
, BerlinModelTransformer
.uuidIsoCode
, "IsoCode", "IsoCode", "iso");
126 ExtensionType tdwgCodeExtType
= getExtensionType(state
, BerlinModelTransformer
.uuidTdwgAreaCode
, "TDWG code", "TDWG Area code", "tdwg");
127 ExtensionType mclCodeExtType
= getExtensionType(state
, BerlinModelTransformer
.uuidMclCode
, "MCL code", "MedCheckList code", "mcl");
128 NamedAreaLevel areaLevelTop
= getNamedAreaLevel(state
, BerlinModelTransformer
.uuidEuroMedAreaLevelTop
, "Euro+Med top area level", "Euro+Med top area level. This level is only to be used for the area representing the complete Euro+Med area", "e+m top", null);
129 NamedAreaLevel areaLevelEm1
= getNamedAreaLevel(state
, BerlinModelTransformer
.uuidEuroMedAreaLevelFirst
, "Euro+Med 1. area level", "Euro+Med 1. area level", "e+m 1.", null);
130 NamedAreaLevel areaLevelEm2
= getNamedAreaLevel(state
, BerlinModelTransformer
.uuidEuroMedAreaLevelSecond
, "Euro+Med 2. area level", "Euro+Med 2. area level", "Euro+Med 1. area level", null);
133 String sql
= "SELECT * , CASE WHEN EMCode = 'EM' THEN 'a' ELSE 'b' END as isEM " +
135 " WHERE areaId not IN (1, 14, 20, 21, 33, 646, 647, 653, 654, 1718) " +
136 " ORDER BY isEM, EMCode";
137 ResultSet rs
= source
.getResultSet(sql
);
139 NamedArea euroMedArea
= null;
140 NamedArea lastLevel1Area
= null;
142 //euroMedArea (EMCode = 'EM')
144 euroMedArea
= makeSingleEuroMedArea(rs
, eurMarkerType
, euroMedAreaMarkerType
, isoCodeExtType
, tdwgCodeExtType
, mclCodeExtType
,
145 areaLevelTop
, areaLevelEm1
, areaLevelEm2
, sourceReference
, euroMedArea
, lastLevel1Area
);
146 euroMedAreasVoc
.addTerm(euroMedArea
);
150 NamedArea newArea
= makeSingleEuroMedArea(rs
, eurMarkerType
, euroMedAreaMarkerType
,
151 isoCodeExtType
, tdwgCodeExtType
, mclCodeExtType
,
152 areaLevelTop
, areaLevelEm1
, areaLevelEm2
, sourceReference
, euroMedArea
, lastLevel1Area
);
153 if (newArea
!= null){
154 euroMedAreasVoc
.addTerm(newArea
);
155 if (newArea
.getPartOf().equals(euroMedArea
)){
156 lastLevel1Area
= newArea
;
160 emAreaFinetuning(euroMedAreasVoc
, areaLevelEm2
);
162 markAreasAsHidden(state
, euroMedAreasVoc
);
164 getVocabularyService().saveOrUpdate(euroMedAreasVoc
);
167 commitTransaction(txStatus
);
168 } catch (Exception e
) {
170 logger
.error("An exception occurred when trying to commit E+M Areas");
172 logger
.warn("Created E+M areas");
174 return euroMedAreasVoc
;
178 * @param areaLevelEm2
179 * @param euroMedAreas2
181 private void emAreaFinetuning(TermVocabulary
<NamedArea
> euroMedAreas
, NamedAreaLevel areaLevelEm2
) {
183 NamedArea oldArea
= euroMedAreas
.getTermByIdInvocabulary("Cz");
184 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Cs"), areaLevelEm2
);
185 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Sk"), areaLevelEm2
);
188 oldArea
= euroMedAreas
.getTermByIdInvocabulary("Ju");
189 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("BH"), areaLevelEm2
);
190 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Cg"), areaLevelEm2
);
191 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Ct"), areaLevelEm2
);
192 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Mk"), areaLevelEm2
);
193 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Sl"), areaLevelEm2
);
194 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Sr"), areaLevelEm2
);
195 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Yu(K)"), areaLevelEm2
);
196 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("SM"), areaLevelEm2
);
199 oldArea
= euroMedAreas
.getTermByIdInvocabulary("IJ");
200 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Ir"), areaLevelEm2
);
201 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Jo"), areaLevelEm2
);
204 oldArea
= euroMedAreas
.getTermByIdInvocabulary("LS");
205 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Le"), areaLevelEm2
);
206 makeSubterm(oldArea
, euroMedAreas
.getTermByIdInvocabulary("Sy"), areaLevelEm2
);
210 //5.Mark areas to be hidden #3979 .5
211 private void markAreasAsHidden(BerlinModelImportState state
, TermVocabulary
<NamedArea
> euroMedAreasVoc
) {
215 MarkerType hiddenAreaMarkerType
= getMarkerType(state
, BerlinModelTransformer
.uuidHiddenArea
,
216 "Hidden Area","Used to hide distributions for the named areas in publications", null, getEuroMedMarkerTypeVoc(state
));
218 //Add hidden area marker to Rs(C) and Rs(N)
219 hideArea(euroMedAreasVoc
, hiddenAreaMarkerType
, BerlinModelTransformer
.uuidRs
);
220 hideArea(euroMedAreasVoc
, hiddenAreaMarkerType
, BerlinModelTransformer
.uuidRs_B
);
221 hideArea(euroMedAreasVoc
, hiddenAreaMarkerType
, BerlinModelTransformer
.uuidRs_C
);
222 hideArea(euroMedAreasVoc
, hiddenAreaMarkerType
, BerlinModelTransformer
.uuidRs_E
);
223 hideArea(euroMedAreasVoc
, hiddenAreaMarkerType
, BerlinModelTransformer
.uuidRs_N
);
224 hideArea(euroMedAreasVoc
, hiddenAreaMarkerType
, BerlinModelTransformer
.uuidRs_K
);
225 hideArea(euroMedAreasVoc
, hiddenAreaMarkerType
, BerlinModelTransformer
.uuidRs_W
);
226 } catch (Exception e
) {
228 logger
.error("Exception in markAreasAsHidden: " + e
.getMessage());
233 private void hideArea(TermVocabulary
<NamedArea
> euroMedAreasVoc
, MarkerType hiddenAreaMarkerType
, UUID areaUuid
) {
234 for (NamedArea namedArea
: euroMedAreasVoc
.getTerms()){
235 if (namedArea
.getUuid().equals(areaUuid
)){
236 namedArea
.addMarker(Marker
.NewInstance(hiddenAreaMarkerType
, true));
245 * @param areaLevelEm2
247 private void makeSubterm(NamedArea oldArea
, NamedArea namedArea
, NamedAreaLevel areaLevelEm2
) {
248 namedArea
.setLevel(areaLevelEm2
);
249 namedArea
.setPartOf(oldArea
);
254 * @param eurMarkerType
255 * @param euroMedAreaMarkerType
256 * @param isoCodeExtType
257 * @param tdwgCodeExtType
258 * @param mclCodeExtType
260 * @param areaLevelEm2
261 * @param areaLevelEm1
262 * @param areaLevelTop
263 * @throws SQLException
265 private NamedArea
makeSingleEuroMedArea(ResultSet rs
, MarkerType eurMarkerType
,
266 MarkerType euroMedAreaMarkerType
, ExtensionType isoCodeExtType
,
267 ExtensionType tdwgCodeExtType
, ExtensionType mclCodeExtType
,
268 NamedAreaLevel areaLevelTop
, NamedAreaLevel areaLevelEm1
, NamedAreaLevel areaLevelEm2
,
269 Reference sourceReference
, NamedArea euroMedArea
, NamedArea level1Area
) throws SQLException
{
271 Integer areaId
= rs
.getInt("AreaId");
272 String emCode
= nullSafeTrim(rs
.getString("EMCode"));
273 String isoCode
= nullSafeTrim(rs
.getString("ISOCode"));
274 String tdwgCode
= nullSafeTrim(rs
.getString("TDWGCode"));
275 String unit
= nullSafeTrim(rs
.getString("Unit"));
278 boolean eurMarker
= rs
.getBoolean("eur");
279 boolean euroMedAreaMarker
= rs
.getBoolean("EuroMedArea");
280 String notes
= nullSafeTrim(rs
.getString("Notes"));
281 String mclCode
= nullSafeTrim(rs
.getString("MCLCode"));
282 String geoSearch
= nullSafeTrim(rs
.getString("NameForGeoSearch"));
285 if (isBlank(emCode
)){
290 UUID uuid
= BerlinModelTransformer
.getEMAreaUuid(emCode
);
291 NamedArea area
= (NamedArea
)getTermService().find(uuid
);
294 area
= NamedArea
.NewInstance(geoSearch
, unit
, emCode
);
298 if (areaId
== 211 || areaId
== 213){ //Additional Azores and Canary Is. area are merged into primary area, see also area.addSource part below
301 logger
.warn("Uuid for emCode could not be defined: " + emCode
);
307 area
.setIdInVocabulary(emCode
);
309 if (StringUtils
.isNotEmpty(notes
)){
310 area
.addAnnotation(Annotation
.NewInstance(notes
, AnnotationType
.EDITORIAL(), Language
.DEFAULT()));
313 area
.addMarker(Marker
.NewInstance(eurMarkerType
, eurMarker
));
314 area
.addMarker(Marker
.NewInstance(euroMedAreaMarkerType
, euroMedAreaMarker
));
317 if (isNotBlank(isoCode
)){
318 area
.addExtension(isoCode
, isoCodeExtType
);
320 if (isNotBlank(tdwgCode
)){
321 area
.addExtension(tdwgCode
, tdwgCodeExtType
);
323 if (isNotBlank(mclCode
)){
324 area
.addExtension(mclCode
, mclCodeExtType
);
328 area
.setType(NamedAreaType
.ADMINISTRATION_AREA());
331 area
.addSource(OriginalSourceType
.Import
, String
.valueOf(areaId
), NAMESPACE
, sourceReference
, null);
332 //add duplicate area ids for canary
333 if (areaId
== 624){ //Canary Is.
334 area
.addSource(OriginalSourceType
.Import
, String
.valueOf(213), NAMESPACE
, sourceReference
, null);
336 if (areaId
== 210){//Azores
337 area
.addSource(OriginalSourceType
.Import
, String
.valueOf(211), NAMESPACE
, sourceReference
, null);
341 if (euroMedArea
!= null){
342 if (emCode
.contains("(") && !emCode
.startsWith("Yu(K)")){
343 area
.setPartOf(level1Area
);
344 area
.setLevel(areaLevelEm2
);
346 area
.setPartOf(euroMedArea
);
347 area
.setLevel(areaLevelEm1
);
350 area
.setLevel(areaLevelTop
);
352 this.euroMedAreas
.put(areaId
, area
);
355 getTermService().saveOrUpdate(area
);
360 private String
nullSafeTrim(String string
) {
364 return string
.trim();
371 private OrderedTermVocabulary
<NamedArea
> makeEmptyEuroMedVocabulary() {
372 TermType type
= TermType
.NamedArea
;
373 String description
= "Euro+Med area vocabulary";
374 String label
= "E+M Areas";
375 String abbrev
= null;
376 URI termSourceUri
= null;
377 OrderedTermVocabulary
<NamedArea
> result
= OrderedTermVocabulary
.NewOrderedInstance(type
, null, description
, label
, abbrev
, termSourceUri
);
379 result
.setUuid(BerlinModelTransformer
.uuidVocEuroMedAreas
);
380 getVocabularyService().save(result
);
388 private void createCaucasusAreas(BerlinModelImportState state
) {
389 OrderedTermVocabulary
<NamedArea
> voc
= makeEmptyCaucasusVocabulary(state
);
390 NamedArea last
= null;
391 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc1
, "Western Ciscaucasia","WCC","1","");
392 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc1a
, "Azov-Kuban","Az.-Kub.","1","a");
393 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc1b
, "Western Stavropol","W. Stavr.","1","b");
394 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc2
, "Eastern Ciscaucasia","ECC","2","");
395 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc2a
, "Eastern Stavropol","E. Stavr.","2","a");
396 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc2b
, "Terek-Kuma","Ter.-Kuma ","2","b");
397 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc2c
, "Terek-Sulak","Ter.-Sul.","2","c");
398 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc3
, "Western Caucasus","WC","3","");
399 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc3a
, "Adagum-Pshish","Adag.-Pshish","3","a");
400 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc3b
, "Belaja-Laba","Bel.-Laba","3","b");
401 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc3c
, "Urup-Teberda","Urup-Teb.","3","c");
402 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc3d
, "Upper Kuban","U. Kub.","3","d");
403 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc4
, "Central Caucasus","CC","4","");
404 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc4a
, "Upper Kuma","U. Kuma","4","a");
405 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc4b
, "Malka","Malka","4","b");
406 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc4c
, "Upper Terek","U. Ter.","4","c");
407 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc5
, "Eastern Caucasus","EC","5","");
408 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc5a
, "Assa-Argun","Assa-Arg.","5","a");
409 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc5b
, "Upper Sulak","U. Sulak","5","b");
410 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc5c
, "Manas-Samur","Man.-Samur","5","c");
411 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc5d
, "Kubinsky","Kubin.","5","d");
412 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc6
, "North-Western Transcaucasia","NWTC","6","");
413 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc6a
, "Anapa-Gelendzhik","Anapa-Gel.","6","a");
414 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc6b
, "Pshada-Dzubga","Pshada-Dzhubga ","6","b");
415 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc7
, "Western Transcaucasia","WTC","7","");
416 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc7a
, "Tuapse-Adler","Tuap.-Adl.","7","a");
417 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc7b
, "Abkhasia","Abkh.","7","b");
418 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc7c
, "Inguri-Rioni","Ing.-Rioni","7","c");
419 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc7d
, "Rioni-Kvirili","Rioni-Kvir.","7","d");
420 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc7e
, "Adzharia","Adzh.","7","e");
421 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc8
, "Central Transcaucasia","CTC","8","");
422 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc8a
, "Karthalinia-South Ossetia","Kart.-S. Oss.","8","a");
423 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc8b
, "Trialetia-Lower Karthalinia","Trial.-L. Kart.","8","b");
424 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc8c
, "Lori","Lori","8","c");
425 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc9
, "Eastern Transcaucasia","ETC","9","");
426 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc9a
, "Alazan-Agrichay","Alaz.-Agrich.","9","a");
427 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc9b
, "Shirvan","Shirv.","9","b");
428 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc9c
, "Iori-Sheki","Iori-Sheki","9","c");
429 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc9d
, "Murghuz-Murovdagh","Murgh.-Murovd.","9","d");
430 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc9e
, "Lower Kura","L. Kura","9","e");
431 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc9f
, "Karabagh","Karab.","9","f");
432 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc10
, "South-Western Transcaucasia","SWTC","10","");
433 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc10a
, "Meskhetia","Meskh.","10","a");
434 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc10b
, "Dzhavachetia-Upper Akhurjan","Dzhav.-U. Akh.","10","b");
435 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc10c
, "Aragatz","Arag.","10","c");
436 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc11
, "Southern Transcaucasia","STC","11","");
437 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc11a
, "Erevan","Erev.","11","a");
438 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc11b
, "Sevan","Sevan","11","b");
439 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc11c
, "Daraleghiz","Dar.","11","c");
440 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc11d
, "Nakhitshevan","Nakh.","11","d");
441 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc11e
, "Zangezur","Zang.","11","e");
442 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc11f
, "Megri-Zangelan","Megri-Zan.","11","f");
443 last
= makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc11g
, "Southern Karabagh","S. Karab.","11","g");
444 makeSingleArea(state
, voc
, last
, BerlinModelTransformer
.uuidCauc12
, "Talysch","T","12","");
457 private NamedArea
makeSingleArea(BerlinModelImportState state
, OrderedTermVocabulary
<NamedArea
> voc
, NamedArea last
,
458 UUID uuid
, String label
, String labelAbbrev
,
459 String mainLevel
, String subLevel
) {
461 NamedArea namedArea
= NamedArea
.NewInstance(label
, label
, labelAbbrev
);
462 namedArea
.setUuid(uuid
);
463 if (isBlank(subLevel
)){
464 namedArea
.setLevel(getNamedAreaLevel(state
, BerlinModelTransformer
.uuidCaucasusAreaLevelFirst
, "Caucasus main areas", "Caucasus main areas", "Cauc. I", null));
466 namedArea
.setLevel(getNamedAreaLevel(state
, BerlinModelTransformer
.uuidCaucasusAreaLevelSecond
, "Caucasus sub areas", "Caucasus sub areas", "Cauc. II", null));
467 if(last
.getPartOf() != null){
468 namedArea
.setPartOf(last
.getPartOf());
470 namedArea
.setPartOf(last
);
473 String idInVoc
= mainLevel
+ subLevel
;
474 namedArea
.setIdInVocabulary(idInVoc
);
475 voc
.addTerm(namedArea
);
482 private OrderedTermVocabulary
<NamedArea
> makeEmptyCaucasusVocabulary(BerlinModelImportState state
) {
483 TermType type
= TermType
.NamedArea
;
484 String description
= "E+M Caucasus area vocabulary";
485 String label
= "E+M Caucasus Areas";
486 String abbrev
= null;
487 URI termSourceUri
= null;
488 OrderedTermVocabulary
<NamedArea
> result
= OrderedTermVocabulary
.NewOrderedInstance(type
, null, description
, label
, abbrev
, termSourceUri
);
489 result
.setUuid(BerlinModelTransformer
.uuidVocCaucasusAreas
);
490 getVocabularyService().save(result
);
495 public Map
<Object
, Map
<String
, ?
extends CdmBase
>> getRelatedObjectsForPartition(ResultSet rs
, BerlinModelImportState state
) {
496 Map
<Object
, Map
<String
, ?
extends CdmBase
>> result
= new HashMap
<>();
501 protected boolean doCheck(BerlinModelImportState state
){
502 IOValidator
<BerlinModelImportState
> validator
= new BerlinModelAreaImportValidator();
503 return validator
.validate(state
);
507 protected boolean isIgnore(BerlinModelImportState state
){
508 if (state
.getConfig().isDoNamedAreas()){
510 }else if (! (state
.getConfig().isDoOccurrence() || state
.getConfig().isDoCommonNames())){
513 if (!this.checkSqlServerColumnExists(state
.getConfig().getSource(), "emArea", "AreaId")){
514 logger
.error("emArea table or AreaId column do not exist. Must ignore area import");
517 TermVocabulary
<?
> voc
= getVocabularyService().find(BerlinModelTransformer
.uuidVocEuroMedAreas
);