merged FaunaEu transformer
authorU-BGBM\k.luther <k.luther@BGBM-PESIHPC.bgbm.fu-berlin.de>
Fri, 27 Nov 2015 16:41:15 +0000 (17:41 +0100)
committerU-BGBM\k.luther <k.luther@BGBM-PESIHPC.bgbm.fu-berlin.de>
Fri, 27 Nov 2015 16:41:15 +0000 (17:41 +0100)
1  2 
cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/faunaEuropaea/FaunaEuropaeaTransformer.java

index 4e5376f87527b875569df6c5dc803d85484085db,6614fb3e1c267d2866603541c075084785e2d6b1..6c7fc44375c45b64cd2a816790931de9ba39a6b0
 -/**
 -* Copyright (C) 2007 EDIT
 -* European Distributed Institute of Taxonomy
 -* http://www.e-taxonomy.eu
 -*
 -* The contents of this file are subject to the Mozilla Public License Version 1.1
 -* See LICENSE.TXT at the top of this package for the full license terms.
 -*/
 -
 -package eu.etaxonomy.cdm.io.pesi.faunaEuropaea;
 -
 -import java.sql.ResultSet;
 -import java.sql.SQLException;
 -import java.util.HashMap;
 -import java.util.UUID;
 -
 -import org.apache.log4j.Logger;
 -
 -import eu.etaxonomy.cdm.api.service.ITermService;
 -import eu.etaxonomy.cdm.io.common.TdwgAreaProvider;
 -import eu.etaxonomy.cdm.model.common.DefinedTerm;
 -import eu.etaxonomy.cdm.model.common.Language;
 -import eu.etaxonomy.cdm.model.common.Representation;
 -import eu.etaxonomy.cdm.model.common.TermType;
 -import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 -import eu.etaxonomy.cdm.model.location.NamedArea;
 -import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 -import eu.etaxonomy.cdm.model.name.Rank;
 -import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;
 -
 -/**
 - * @author a.babadshanjan
 - * @created 12.05.2009
 - * @version 1.0
 - */
 -
 -public final class FaunaEuropaeaTransformer {
 -      private static final Logger logger = Logger.getLogger(FaunaEuropaeaTransformer.class);
 -
 -      // Query
 -      public static final int Q_NO_RESTRICTION = -1;
 -
 -      // TaxonStatus
 -      public static final int T_STATUS_ACCEPTED = 1;
 -      public static final int T_STATUS_NOT_ACCEPTED = 0;
 -
 -      // Author
 -      public static final int A_AUCT = 1;
 -      public static final String A_AUCTNAME = "auct.";
 -
 -      // Parenthesis
 -      public static final int P_PARENTHESIS = 1;
 -
 -      // User
 -
 -      public static final int U_ACTIVE = 1;
 -
 -      //new AbsencePresenceTermUUIDs
 -
 -      public static UUID noData;
 -      //public static UUID doubtfull_present;
 -
 -      // Rank
 -      public static final int R_KINGDOM = 1;
 -      public static final int R_SUBKINGDOM = 2;
 -      public static final int R_SUPERPHYLUM = 3;
 -      public static final int R_PHYLUM = 4;
 -      public static final int R_SUBPHYLUM = 5;
 -      public static final int R_INFRAPHYLUM = 6;
 -      public static final int R_CLASS = 7;
 -      public static final int R_SUBCLASS = 8;
 -      public static final int R_INFRACLASS = 9;
 -      public static final int R_SUPERORDER = 10;
 -      public static final int R_ORDER = 11;
 -      public static final int R_SUBORDER = 12;
 -      public static final int R_INFRAORDER = 13;
 -      public static final int R_SUPERFAMILY = 14;
 -      public static final int R_FAMILY = 15;
 -      public static final int R_SUBFAMILY = 16;
 -      public static final int R_TRIBE = 17;
 -      public static final int R_SUBTRIBE = 18;
 -      public static final int R_GENUS = 19;
 -      public static final int R_SUBGENUS = 20;
 -      public static final int R_SPECIES = 21;
 -      public static final int R_SUBSPECIES = 22;
 -
 -      public static PresenceAbsenceTerm occStatus2PresenceAbsence(int occStatusId)  throws UnknownCdmTypeException{
 -
 -              if (Integer.valueOf(occStatusId) == null) {
 -                      return PresenceAbsenceTerm.PRESENT();
 -              }
 -              switch (occStatusId){
 -              case 0: return PresenceAbsenceTerm.PRESENT();
 -              case 2: return PresenceAbsenceTerm.ABSENT();
 -              case 1: return PresenceAbsenceTerm.PRESENT_DOUBTFULLY();
 -
 -              default: {
 -
 -                      return null;
 -
 -
 -              }
 -
 -      }
 -      }
 -      public static void setUUIDs(UUID uuid){
 -              noData = uuid;
 -              //doubtfull_present = uuids.get("doubtfullPresent");
 -
 -      }
 -
 -      public static PresenceAbsenceTerm occStatus2PresenceAbsence_ (int occStatusId)  throws UnknownCdmTypeException{
 -              switch (occStatusId){
 -                      case 0: return null;
 -                      //case 110: return AbsenceTerm.CULTIVATED_REPORTED_IN_ERROR();
 -                      case 120: return PresenceAbsenceTerm.CULTIVATED();
 -              //      case 210: return AbsenceTerm.INTRODUCED_REPORTED_IN_ERROR();
 -                      case 220: return PresenceAbsenceTerm.INTRODUCED_PRESENCE_QUESTIONABLE();
 -                      case 230: return PresenceAbsenceTerm.INTRODUCED_FORMERLY_INTRODUCED();
 -                      case 240: return PresenceAbsenceTerm.INTRODUCED_DOUBTFULLY_INTRODUCED();
 -                      case 250: return PresenceAbsenceTerm.INTRODUCED();
 -                      case 260: return PresenceAbsenceTerm.INTRODUCED_UNCERTAIN_DEGREE_OF_NATURALISATION();
 -                      case 270: return PresenceAbsenceTerm.INTRODUCED_ADVENTITIOUS();
 -                      case 280: return PresenceAbsenceTerm.INTRODUCED_NATURALIZED();
 -                      //case 310: return AbsenceTerm.NATIVE_REPORTED_IN_ERROR();
 -                      case 320: return PresenceAbsenceTerm.NATIVE_PRESENCE_QUESTIONABLE();
 -                      case 330: return PresenceAbsenceTerm.NATIVE_FORMERLY_NATIVE();
 -                      case 340: return PresenceAbsenceTerm.NATIVE_DOUBTFULLY_NATIVE();
 -                      case 350: return PresenceAbsenceTerm.NATIVE();
 -                      case 999: {
 -                                      logger.warn("endemic for EM can not be transformed in legal status");
 -                                      //TODO preliminary
 -                                      return PresenceAbsenceTerm.PRESENT();
 -                              }
 -                      default: {
 -                              throw new UnknownCdmTypeException("Unknown occurrence status  (id=" + Integer.valueOf(occStatusId).toString() + ")");
 -                      }
 -              }
 -      }
 -
 -
 -      public static Rank rankId2Rank (ResultSet rs, boolean useUnknown) throws UnknownCdmTypeException {
 -              Rank result;
 -              try {
 -                      int rankId = rs.getInt("rnk_id");
 -                      int parentRankId = rs.getInt("rnk_rnk_id");
 -                      String rankName = rs.getString("rnk_name");
 -                      String rankLatinName = rs.getString("rnk_latinname");
 -                      int rankCategory = rs.getInt("rnk_category");
 -
 -                      if (logger.isDebugEnabled()) {
 -                              logger.debug(rankId + ", " + parentRankId + ", " + rankName + ", " + rankCategory);
 -                      }
 -
 -                      try {
 -                              result = Rank.getRankByNameOrIdInVoc(rankName);
 -                      } catch (UnknownCdmTypeException e1) {
 -
 -                              switch (rankId) {
 -                              case 0: return null;
 -                              case R_KINGDOM: return Rank.KINGDOM();
 -                              case R_SUBKINGDOM: return Rank.SUBKINGDOM();
 -                              case R_SUPERPHYLUM: return Rank.SUPERPHYLUM();
 -                              case R_PHYLUM: return Rank.PHYLUM();
 -                              case R_SUBPHYLUM: return Rank.SUBPHYLUM();
 -                              case R_INFRAPHYLUM: return Rank.INFRAPHYLUM();
 -                              case R_CLASS: return Rank.CLASS();
 -                              case R_SUBCLASS: return Rank.SUBCLASS();
 -                              case R_INFRACLASS: return Rank.INFRACLASS();
 -                              case R_SUPERORDER: return Rank.SUPERORDER();
 -                              case R_ORDER: return Rank.ORDER();
 -                              case R_SUBORDER: return Rank.SUBORDER();
 -                              case R_INFRAORDER: return Rank.INFRAORDER();
 -                              case R_SUPERFAMILY: return Rank.SUPERFAMILY();
 -                              case R_FAMILY: return Rank.FAMILY();
 -                              case R_SUBFAMILY: return Rank.SUBFAMILY();
 -                              case R_TRIBE: return Rank.TRIBE();
 -                              case R_SUBTRIBE: return Rank.SUBTRIBE();
 -                              case R_GENUS: return Rank.GENUS();
 -                              case R_SUBGENUS: return Rank.SUBGENUS();
 -                              case R_SPECIES: return Rank.SPECIES();
 -                              case R_SUBSPECIES: return Rank.SUBSPECIES();
 -
 -                              default: {
 -                                      if (useUnknown){
 -                                              logger.error("Rank unknown. Created UNKNOWN_RANK");
 -                                              return Rank.UNKNOWN_RANK();
 -                                      }
 -                                      throw new UnknownCdmTypeException("Unknown Rank id" + Integer.valueOf(rankId).toString());
 -                              }
 -                              }
 -                      }
 -                      return result;
 -              } catch (SQLException e) {
 -                      e.printStackTrace();
 -                      logger.warn("Exception occurred. Created UNKNOWN_RANK instead");
 -                      return Rank.UNKNOWN_RANK();
 -              }
 -      }
 -
 -
 -      public static NamedArea areaId2TdwgArea (FaunaEuropaeaDistribution fauEuDistribution)
 -      throws UnknownCdmTypeException {
 -
 -              NamedArea tdwgArea = null;
 -
 -              try {
 -                      int areaId = fauEuDistribution.getAreaId();
 -                      String areaName = fauEuDistribution.getAreaName();
 -                      String areaCode = fauEuDistribution.getAreaCode();
 -                      int extraLimital = fauEuDistribution.getExtraLimital();
 -
 -                      //TODO: Verify mappings with comments. Those don't map to TDWG areas.
 -
 -                      if (areaCode.equals("AD")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SPA-AN");
 -            } else if (areaCode.equals("AL")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ALB-OO");
 -            } else if (areaCode.equals("AT")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("AUT-AU");
 -            } else if (areaCode.equals("AUS")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("AUS"); // Australian region - Australia
 -            } else if (areaCode.equals("BA")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("YUG-BH");
 -            } else if (areaCode.equals("BE")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BGM-BE");
 -            } else if (areaCode.equals("BG")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BUL-OO");
 -            } else if (areaCode.equals("BY")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BLR-OO");
 -            } else if (areaCode.equals("CH")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SWI-OO");
 -            } else if (areaCode.equals("CY")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("CYP-OO");
 -            } else if (areaCode.equals("CZ")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("CZE-CZ");
 -            } else if (areaCode.equals("DE")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("GER-OO");
 -            } else if (areaCode.equals("DK-DEN")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("DEN-OO");
 -            } else if (areaCode.equals("DK-FOR")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("FOR-OO");
 -            } else if (areaCode.equals("EE")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BLT-ES");
 -            } else if (areaCode.equals("ES-BAL")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BAL-OO");
 -            } else if (areaCode.equals("ES-CNY")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("CNY-OO");
 -            } else if (areaCode.equals("ES-SPA")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SPA-SP");
 -            } else if (areaCode.equals("FI")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("FIN-OO");
 -            } else if (areaCode.equals("FR-COR")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("COR-OO");
 -            } else if (areaCode.equals("FR-FRA")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("FRA-FR");
 -            } else if (areaCode.equals("GB-CI")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("FRA-CI");
 -            } else if (areaCode.equals("GB-GI")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SPA-GI");
 -            } else if (areaCode.equals("GB-GRB")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("GRB-OO");
 -            } else if (areaCode.equals("GB-NI")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("IRE-NI");
 -            } else if (areaCode.equals("GR-GRC")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("GRC-OO");
 -            } else if (areaCode.equals("HR")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("YUG-CR");
 -            } else if (areaCode.equals("HU")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("HUN-OO");
 -            } else if (areaCode.equals("IE")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("IRE-IR");
 -            } else if (areaCode.equals("IS")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ICE-OO");
 -            } else if (areaCode.equals("IT-ITA")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ITA-IT");
 -            } else if (areaCode.equals("IT-SAR")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SAR-OO");
 -            } else if (areaCode.equals("IT-SI")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SIC-SI");
 -            } else if (areaCode.equals("LI")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("AUT-LI");
 -            } else if (areaCode.equals("LT")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BLT-LI");
 -            } else if (areaCode.equals("LU")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BGM-LU");
 -            } else if (areaCode.equals("LV")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BLT-LA");
 -            } else if (areaCode.equals("MC")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("FRA-MO");
 -            } else if (areaCode.equals("MD")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("UKR-MO");
 -            } else if (areaCode.equals("MK")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("YUG-MA");
 -            } else if (areaCode.equals("MT")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SIC-MA");
 -            } else if (areaCode.equals("NL")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("NET-OO");
 -            } else if (areaCode.equals("NO-NOR")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("NOR-OO");
 -            } else if (areaCode.equals("NO-SVA")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SVA-OO");
 -            } else if (areaCode.equals("PL")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("POL-OO");
 -            } else if (areaCode.equals("PT-AZO")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("AZO-OO");
 -            } else if (areaCode.equals("PT-MDR")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("MDR-OO");
 -            } else if (areaCode.equals("PT-POR")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("POR-OO");
 -            } else if (areaCode.equals("PT-SEL")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SEL-OO");
 -            } else if (areaCode.equals("RO")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ROM-OO");
 -            } else if (areaCode.equals("RU-KGD")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BLT-KA");
 -            } else if (areaCode.equals("RU-RUC")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("RUC-OO");
 -            } else if (areaCode.equals("RU-RUE")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("RUE-OO");
 -            } else if (areaCode.equals("RU-RUN")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("RUN-OO");
 -            } else if (areaCode.equals("RU-RUS")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("RUS-OO");
 -            } else if (areaCode.equals("RU-RUW")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("RUW-OO");
 -            } else if (areaCode.equals("SE")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SWE-OO");
 -            } else if (areaCode.equals("SI")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("YUG-SL");
 -            } else if (areaCode.equals("SK")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("CZE-SK");
 -            } else if (areaCode.equals("SM")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ITA-SM");
 -            } else if (areaCode.equals("TR-TUE")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("TUE-OO");
 -                //else if (areaCode.equals("UA")) tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("UKR-UK"); //UKraine including Crimea
 -            } else if (areaCode.equals("VA")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ITA-VC");
 -            } else if (areaCode.equals("YU")) {
 -                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("YUG");
 -            } else {
 -                throw new UnknownCdmTypeException("Unknown Area " + areaCode);
 -            }
 -
 -                      if (logger.isDebugEnabled()) {
 -                              logger.debug(areaId + ", " + areaName + ", " + areaCode + ", " + extraLimital);
 -                      }
 -
 -              } catch (Exception e) {
 -                      //e.printStackTrace();
 -                      logger.debug("Exception occurred. Area could not be mapped." + fauEuDistribution.getAreaName());
 -                      return null;
 -              }
 -
 -              return tdwgArea;
 -      }
 -
 -      public static UUID uuidAreaAUS = UUID.fromString("cf979ca8-8cb6-42df-b2ce-1f432ec7c26b");
 -      public static UUID uuidAreaAFR = UUID.fromString("07ac5e75-9fc9-4aa0-938c-1324c9618b97");
 -      public static UUID uuidAreaEPA = UUID.fromString("e83446d7-7379-4beb-be05-295f8da6f5ae");
 -      public static UUID uuidAreaGR_AEG = UUID.fromString("6bd422aa-9911-4b80-8595-0f6d1ecd5eee");
 -      public static UUID uuidAreaGR_CYC = UUID.fromString("8e7d7f1e-3e4d-4f7c-96ec-93ec91e528d6");
 -      public static UUID uuidAreaGR_DOD = UUID.fromString("6d6f6842-924e-440b-9e7e-3df1922bf4a6");
 -      public static UUID uuidAreaNAF = UUID.fromString("d2c54b1e-5f9f-455d-b308-6859cb153c7b");
 -      public static UUID uuidAreaNEA = UUID.fromString("aa87f6b8-110b-44b5-a329-91a08f1a4cc9");
 -      public static UUID uuidAreaNEO = UUID.fromString("0e6e0ce9-c6ab-46bc-80b9-aee4a0620e78");
 -      public static UUID uuidAreaNRE = UUID.fromString("d51876c2-eaf6-4c7f-963e-337dd3e0d729");
 -      public static UUID uuidAreaORR = UUID.fromString("04cab4f8-b316-4e21-9bcc-236a45e4e83d");
 -      public static UUID uuidAreaGR_CR = UUID.fromString("2ef9fa6c-7c3f-431a-96c9-5980c55fc440");
 -      public static UUID uuidAreaGR_GRC = UUID.fromString("b5d33c78-91e7-467a-9c2d-6c337b78d31a");
 -      public static UUID uuidAreaUA = UUID.fromString("859cf055-a208-4f30-8e6e-361f165c6fa9");
 -      public static UUID uuidAreaRU_FJL = UUID.fromString("84671068-2f18-40cb-933a-e7e1c0e37cc8");
 -      public static UUID uuidAreaRU_NOZ = UUID.fromString("64cce0aa-0222-4740-8fa2-dbf0330e9266");
 -
 -
 -      public final static HashMap<String, UUID> abbrToUUID = new HashMap<String,UUID>();
 -              static
 -              {
 -                      abbrToUUID.put("AUS", uuidAreaAUS);
 -                      abbrToUUID.put("AFR", uuidAreaAFR);
 -                      abbrToUUID.put("EPA", uuidAreaEPA);
 -                      abbrToUUID.put("GR-AEG", uuidAreaGR_AEG);
 -                      abbrToUUID.put("GR-CYC", uuidAreaGR_CYC);
 -                      abbrToUUID.put("GR-DOD", uuidAreaGR_DOD);
 -                      abbrToUUID.put("NAF", uuidAreaNAF);
 -                      abbrToUUID.put("NEA", uuidAreaNEA);
 -                      abbrToUUID.put("NEO", uuidAreaNEO);
 -                      abbrToUUID.put("NRE", uuidAreaNRE);
 -                      abbrToUUID.put("ORR", uuidAreaORR);
 -                      abbrToUUID.put("GR-KRI", uuidAreaGR_CR);
 -                      abbrToUUID.put("GR-GRC", uuidAreaGR_GRC);
 -                      abbrToUUID.put("UA", uuidAreaUA);
 -                      abbrToUUID.put("RU-FJL", uuidAreaRU_FJL);
 -                      abbrToUUID.put("RU-NOZ", uuidAreaRU_NOZ);
 -
 -
 -              }
 -              
 -              public final static HashMap<Integer, Language> languageFK2Language  = new HashMap<Integer,Language>();
 -              static
 -              {
 -                      languageFK2Language.put(10, Language.DANISH());
 -                      languageFK2Language.put(19, Language.GREEK_MODERN());
 -                      languageFK2Language.put(18, Language.GERMAN());
 -                      languageFK2Language.put(59, Language.UKRAINIAN());
 -                      languageFK2Language.put(83, Language.ENGLISH());
 -                      languageFK2Language.put(58, Language.TURKISH());
 -                      languageFK2Language.put(26, Language.LITHUANIAN());
 -                      languageFK2Language.put(34, Language.RUSSIAN());
 -                      languageFK2Language.put(55, Language.SLOVENIAN());
 -                      languageFK2Language.put(57, Language.SWEDISH());
 -                      languageFK2Language.put(11, Language.DUTCH_MIDDLE());
 -                      languageFK2Language.put(100, Language.NORWEGIAN_BOKMOL());
 -                      languageFK2Language.put(101, Language.NORWEGIAN_NYNORSK());
 -                      
 -
 -
 -              }       
 -      public static UUID getUUIDByAreaAbbr(String abbr){
 -              return abbrToUUID.get(abbr);
 -      }
 -
 -      public static UUID uuidNomStatusTempNamed = UUID.fromString("aa6ada5a-ca21-4fef-b76f-9ae237e9c4ae");
 -
 -      static NomenclaturalStatusType nomStatusTempNamed;
 -
 -    private static DefinedTerm taxonomicSpecialistType;
 -
 -    private static UUID uuidTaxonomicSpecialistType = UUID.fromString("006879e4-cf99-405a-a720-2e81d9cbc34c");
 -
 -    private static DefinedTerm groupCoordinatorType;
 -
 -    private static UUID uuidGroupCoordinatorType = UUID.fromString("3a827ebe-4410-40e5-a241-941b17028e11");
 -
 -      private static DefinedTerm associateSpecialistType;
 -
 -      private static UUID uuidAssociateSpecialistType = UUID.fromString("8258f73c-e0ad-4f87-a88c-53c58c08bba9");
 -
 -      public static NomenclaturalStatusType getNomStatusTempNamed(ITermService termService){
 -              if (nomStatusTempNamed == null){
 -                      nomStatusTempNamed = (NomenclaturalStatusType)termService.find(uuidNomStatusTempNamed);
 -                      if (nomStatusTempNamed == null){
 -                              nomStatusTempNamed = NomenclaturalStatusType.NewInstance("temporary named", "temporary named", "temp. named", Language.ENGLISH());
 -                              Representation repLatin = Representation.NewInstance("", "", "", Language.LATIN());
 -                              nomStatusTempNamed.addRepresentation(repLatin);
 -                              nomStatusTempNamed.setUuid(uuidNomStatusTempNamed);
 -                              NomenclaturalStatusType.ALTERNATIVE().getVocabulary().addTerm(nomStatusTempNamed);
 -                              termService.save(nomStatusTempNamed);
 -                      }
 -              }
 -              return nomStatusTempNamed;
 -      }
 -    /**
 -     * @return
 -     */
 -    public static DefinedTerm getTaxonomicSpecialistType(ITermService termService) {
 -        if (taxonomicSpecialistType == null){
 -            taxonomicSpecialistType = (DefinedTerm)termService.find(uuidTaxonomicSpecialistType);
 -            if (taxonomicSpecialistType == null){
 -                taxonomicSpecialistType = DefinedTerm.NewInstance(TermType.TaxonNodeAgentRelationType, "taxonomic specialist", "taxonomic specialist", "TS");
 -
 -                taxonomicSpecialistType.setUuid(uuidTaxonomicSpecialistType);
 -
 -                termService.save(taxonomicSpecialistType);
 -            }
 -        }
 -        return taxonomicSpecialistType;
 -    }
 -    /**
 -     * @return
 -     */
 -    public static DefinedTerm getGroupCoordinatorType(ITermService termService) {
 -        if (groupCoordinatorType == null){
 -            groupCoordinatorType = (DefinedTerm)termService.find(uuidGroupCoordinatorType);
 -            if (groupCoordinatorType == null){
 -                groupCoordinatorType = DefinedTerm.NewInstance(TermType.TaxonNodeAgentRelationType, "group coordinator", "group coordinator", "GC");
 -
 -                groupCoordinatorType.setUuid(uuidGroupCoordinatorType);
 -
 -                termService.save(groupCoordinatorType);
 -            }
 -        }
 -        return groupCoordinatorType;
 -    }
 -    
 -    /**
 -     * @return
 -     */
 -    public static DefinedTerm getAssociateSpecialistType(ITermService termService) {
 -        if (associateSpecialistType == null){
 -              associateSpecialistType = (DefinedTerm)termService.find(uuidAssociateSpecialistType);
 -            if (associateSpecialistType == null){
 -              associateSpecialistType = DefinedTerm.NewInstance(TermType.TaxonNodeAgentRelationType, "associate specialist", "associate specialist", "AS");
 -
 -              associateSpecialistType.setUuid(uuidAssociateSpecialistType);
 -
 -                termService.save(associateSpecialistType);
 -            }
 -        }
 -        return associateSpecialistType;
 -    }
 -      public static Language langFK2Language(
 -                      int languageFk) {
 -              
 -              return null;
 -      }
 -
 -
 -}
 +/**\r
 +* Copyright (C) 2007 EDIT\r
 +* European Distributed Institute of Taxonomy\r
 +* http://www.e-taxonomy.eu\r
 +*\r
 +* The contents of this file are subject to the Mozilla Public License Version 1.1\r
 +* See LICENSE.TXT at the top of this package for the full license terms.\r
 +*/\r
 +\r
 +package eu.etaxonomy.cdm.io.pesi.faunaEuropaea;\r
 +\r
 +import java.sql.ResultSet;\r
 +import java.sql.SQLException;\r
 +import java.util.HashMap;\r
 +import java.util.UUID;\r
 +\r
 +import org.apache.log4j.Logger;\r
 +\r
 +import eu.etaxonomy.cdm.api.application.CdmApplicationUtils;\r
 +import eu.etaxonomy.cdm.api.service.ITermService;\r
 +import eu.etaxonomy.cdm.io.common.TdwgAreaProvider;\r
 +import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
 +import eu.etaxonomy.cdm.model.common.LSID;\r
 +import eu.etaxonomy.cdm.model.common.Language;\r
 +import eu.etaxonomy.cdm.model.common.Representation;\r
 +import eu.etaxonomy.cdm.model.common.TermType;\r
 +import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;\r
 +import eu.etaxonomy.cdm.model.location.NamedArea;\r
 +import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
 +import eu.etaxonomy.cdm.model.name.Rank;\r
 +import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
 +\r
 +/**\r
 + * @author a.babadshanjan\r
 + * @created 12.05.2009\r
 + * @version 1.0\r
 + */\r
 +\r
 +public final class FaunaEuropaeaTransformer {\r
 +      private static final Logger logger = Logger.getLogger(FaunaEuropaeaTransformer.class);\r
 +\r
 +      // Query\r
 +      public static final int Q_NO_RESTRICTION = -1;\r
 +\r
 +      // TaxonStatus\r
 +      public static final int T_STATUS_ACCEPTED = 1;\r
 +      public static final int T_STATUS_NOT_ACCEPTED = 0;\r
 +\r
 +      // Author\r
 +      public static final int A_AUCT = 1;\r
 +      public static final String A_AUCTNAME = "auct.";\r
 +\r
 +      // Parenthesis\r
 +      public static final int P_PARENTHESIS = 1;\r
 +\r
 +      // User\r
 +\r
 +      public static final int U_ACTIVE = 1;\r
 +\r
 +      //new AbsencePresenceTermUUIDs\r
 +\r
 +      public static UUID noData;\r
 +      //public static UUID doubtfull_present;\r
 +\r
 +      // Rank\r
 +      public static final int R_KINGDOM = 1;\r
 +      public static final int R_SUBKINGDOM = 2;\r
 +      public static final int R_SUPERPHYLUM = 3;\r
 +      public static final int R_PHYLUM = 4;\r
 +      public static final int R_SUBPHYLUM = 5;\r
 +      public static final int R_INFRAPHYLUM = 6;\r
 +      public static final int R_CLASS = 7;\r
 +      public static final int R_SUBCLASS = 8;\r
 +      public static final int R_INFRACLASS = 9;\r
 +      public static final int R_SUPERORDER = 10;\r
 +      public static final int R_ORDER = 11;\r
 +      public static final int R_SUBORDER = 12;\r
 +      public static final int R_INFRAORDER = 13;\r
 +      public static final int R_SUPERFAMILY = 14;\r
 +      public static final int R_FAMILY = 15;\r
 +      public static final int R_SUBFAMILY = 16;\r
 +      public static final int R_TRIBE = 17;\r
 +      public static final int R_SUBTRIBE = 18;\r
 +      public static final int R_GENUS = 19;\r
 +      public static final int R_SUBGENUS = 20;\r
 +      public static final int R_SPECIES = 21;\r
 +      public static final int R_SUBSPECIES = 22;\r
 +\r
 +      public static PresenceAbsenceTerm occStatus2PresenceAbsence(int occStatusId)  throws UnknownCdmTypeException{\r
 +\r
 +              if (Integer.valueOf(occStatusId) == null) {\r
 +                      return PresenceAbsenceTerm.PRESENT();\r
 +              }\r
 +              switch (occStatusId){\r
 +              case 0: return PresenceAbsenceTerm.PRESENT();\r
 +              case 2: return PresenceAbsenceTerm.ABSENT();\r
 +              case 1: return PresenceAbsenceTerm.PRESENT_DOUBTFULLY();\r
 +\r
 +              default: {\r
 +\r
 +                      return null;\r
 +\r
 +\r
 +              }\r
 +\r
 +      }\r
 +      }\r
 +      public static void setUUIDs(UUID uuid){\r
 +              noData = uuid;\r
 +              //doubtfull_present = uuids.get("doubtfullPresent");\r
 +\r
 +      }\r
 +\r
 +      public static PresenceAbsenceTerm occStatus2PresenceAbsence_ (int occStatusId)  throws UnknownCdmTypeException{\r
 +              switch (occStatusId){\r
 +                      case 0: return null;\r
 +                      //case 110: return AbsenceTerm.CULTIVATED_REPORTED_IN_ERROR();\r
 +                      case 120: return PresenceAbsenceTerm.CULTIVATED();\r
 +              //      case 210: return AbsenceTerm.INTRODUCED_REPORTED_IN_ERROR();\r
 +                      case 220: return PresenceAbsenceTerm.INTRODUCED_PRESENCE_QUESTIONABLE();\r
 +                      case 230: return PresenceAbsenceTerm.INTRODUCED_FORMERLY_INTRODUCED();\r
 +                      case 240: return PresenceAbsenceTerm.INTRODUCED_DOUBTFULLY_INTRODUCED();\r
 +                      case 250: return PresenceAbsenceTerm.INTRODUCED();\r
 +                      case 260: return PresenceAbsenceTerm.INTRODUCED_UNCERTAIN_DEGREE_OF_NATURALISATION();\r
 +                      case 270: return PresenceAbsenceTerm.INTRODUCED_ADVENTITIOUS();\r
 +                      case 280: return PresenceAbsenceTerm.INTRODUCED_NATURALIZED();\r
 +                      //case 310: return AbsenceTerm.NATIVE_REPORTED_IN_ERROR();\r
 +                      case 320: return PresenceAbsenceTerm.NATIVE_PRESENCE_QUESTIONABLE();\r
 +                      case 330: return PresenceAbsenceTerm.NATIVE_FORMERLY_NATIVE();\r
 +                      case 340: return PresenceAbsenceTerm.NATIVE_DOUBTFULLY_NATIVE();\r
 +                      case 350: return PresenceAbsenceTerm.NATIVE();\r
 +                      case 999: {\r
 +                                      logger.warn("endemic for EM can not be transformed in legal status");\r
 +                                      //TODO preliminary\r
 +                                      return PresenceAbsenceTerm.PRESENT();\r
 +                              }\r
 +                      default: {\r
 +                              throw new UnknownCdmTypeException("Unknown occurrence status  (id=" + Integer.valueOf(occStatusId).toString() + ")");\r
 +                      }\r
 +              }\r
 +      }\r
 +\r
 +\r
 +      public static Rank rankId2Rank (ResultSet rs, boolean useUnknown) throws UnknownCdmTypeException {\r
 +              Rank result;\r
 +              try {\r
 +                      int rankId = rs.getInt("rnk_id");\r
 +                      int parentRankId = rs.getInt("rnk_rnk_id");\r
 +                      String rankName = rs.getString("rnk_name");\r
 +                      String rankLatinName = rs.getString("rnk_latinname");\r
 +                      int rankCategory = rs.getInt("rnk_category");\r
 +\r
 +                      if (logger.isDebugEnabled()) {\r
 +                              logger.debug(rankId + ", " + parentRankId + ", " + rankName + ", " + rankCategory);\r
 +                      }\r
 +\r
 +                      try {\r
 +                              result = Rank.getRankByNameOrIdInVoc(rankName);\r
 +                      } catch (UnknownCdmTypeException e1) {\r
 +\r
 +                              switch (rankId) {\r
 +                              case 0: return null;\r
 +                              case R_KINGDOM: return Rank.KINGDOM();\r
 +                              case R_SUBKINGDOM: return Rank.SUBKINGDOM();\r
 +                              case R_SUPERPHYLUM: return Rank.SUPERPHYLUM();\r
 +                              case R_PHYLUM: return Rank.PHYLUM();\r
 +                              case R_SUBPHYLUM: return Rank.SUBPHYLUM();\r
 +                              case R_INFRAPHYLUM: return Rank.INFRAPHYLUM();\r
 +                              case R_CLASS: return Rank.CLASS();\r
 +                              case R_SUBCLASS: return Rank.SUBCLASS();\r
 +                              case R_INFRACLASS: return Rank.INFRACLASS();\r
 +                              case R_SUPERORDER: return Rank.SUPERORDER();\r
 +                              case R_ORDER: return Rank.ORDER();\r
 +                              case R_SUBORDER: return Rank.SUBORDER();\r
 +                              case R_INFRAORDER: return Rank.INFRAORDER();\r
 +                              case R_SUPERFAMILY: return Rank.SUPERFAMILY();\r
 +                              case R_FAMILY: return Rank.FAMILY();\r
 +                              case R_SUBFAMILY: return Rank.SUBFAMILY();\r
 +                              case R_TRIBE: return Rank.TRIBE();\r
 +                              case R_SUBTRIBE: return Rank.SUBTRIBE();\r
 +                              case R_GENUS: return Rank.GENUS();\r
 +                              case R_SUBGENUS: return Rank.SUBGENUS();\r
 +                              case R_SPECIES: return Rank.SPECIES();\r
 +                              case R_SUBSPECIES: return Rank.SUBSPECIES();\r
 +\r
 +                              default: {\r
 +                                      if (useUnknown){\r
 +                                              logger.error("Rank unknown. Created UNKNOWN_RANK");\r
 +                                              return Rank.UNKNOWN_RANK();\r
 +                                      }\r
 +                                      throw new UnknownCdmTypeException("Unknown Rank id" + Integer.valueOf(rankId).toString());\r
 +                              }\r
 +                              }\r
 +                      }\r
 +                      return result;\r
 +              } catch (SQLException e) {\r
 +                      e.printStackTrace();\r
 +                      logger.warn("Exception occurred. Created UNKNOWN_RANK instead");\r
 +                      return Rank.UNKNOWN_RANK();\r
 +              }\r
 +      }\r
 +\r
 +\r
 +      public static NamedArea areaId2TdwgArea (FaunaEuropaeaDistribution fauEuDistribution)\r
 +      throws UnknownCdmTypeException {\r
 +\r
 +              NamedArea tdwgArea = null;\r
 +\r
 +              try {\r
 +                      int areaId = fauEuDistribution.getAreaId();\r
 +                      String areaName = fauEuDistribution.getAreaName();\r
 +                      String areaCode = fauEuDistribution.getAreaCode();\r
 +                      int extraLimital = fauEuDistribution.getExtraLimital();\r
 +\r
 +                      //TODO: Verify mappings with comments. Those don't map to TDWG areas.\r
 +\r
 +                      if (areaCode.equals("AD")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SPA-AN");\r
 +            } else if (areaCode.equals("AL")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ALB-OO");\r
 +            } else if (areaCode.equals("AT")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("AUT-AU");\r
 +            } else if (areaCode.equals("AUS")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("AUS"); // Australian region - Australia\r
 +            } else if (areaCode.equals("BA")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("YUG-BH");\r
 +            } else if (areaCode.equals("BE")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BGM-BE");\r
 +            } else if (areaCode.equals("BG")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BUL-OO");\r
 +            } else if (areaCode.equals("BY")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BLR-OO");\r
 +            } else if (areaCode.equals("CH")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SWI-OO");\r
 +            } else if (areaCode.equals("CY")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("CYP-OO");\r
 +            } else if (areaCode.equals("CZ")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("CZE-CZ");\r
 +            } else if (areaCode.equals("DE")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("GER-OO");\r
 +            } else if (areaCode.equals("DK-DEN")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("DEN-OO");\r
 +            } else if (areaCode.equals("DK-FOR")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("FOR-OO");\r
 +            } else if (areaCode.equals("EE")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BLT-ES");\r
 +            } else if (areaCode.equals("ES-BAL")) {\r
-                 tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BLT-ES");\r
++                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BAL-OO");\r
 +            } else if (areaCode.equals("ES-CNY")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("CNY-OO");\r
 +            } else if (areaCode.equals("ES-SPA")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SPA-SP");\r
 +            } else if (areaCode.equals("FI")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("FIN-OO");\r
 +            } else if (areaCode.equals("FR-COR")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("COR-OO");\r
 +            } else if (areaCode.equals("FR-FRA")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("FRA-FR");\r
 +            } else if (areaCode.equals("GB-CI")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("FRA-CI");\r
 +            } else if (areaCode.equals("GB-GI")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SPA-GI");\r
 +            } else if (areaCode.equals("GB-GRB")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("GRB-OO");\r
 +            } else if (areaCode.equals("GB-NI")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("IRE-NI");\r
 +            } else if (areaCode.equals("GR-GRC")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("GRC-OO");\r
 +            } else if (areaCode.equals("HR")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("YUG-CR");\r
 +            } else if (areaCode.equals("HU")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("HUN-OO");\r
 +            } else if (areaCode.equals("IE")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("IRE-IR");\r
 +            } else if (areaCode.equals("IS")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ICE-OO");\r
 +            } else if (areaCode.equals("IT-ITA")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ITA-IT");\r
 +            } else if (areaCode.equals("IT-SAR")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SAR-OO");\r
 +            } else if (areaCode.equals("IT-SI")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SIC-SI");\r
 +            } else if (areaCode.equals("LI")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("AUT-LI");\r
 +            } else if (areaCode.equals("LT")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BLT-LI");\r
 +            } else if (areaCode.equals("LU")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BGM-LU");\r
 +            } else if (areaCode.equals("LV")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BLT-LA");\r
 +            } else if (areaCode.equals("MC")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("FRA-MO");\r
 +            } else if (areaCode.equals("MD")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("UKR-MO");\r
 +            } else if (areaCode.equals("MK")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("YUG-MA");\r
 +            } else if (areaCode.equals("MT")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SIC-MA");\r
 +            } else if (areaCode.equals("NL")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("NET-OO");\r
 +            } else if (areaCode.equals("NO-NOR")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("NOR-OO");\r
 +            } else if (areaCode.equals("NO-SVA")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SVA-OO");\r
 +            } else if (areaCode.equals("PL")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("POL-OO");\r
 +            } else if (areaCode.equals("PT-AZO")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("AZO-OO");\r
 +            } else if (areaCode.equals("PT-MDR")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("MDR-OO");\r
 +            } else if (areaCode.equals("PT-POR")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("POR-OO");\r
 +            } else if (areaCode.equals("PT-SEL")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SEL-OO");\r
 +            } else if (areaCode.equals("RO")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ROM-OO");\r
 +            } else if (areaCode.equals("RU-KGD")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("BLT-KA");\r
 +            } else if (areaCode.equals("RU-RUC")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("RUC-OO");\r
 +            } else if (areaCode.equals("RU-RUE")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("RUE-OO");\r
 +            } else if (areaCode.equals("RU-RUN")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("RUN-OO");\r
 +            } else if (areaCode.equals("RU-RUS")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("RUS-OO");\r
 +            } else if (areaCode.equals("RU-RUW")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("RUW-OO");\r
 +            } else if (areaCode.equals("SE")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("SWE-OO");\r
 +            } else if (areaCode.equals("SI")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("YUG-SL");\r
 +            } else if (areaCode.equals("SK")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("CZE-SK");\r
 +            } else if (areaCode.equals("SM")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ITA-SM");\r
 +            } else if (areaCode.equals("TR-TUE")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("TUE-OO");\r
 +            }else if (areaCode.equals("UA")) {\r
 +              tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("UKR-UK"); //UKraine including Crimea\r
 +            } else if (areaCode.equals("VA")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("ITA-VC");\r
 +            } else if (areaCode.equals("YU")) {\r
 +                tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation("YUG");\r
 +            } else {\r
 +                throw new UnknownCdmTypeException("Unknown Area " + areaCode);\r
 +            }\r
 +\r
 +                      if (logger.isDebugEnabled()) {\r
 +                              logger.debug(areaId + ", " + areaName + ", " + areaCode + ", " + extraLimital);\r
 +                      }\r
 +\r
 +              } catch (Exception e) {\r
 +                      //e.printStackTrace();\r
 +                      logger.debug("Exception occurred. Area could not be mapped." + fauEuDistribution.getAreaName());\r
 +                      return null;\r
 +              }\r
 +\r
 +              return tdwgArea;\r
 +      }\r
 +\r
 +      public static UUID uuidAreaAUS = UUID.fromString("cf979ca8-8cb6-42df-b2ce-1f432ec7c26b");\r
 +      public static UUID uuidAreaAFR = UUID.fromString("07ac5e75-9fc9-4aa0-938c-1324c9618b97");\r
 +      public static UUID uuidAreaEPA = UUID.fromString("e83446d7-7379-4beb-be05-295f8da6f5ae");\r
 +      public static UUID uuidAreaGR_AEG = UUID.fromString("6bd422aa-9911-4b80-8595-0f6d1ecd5eee");\r
 +      public static UUID uuidAreaGR_CYC = UUID.fromString("8e7d7f1e-3e4d-4f7c-96ec-93ec91e528d6");\r
 +      public static UUID uuidAreaGR_DOD = UUID.fromString("6d6f6842-924e-440b-9e7e-3df1922bf4a6");\r
 +      public static UUID uuidAreaNAF = UUID.fromString("d2c54b1e-5f9f-455d-b308-6859cb153c7b");\r
 +      public static UUID uuidAreaNEA = UUID.fromString("aa87f6b8-110b-44b5-a329-91a08f1a4cc9");\r
 +      public static UUID uuidAreaNEO = UUID.fromString("0e6e0ce9-c6ab-46bc-80b9-aee4a0620e78");\r
 +      public static UUID uuidAreaNRE = UUID.fromString("d51876c2-eaf6-4c7f-963e-337dd3e0d729");\r
 +      public static UUID uuidAreaORR = UUID.fromString("04cab4f8-b316-4e21-9bcc-236a45e4e83d");\r
 +      public static UUID uuidAreaGR_CR = UUID.fromString("2ef9fa6c-7c3f-431a-96c9-5980c55fc440");\r
 +      public static UUID uuidAreaGR_GRC = UUID.fromString("b5d33c78-91e7-467a-9c2d-6c337b78d31a");\r
 +      public static UUID uuidAreaUA = UUID.fromString("859cf055-a208-4f30-8e6e-361f165c6fa9");\r
 +      public static UUID uuidAreaRU_FJL = UUID.fromString("84671068-2f18-40cb-933a-e7e1c0e37cc8");\r
 +      public static UUID uuidAreaRU_NOZ = UUID.fromString("64cce0aa-0222-4740-8fa2-dbf0330e9266");\r
 +\r
 +\r
 +      public final static HashMap<String, UUID> abbrToUUID = new HashMap<String,UUID>();\r
 +              static\r
 +              {\r
 +                      abbrToUUID.put("AUS", uuidAreaAUS);\r
 +                      abbrToUUID.put("AFR", uuidAreaAFR);\r
 +                      abbrToUUID.put("EPA", uuidAreaEPA);\r
 +                      abbrToUUID.put("GR-AEG", uuidAreaGR_AEG);\r
 +                      abbrToUUID.put("GR-CYC", uuidAreaGR_CYC);\r
 +                      abbrToUUID.put("GR-DOD", uuidAreaGR_DOD);\r
 +                      abbrToUUID.put("NAF", uuidAreaNAF);\r
 +                      abbrToUUID.put("NEA", uuidAreaNEA);\r
 +                      abbrToUUID.put("NEO", uuidAreaNEO);\r
 +                      abbrToUUID.put("NRE", uuidAreaNRE);\r
 +                      abbrToUUID.put("ORR", uuidAreaORR);\r
 +                      abbrToUUID.put("GR-KRI", uuidAreaGR_CR);\r
 +                      abbrToUUID.put("GR-GRC", uuidAreaGR_GRC);\r
 +                      abbrToUUID.put("UA", uuidAreaUA);\r
 +                      abbrToUUID.put("RU-FJL", uuidAreaRU_FJL);\r
 +                      abbrToUUID.put("RU-NOZ", uuidAreaRU_NOZ);\r
 +\r
 +\r
 +              }\r
 +              \r
 +              public final static HashMap<Integer, Language> languageFK2Language  = new HashMap<Integer,Language>();\r
 +              static\r
 +              {\r
 +                      languageFK2Language.put(1, Language.ALBANIAN());\r
 +                      languageFK2Language.put(4, Language.AZERBAIJANI());\r
 +                      languageFK2Language.put(6, Language.BULGARIAN());\r
 +                      languageFK2Language.put(10, Language.DANISH());\r
 +                      languageFK2Language.put(11, Language.DUTCH_MIDDLE());\r
 +                      languageFK2Language.put(12, Language.ENGLISH());\r
 +                      languageFK2Language.put(16, Language.FRENCH());\r
 +                      \r
 +                      languageFK2Language.put(18, Language.GERMAN());\r
 +                      languageFK2Language.put(19, Language.GREEK_MODERN());\r
 +                      languageFK2Language.put(23, Language.HEBREW());\r
 +                      languageFK2Language.put(24, Language.ITALIAN());\r
 +                      languageFK2Language.put(26, Language.LITHUANIAN());\r
 +                      languageFK2Language.put(30, Language.NORWEGIAN());\r
 +                      languageFK2Language.put(31, Language.POLISH());\r
 +                      languageFK2Language.put(34, Language.RUSSIAN());\r
 +                      languageFK2Language.put(54, Language.SLOVAK());\r
 +                      languageFK2Language.put(55, Language.SLOVENIAN());\r
 +                      languageFK2Language.put(57, Language.SWEDISH());\r
 +                      languageFK2Language.put(58, Language.TURKISH());\r
 +                      \r
 +                      languageFK2Language.put(59, Language.UKRAINIAN());\r
 +                      languageFK2Language.put(60, Language.WELSH());\r
 +                      languageFK2Language.put(62, Language.GALICIAN());\r
 +                      //languageFK2Language.put(83, getEnglishUS());\r
 +                      languageFK2Language.put(97, Language.IRISH());\r
 +                      \r
 +                      \r
 +                      languageFK2Language.put(100, Language.NORWEGIAN_BOKMOL());\r
 +                      languageFK2Language.put(101, Language.NORWEGIAN_NYNORSK());\r
 +              \r
 +                      languageFK2Language.put(102, Language.ARABIC());\r
 +                      languageFK2Language.put(103, Language.ARMENIAN());\r
 +                      \r
 +                      languageFK2Language.put(104, Language.CATALAN_VALENCIAN());\r
 +                      languageFK2Language.put(105, Language.CHINESE());\r
 +                      languageFK2Language.put(106, Language.ESTONIAN());\r
 +                      languageFK2Language.put(107, Language.FINNISH());\r
 +                      \r
 +                      languageFK2Language.put(108, Language.GAELIC_SCOTTISH_GAELIC());\r
 +                      languageFK2Language.put(109, Language.JAPANESE());\r
 +                      languageFK2Language.put(110, Language.KOREAN());\r
 +                      languageFK2Language.put(111, Language.LATIN());\r
 +                      languageFK2Language.put(112, Language.LATVIAN());\r
 +                      languageFK2Language.put(113, Language.PERSIAN());\r
 +                      languageFK2Language.put(114, Language.PORTUGUESE());\r
 +                      languageFK2Language.put(115, Language.ROMANIAN());\r
 +                      languageFK2Language.put(117, Language.SWAHILI());\r
 +                      languageFK2Language.put(118, Language.SPANISH_CASTILIAN());\r
 +                      \r
 +                      \r
 +                      \r
 +\r
 +\r
 +              }       \r
 +      public static UUID getUUIDByAreaAbbr(String abbr){\r
 +              return abbrToUUID.get(abbr);\r
 +      }\r
 +\r
 +      public static UUID uuidNomStatusTempNamed = UUID.fromString("aa6ada5a-ca21-4fef-b76f-9ae237e9c4ae");\r
 +\r
 +      static NomenclaturalStatusType nomStatusTempNamed;\r
 +\r
 +    private static DefinedTerm taxonomicSpecialistType;\r
 +\r
 +    private static UUID uuidTaxonomicSpecialistType = UUID.fromString("006879e4-cf99-405a-a720-2e81d9cbc34c");\r
 +\r
 +    private static DefinedTerm groupCoordinatorType;\r
 +\r
 +    private static UUID uuidGroupCoordinatorType = UUID.fromString("3a827ebe-4410-40e5-a241-941b17028e11");\r
 +\r
 +      private static DefinedTerm associateSpecialistType;\r
 +\r
 +      private static UUID uuidAssociateSpecialistType = UUID.fromString("8258f73c-e0ad-4f87-a88c-53c58c08bba9");\r
 +\r
 +      private static Language langEnglishUS;\r
 +\r
 +      private static UUID uuidEnglishUS;\r
 +\r
 +\r
 +\r
 +      public static NomenclaturalStatusType getNomStatusTempNamed(ITermService termService){\r
 +              if (nomStatusTempNamed == null){\r
 +                      nomStatusTempNamed = (NomenclaturalStatusType)termService.find(uuidNomStatusTempNamed);\r
 +                      if (nomStatusTempNamed == null){\r
 +                              nomStatusTempNamed = NomenclaturalStatusType.NewInstance("temporary named", "temporary named", "temp. named", Language.ENGLISH());\r
 +                              Representation repLatin = Representation.NewInstance("", "", "", Language.LATIN());\r
 +                              nomStatusTempNamed.addRepresentation(repLatin);\r
 +                              nomStatusTempNamed.setUuid(uuidNomStatusTempNamed);\r
 +                              NomenclaturalStatusType.ALTERNATIVE().getVocabulary().addTerm(nomStatusTempNamed);\r
 +                              termService.save(nomStatusTempNamed);\r
 +                      }\r
 +              }\r
 +              return nomStatusTempNamed;\r
 +      }\r
 +      \r
 +      public static Language getEnglishUS(ITermService termService){\r
 +              if (langEnglishUS == null){\r
 +                      langEnglishUS = (Language)termService.find(uuidEnglishUS);\r
 +            if (langEnglishUS == null){\r
 +              logger.info("create language english-us");\r
 +              langEnglishUS = Language.NewInstance("english-United States", "english-US", "eng-US");\r
 +                      langEnglishUS.setUuid(uuidEnglishUS);\r
 +\r
 +                langEnglishUS = (Language)termService.save(langEnglishUS);\r
 +                languageFK2Language.put(83, langEnglishUS);\r
 +            }\r
 +        }\r
 +              return langEnglishUS;\r
 +      }\r
 +    /**\r
 +     * @return\r
 +     */\r
 +    public static DefinedTerm getTaxonomicSpecialistType(ITermService termService) {\r
 +        if (taxonomicSpecialistType == null){\r
 +            taxonomicSpecialistType = (DefinedTerm)termService.find(uuidTaxonomicSpecialistType);\r
 +            if (taxonomicSpecialistType == null){\r
 +              logger.info("create associated specialist type");\r
 +                taxonomicSpecialistType = DefinedTerm.NewInstance(TermType.TaxonNodeAgentRelationType, "taxonomic specialist", "taxonomic specialist", "TS");\r
 +\r
 +                taxonomicSpecialistType.setUuid(uuidTaxonomicSpecialistType);\r
 +\r
 +                termService.save(taxonomicSpecialistType);\r
 +            }\r
 +        }\r
 +        return taxonomicSpecialistType;\r
 +    }\r
-     \r
-     \r
-     \r
-     \r
 +    /**\r
 +     * @return\r
 +     */\r
 +    public static DefinedTerm getGroupCoordinatorType(ITermService termService) {\r
 +        if (groupCoordinatorType == null){\r
 +            groupCoordinatorType = (DefinedTerm)termService.find(uuidGroupCoordinatorType);\r
 +            if (groupCoordinatorType == null){\r
 +                groupCoordinatorType = DefinedTerm.NewInstance(TermType.TaxonNodeAgentRelationType, "group coordinator", "group coordinator", "GC");\r
 +\r
 +                groupCoordinatorType.setUuid(uuidGroupCoordinatorType);\r
 +\r
 +                termService.save(groupCoordinatorType);\r
 +            }\r
 +        }\r
 +        return groupCoordinatorType;\r
 +    }\r
 +    \r
 +   \r
 +    \r
 +    /**\r
 +     * @return\r
 +     */\r
 +    public static DefinedTerm getAssociateSpecialistType(ITermService termService) {\r
 +        if (associateSpecialistType == null){\r
 +              associateSpecialistType = (DefinedTerm)termService.find(uuidAssociateSpecialistType);\r
 +            if (associateSpecialistType == null){\r
 +              associateSpecialistType = DefinedTerm.NewInstance(TermType.TaxonNodeAgentRelationType, "associate specialist", "associate specialist", "AS");\r
 +\r
 +              associateSpecialistType.setUuid(uuidAssociateSpecialistType);\r
 +\r
 +                termService.save(associateSpecialistType);\r
 +            }\r
 +        }\r
 +        return associateSpecialistType;\r
 +    }\r
 +      public static Language langFK2Language(\r
 +                      Integer languageFk) {\r
 +              \r
 +              Language result = languageFK2Language.get(languageFk);\r
 +              \r
 +              return result;\r
 +      }\r
 +\r
 +\r
 +}\r