*/
package eu.etaxonomy.cdm.io.mexico;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Map;
-
+import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
-import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState;
import eu.etaxonomy.cdm.io.common.DbImportBase;
import eu.etaxonomy.cdm.io.common.ICdmIO;
import eu.etaxonomy.cdm.io.common.IPartitionedIO;
-import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.reference.ISourceable;
+import eu.etaxonomy.cdm.io.common.TdwgAreaProvider;
+import eu.etaxonomy.cdm.model.location.Country;
+import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
+import eu.etaxonomy.cdm.model.location.NamedAreaType;
import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
/**
* @author a.mueller
return result;
}
- //can be overriden
- protected String getIdInSource(MexicoEfloraImportState state, ResultSet rs) throws SQLException {
- return null;
+ protected Reference sourceReference;
+ protected Reference getSourceReference(Reference sourceReference) {
+ if (this.sourceReference != null) {
+ return this.sourceReference;
+ }
+ Reference persistentSourceReference = getReferenceService().find(sourceReference.getUuid()); //just to be sure
+ if (persistentSourceReference != null){
+ sourceReference = persistentSourceReference;
+ }
+ this.sourceReference = sourceReference;
+ return sourceReference;
}
+ protected NamedArea getArea(MexicoEfloraImportState state, Integer idRegion,
+ String estadoStr, String paisStr, String abbrev, Integer idTipoRegion) {
- protected Taxon getTaxon(BerlinModelImportState state, int taxonId, Map<String, TaxonBase> taxonMap, int factId) {
- TaxonBase<?> taxonBase = taxonMap.get(String.valueOf(taxonId));
-
- //TODO for testing
-// if (taxonBase == null && ! state.getConfig().isDoTaxa()){
-// taxonBase = Taxon.NewInstance(TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES()), null);
-// }
-
- Taxon taxon;
- if ( taxonBase instanceof Taxon ) {
- taxon = (Taxon) taxonBase;
- } else if (taxonBase != null) {
- logger.warn("TaxonBase (" + taxonId + ") for Fact(Specimen) with factId " + factId + " was not of type Taxon but: " + taxonBase.getClass().getSimpleName());
- return null;
- } else {
- logger.warn("TaxonBase (" + taxonId + ") for Fact(Specimen) with factId " + factId + " is null.");
- return null;
- }
- return taxon;
- }
+ NamedArea areaById = state.getAreaMap().get(idRegion);
+ if (areaIsMexicoCountry(idRegion, estadoStr, paisStr)) {
+ return areaById;
+ }
+ String label = isNotBlank(estadoStr) ? estadoStr : paisStr;
+ String labelKey = label.toLowerCase();
+ NamedArea areaByLabel = state.getAreaLabelMap().get(labelKey) ;
+ NamedArea result;
+ if (areaById != null && areaByLabel != null && !areaById.equals(areaByLabel)){
+ logger.warn("Area by label and area by id differs: " + areaById + "<->" + label);
+ }
+ result = areaById == null? areaByLabel : areaById;
- /**
- * Searches first in the detail maps then in the ref maps for a reference.
- * Returns the reference as soon as it finds it in one of the map, according
- * to the order of the map.
- * If nomRefDetailFk is <code>null</code> no search on detail maps is performed.
- * If one of the maps is <code>null</code> no search on the according map is
- * performed. <BR>
- * You may define the order of search by the order you pass the maps but
- * make sure to always pass the detail maps first.
- * @param firstDetailMap
- * @param secondDetailMap
- * @param firstRefMap
- * @param secondRefMap
- * @param nomRefDetailFk
- * @param nomRefFk
- * @return
- */
- protected Reference getReferenceFromMaps(
- Map<String, Reference> detailMap,
- Map<String, Reference> refMap,
- String nomRefDetailFk,
- String nomRefFk) {
- Reference ref = null;
- if (detailMap != null){
- ref = detailMap.get(nomRefDetailFk);
- }
- if (ref == null){
- ref = refMap.get(nomRefFk);
- }
- return ref;
- }
+ if (result == null) {
+ result = getNewCountry(state, label);
+ }
- protected Reference getSourceReference(Reference sourceReference) {
- Reference persistentSourceReference = getReferenceService().find(sourceReference.getUuid()); //just to be sure
- if (persistentSourceReference != null){
- sourceReference = persistentSourceReference;
+ if (result == null && !"ND".equalsIgnoreCase(label)) { //ND = no data
+ logger.warn("Area not found, create new one: " + idRegion + "; " + label);
+ NamedAreaLevel level = idTipoRegion != null && idTipoRegion.equals(1)? NamedAreaLevel.COUNTRY() : null;
+ NamedAreaType areaType = NamedAreaType.ADMINISTRATION_AREA();
+ NamedArea namedArea = this.getNamedArea(state, null, label, label, abbrev, areaType, level, null, null);
+ state.getAreaLabelMap().put(labelKey, namedArea);
}
- return sourceReference;
+ return result;
}
- protected static <T extends IdentifiableSource> boolean importSourceExists(ISourceable<T> sourceable, String idInSource,
- String namespace, Reference ref) {
- for (T source : sourceable.getSources()){
- if (CdmUtils.nullSafeEqual(namespace, source.getIdNamespace()) &&
- CdmUtils.nullSafeEqual(idInSource, source.getIdInSource()) &&
- CdmUtils.nullSafeEqual(ref, source.getCitation())){
- return true;
- }
+ private NamedArea getNewCountry(@SuppressWarnings("unused") MexicoEfloraImportState state, String label) {
+ if (StringUtils.isBlank(label)) {
+ return null;
+ }else if (label.equalsIgnoreCase("CANADÁ")) {return Country.CANADA();
+ }else if (label.equalsIgnoreCase("ESTADOS UNIDOS DE AMÉRICA")) {return Country.UNITEDSTATESOFAMERICA();
+ }else if (label.equalsIgnoreCase("HONDURAS")) {return Country.HONDURASREPUBLICOF();
+ }else if (label.equalsIgnoreCase("BELICE")) {return Country.BELIZE();
+ }else if (label.equalsIgnoreCase("EL SALVADOR")) {return Country.ELSALVADORREPUBLICOF();
+ }else if (label.equalsIgnoreCase("PANAMÁ")) {return Country.PANAMAREPUBLICOF();
+ }else if (label.equalsIgnoreCase("GUATEMALA")) {return Country.GUATEMALAREPUBLICOF();
+ }else if (label.equalsIgnoreCase("NICARAGUA")) {return Country.NICARAGUAREPUBLICOF();
+ }else if (label.equalsIgnoreCase("ECUADOR")) {return Country.ECUADORREPUBLICOF();
+ }else if (label.equalsIgnoreCase("PERÚ")) {return Country.PERUREPUBLICOF();
+ }else if (label.equalsIgnoreCase("COSTA RICA")) {return Country.COSTARICAREPUBLICOF();
+ }else if (label.equalsIgnoreCase("COLOMBIA")) {return Country.COLOMBIAREPUBLICOF();
+ }else if (label.equalsIgnoreCase("CUBA")) {return Country.CUBAREPUBLICOF();
+ }else if (label.equalsIgnoreCase("CHILE")) {return Country.CHILEREPUBLICOF();
+ }else if (label.equalsIgnoreCase("BOLIVIA")) {return Country.BOLIVIAREPUBLICOF();
+ }else if (label.equalsIgnoreCase("URUGUAY")) {return Country.URUGUAYEASTERNREPUBLICOF();
+ }else if (label.equalsIgnoreCase("PARAGUAY")) {return Country.PARAGUAYREPUBLICOF();
+ }else if (label.equalsIgnoreCase("VENEZUELA")) {return Country.VENEZUELABOLIVARIANREPUBLICOF();
+ }else if (label.equalsIgnoreCase("BAHAMAS")) {return Country.BAHAMASCOMMONWEALTHOFTHE();
+ }else if (label.equalsIgnoreCase("BRASIL")) {return Country.BRAZILFEDERATIVEREPUBLICOF();
+ }else if (label.equalsIgnoreCase("GRANADA")) {return Country.GRENADA();
+ }else if (label.equalsIgnoreCase("TRINIDAD Y TOBAGO")) {return Country.TRINIDADANDTOBAGOREPUBLICOF();
+ }else if (label.equalsIgnoreCase("GUYANA")) {return Country.GUYANAREPUBLICOF();
+ }else if (label.equalsIgnoreCase("COSTA DE MARFIL")) {return Country.COTEDIVOIREIVORYCOASTREPUBLICOFTHE();
+ }else if (label.equalsIgnoreCase("JAMAICA")) {return Country.JAMAICA();
+ }else if (label.equalsIgnoreCase("PUERTO RICO")) {return Country.PUERTORICO();
+ }else if (label.equalsIgnoreCase("ITALIA")) {return Country.ITALYITALIANREPUBLIC();
+ }else if (label.equalsIgnoreCase("FRANCIA")) {return Country.FRANCE();
+ }else if (label.equalsIgnoreCase("ESPAÑA")) {return Country.SPAINSPANISHSTATE();
+ }else if (label.equalsIgnoreCase("PORTUGAL")) {return Country.PORTUGALPORTUGUESEREPUBLIC();
+ }else if (label.equalsIgnoreCase("FILIPINAS")) {return Country.PHILIPPINESREPUBLICOFTHE();
+ }else if (label.equalsIgnoreCase("INDIA")) {return Country.INDIAREPUBLICOF();
+ }else if (label.equalsIgnoreCase("ALASKA")) {return TdwgAreaProvider.getAreaByTdwgAbbreviation("ASK");
+ }else if (label.equalsIgnoreCase("AUSTRALIA")) {return Country.AUSTRALIACOMMONWEALTHOF();
+ }else if (label.equalsIgnoreCase("REPÚBLICA DOMINICANA")) {return Country.DOMINICANREPUBLIC();
+ }else if (label.equalsIgnoreCase("HAITÍ")) {return Country.HAITIREPUBLICOF();
+ }else if (label.equalsIgnoreCase("CHINA")) {return Country.CHINAPEOPLESREPUBLICOF();
+ }else if (label.equalsIgnoreCase("SUDÁFRICA")) {return Country.SOUTHAFRICAREPUBLICOF();
+ }else if (label.equalsIgnoreCase("MADAGASCAR")) {return Country.MADAGASCARREPUBLICOF();
+ }else if (label.equalsIgnoreCase("NAMIBIA")) {return Country.NAMIBIA();
+ }else if (label.equalsIgnoreCase("ETIOPÍA")) {return Country.ETHIOPIA();
+ }else if (label.equalsIgnoreCase("ANGOLA")) {return Country.ANGOLAREPUBLICOF();
+ }else if (label.equalsIgnoreCase("TAILANDIA")) {return Country.THAILANDKINGDOMOF();
+ }else if (label.equalsIgnoreCase("TANZANIA")) {return Country.TANZANIAUNITEDREPUBLICOF();
+ }else if (label.equalsIgnoreCase("ARGENTINA")) {return Country.ARGENTINAARGENTINEREPUBLIC();
+ }else if (label.equalsIgnoreCase("SURINAM")) {return Country.SURINAMEREPUBLICOF();
+ }else if (label.equalsIgnoreCase("INGLATERRA")) {return Country.UNITEDKINGDOMOFGREATBRITAINANDNORTHERNIRELAND();
}
- return false;
+ return null;
+ }
+
+ private boolean areaIsMexicoCountry(Integer idRegion, String estadoStr,
+ String paisStr) {
+ return idRegion == 2 && isBlank(estadoStr) &&
+ "MÉXICO".equalsIgnoreCase(paisStr);
}
}
\ No newline at end of file