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
.mexico
;
11 import java
.sql
.ResultSet
;
12 import java
.util
.HashMap
;
14 import java
.util
.UUID
;
16 import org
.apache
.log4j
.Logger
;
17 import org
.springframework
.stereotype
.Component
;
19 import eu
.etaxonomy
.cdm
.common
.URI
;
20 import eu
.etaxonomy
.cdm
.ext
.geo
.GeoServiceArea
;
21 import eu
.etaxonomy
.cdm
.ext
.geo
.GeoServiceAreaAnnotatedMapping
;
22 import eu
.etaxonomy
.cdm
.io
.common
.ResultSetPartitioner
;
23 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
24 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
25 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
26 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaLevel
;
27 import eu
.etaxonomy
.cdm
.model
.location
.NamedAreaType
;
28 import eu
.etaxonomy
.cdm
.model
.term
.OrderedTermVocabulary
;
29 import eu
.etaxonomy
.cdm
.model
.term
.Representation
;
30 import eu
.etaxonomy
.cdm
.model
.term
.TermType
;
37 public class MexicoEfloraRegionImport
extends MexicoEfloraImportBase
{
39 private static final long serialVersionUID
= -361321245993093847L;
40 private static final Logger logger
= Logger
.getLogger(MexicoEfloraRegionImport
.class);
42 protected static final String NAMESPACE
= "Region";
44 private static final String pluralString
= "regions";
45 private static final String dbTableName
= "cv2_Controlled_vocabulary_for_Mexican_States";
47 public MexicoEfloraRegionImport(){
48 super(dbTableName
, pluralString
);
52 protected String
getIdQuery(MexicoEfloraImportState state
) {
53 String sql
= " SELECT IdRegion "
54 + " FROM " + dbTableName
55 + " ORDER BY IdRegion ";
60 protected String
getRecordQuery(MexicoEfloraImportConfigurator config
) {
61 String sqlSelect
= " SELECT * ";
62 String sqlFrom
= " FROM " + dbTableName
;
63 String sqlWhere
= " WHERE ( IdRegion IN (" + ID_LIST_TOKEN
+ ") )";
65 String strRecordQuery
=sqlSelect
+ " " + sqlFrom
+ " " + sqlWhere
;
66 return strRecordQuery
;
70 public boolean doPartition(@SuppressWarnings("rawtypes") ResultSetPartitioner partitioner
, MexicoEfloraImportState state
) {
71 initAreaVocabulary(state
);
73 // String label = "Mexican regions";
74 // OrderedTermVocabulary<NamedArea> voc = OrderedTermVocabulary.NewOrderedInstance(TermType.NamedArea, NamedArea.class, label, label, null, null);
75 // getVocabularyService().save(voc);
77 boolean success
= true ;
79 // Set<NamedArea> areasToSave = new HashSet<>();
81 ResultSet rs
= partitioner
.getResultSet();
84 int idRegion
= rs
.getInt("IdRegion");
85 String nombreRegion
= rs
.getString("NombreRegion");
86 String clave
= rs
.getString("ClaveRegion");
87 String abbrev
= rs
.getString("Abreviado");
89 NamedArea area
= state
.getAreaMap().get(idRegion
);
91 logger
.warn("Area not found: " + idRegion
+ " " + nombreRegion
);
92 }else if (!area
.getLabel().toLowerCase().equals(nombreRegion
.toLowerCase())) {
93 logger
.warn("Area does not match: " + idRegion
+ " " + nombreRegion
+ " " + area
.getLabel());
95 area
.getRepresentations().iterator().next().setAbbreviatedLabel(abbrev
);
100 // NamedArea area = NamedArea.NewInstance(nombreRegion, nombreRegion, abbrev, Language.SPANISH_CASTILIAN());
101 // area.setIdInVocabulary(clave);
102 // voc.addTerm(area);
103 // state.getAreaMap().put(idRegion, area);
104 // state.getAreaLabelMap().put(nombreRegion, area);
106 partitioner
.startDoSave();
107 // areasToSave.add(area);
108 } catch (Exception e
) {
109 logger
.warn("An exception (" +e
.getMessage()+") occurred when trying to create region for id " + idRegion
+ ".");
113 } catch (Exception e
) {
114 logger
.error("SQLException:" + e
);
118 // getTermService().save(areasToSave);
122 private OrderedTermVocabulary
<NamedArea
> stateAreasVoc
;
124 @SuppressWarnings("unchecked")
125 private void initAreaVocabulary(MexicoEfloraImportState state
) {
126 if (stateAreasVoc
== null){
127 stateAreasVoc
= (OrderedTermVocabulary
<NamedArea
>)this.getVocabularyService().find(MexicoConabioTransformer
.uuidMexicanStatesVoc
);
128 if (stateAreasVoc
== null){
129 createStateAreasVoc(state
);
134 private NamedArea mexico
;
135 private int idInSource
= 4;
136 private void createStateAreasVoc(MexicoEfloraImportState state
) {
138 URI termSourceUri
= null;
139 String label
= "Mexican States";
140 String description
= "Mexican States as used by the CONABIO database";
141 stateAreasVoc
= OrderedTermVocabulary
.NewOrderedInstance(TermType
.NamedArea
, NamedArea
.class,
142 description
, label
, null, termSourceUri
);
143 stateAreasVoc
.setUuid(MexicoConabioTransformer
.uuidMexicanStatesVoc
);
144 Representation rep
= Representation
.NewInstance("Estados Méxicanos", "Estados Méxicanos", null, Language
.SPANISH_CASTILIAN());
145 stateAreasVoc
.addRepresentation(rep
);
148 String mexicoLabel
= "México (Country)";
149 mexico
= NamedArea
.NewInstance(
150 mexicoLabel
, mexicoLabel
, null);
151 mexico
.setUuid(MexicoConabioTransformer
.uuidMexicoCountry
);
152 stateAreasVoc
.addTerm(mexico
);
153 mexico
.setIdInVocabulary("2");
154 state
.getAreaMap().put(2, mexico
);
155 addMapping(mexico
, "mex_adm0", "iso", "MEX");
157 addArea(state
, "Aguascalientes", MexicoConabioTransformer
.uuidAguascalientes
);
158 addArea(state
, "Baja California", MexicoConabioTransformer
.uuidBaja_california
);
159 addArea(state
, "Baja California Sur", MexicoConabioTransformer
.uuidBaja_california_sur
);
160 addArea(state
, "Campeche", MexicoConabioTransformer
.uuidCampeche
);
161 addArea(state
, "Coahuila de Zaragoza", MexicoConabioTransformer
.uuidCoahuila_de_zaragoza
, "Coahuila");
162 addArea(state
, "Colima", MexicoConabioTransformer
.uuidColima
);
163 addArea(state
, "Chiapas", MexicoConabioTransformer
.uuidChiapas
);
164 addArea(state
, "Chihuahua", MexicoConabioTransformer
.uuidChihuahua
);
165 addArea(state
, "Distrito Federal", MexicoConabioTransformer
.uuidDistrito_federal
);
166 addArea(state
, "Durango", MexicoConabioTransformer
.uuidDurango
);
167 addArea(state
, "Guanajuato", MexicoConabioTransformer
.uuidGuanajuato
);
168 addArea(state
, "Guerrero", MexicoConabioTransformer
.uuidGuerrero
);
169 addArea(state
, "Hidalgo", MexicoConabioTransformer
.uuidHidalgo
);
170 addArea(state
, "Jalisco", MexicoConabioTransformer
.uuidJalisco
);
172 addArea(state
, "México", MexicoConabioTransformer
.uuidMexico
, null, 15);
174 addArea(state
, "Michoacán de Ocampo", MexicoConabioTransformer
.uuidMichoacan_de_ocampo
, "Michoacán", 16);
175 addArea(state
, "Morelos", MexicoConabioTransformer
.uuidMorelos
);
176 addArea(state
, "Nayarit", MexicoConabioTransformer
.uuidNayarit
);
177 //gibt beim mapping vielleicht Probleme wg. des Accents
179 addArea(state
, "Nuevo León", MexicoConabioTransformer
.uuidNuevo_leon
, "Nuevo León", 19);
180 addArea(state
, "Oaxaca", MexicoConabioTransformer
.uuidOaxaca
);
181 addArea(state
, "Puebla", MexicoConabioTransformer
.uuidPuebla
);
183 addArea(state
, "Querétaro de Arteaga", MexicoConabioTransformer
.uuidQueretaro_de_arteaga
, "Querétaro", 22);
184 addArea(state
, "Quintana Roo", MexicoConabioTransformer
.uuidQuintana_roo
);
186 addArea(state
, "San Luis Potosí", MexicoConabioTransformer
.uuidSan_luis_potosi
,null ,24);
187 addArea(state
, "Sinaloa", MexicoConabioTransformer
.uuidSinaloa
);
188 addArea(state
, "Sonora", MexicoConabioTransformer
.uuidSonora
);
189 addArea(state
, "Tabasco", MexicoConabioTransformer
.uuidTabasco
);
190 addArea(state
, "Tamaulipas", MexicoConabioTransformer
.uuidTamaulipas
);
191 addArea(state
, "Tlaxcala", MexicoConabioTransformer
.uuidTlaxcala
);
192 addArea(state
, "Veracruz de Ignacio de la Llave", MexicoConabioTransformer
.uuidVeracruz_de_ignacio_de_la_llave
, "Veracruz");
194 addArea(state
, "Yucatán", MexicoConabioTransformer
.uuidYucatan
, null, 31);
195 addArea(state
, "Zacatecas", MexicoConabioTransformer
.uuidZacatecas
);
197 this.getVocabularyService().save(stateAreasVoc
);
203 private void addArea(MexicoEfloraImportState state
, String areaLabel
, UUID uuid
) {
204 addArea(state
, areaLabel
, uuid
, areaLabel
); //short cut if label and mapping label are equal
207 private void addArea(MexicoEfloraImportState state
, String areaLabel
, UUID uuid
, String mappingLabel
) {
208 addArea(state
, areaLabel
, uuid
, mappingLabel
, null); //short cut if label and mapping label are equal
211 private void addArea(MexicoEfloraImportState state
, String areaLabel
, UUID uuid
,
212 String mappingLabel
, Integer id1
) {
214 String abbrev
= null;
215 NamedArea newArea
= NamedArea
.NewInstance(
216 areaLabel
, areaLabel
, abbrev
, Language
.SPANISH_CASTILIAN());
217 newArea
.setUuid(uuid
);
218 newArea
.setPartOf(mexico
);
219 newArea
.setLevel(NamedAreaLevel
.STATE());
220 newArea
.setType(NamedAreaType
.ADMINISTRATION_AREA());
221 stateAreasVoc
.addTerm(newArea
);
223 addMapping(newArea
, "mex_adm1", "id_1", String
.valueOf(id1
));
224 }else if (mappingLabel
!= null){
225 addMapping(newArea
, "mex_adm1", "name_1", mappingLabel
);
228 newArea
.setIdInVocabulary(String
.valueOf(idInSource
));
229 state
.getAreaMap().put(idInSource
++, newArea
);
230 state
.getAreaLabelMap().put(areaLabel
.toLowerCase(), newArea
);
233 private void addMapping(NamedArea area
, String mapping_layer
, String mapping_field
, String abbrev
) {
234 GeoServiceAreaAnnotatedMapping mapping
= (GeoServiceAreaAnnotatedMapping
)this.getBean("geoServiceAreaAnnotatedMapping");
235 GeoServiceArea geoServiceArea
= new GeoServiceArea();
236 geoServiceArea
.add(mapping_layer
, mapping_field
, abbrev
);
237 mapping
.set(area
, geoServiceArea
);
243 public Map
<Object
, Map
<String
, ?
extends CdmBase
>> getRelatedObjectsForPartition(ResultSet rs
, MexicoEfloraImportState state
) {
245 Map
<Object
, Map
<String
, ?
extends CdmBase
>> result
= new HashMap
<>();
250 protected String
getTableName() {
255 public String
getPluralString() {
260 protected boolean doCheck(MexicoEfloraImportState state
){
265 protected boolean isIgnore(MexicoEfloraImportState state
){
266 return ! state
.getConfig().isDoTaxa();