cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitImportConfigurator.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/excel/taxa/NormalExplicitRow.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/excel/taxa/TaxonExcelImporterBase.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaAuthorImport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaDistributionImport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaImportBase.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaImportConfigurator.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaImporter.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaTaxonImport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/faunaEuropaea/FaunaEuropaeaTransformer.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/CdmDocumentBuilder.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/CdmMarshallerListener.java -text
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/CdmResourceResolver.java -text
--- /dev/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
+package eu.etaxonomy.cdm.io.faunaEuropaea;\r
+\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.util.Map;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.springframework.stereotype.Component;\r
+\r
+import eu.etaxonomy.cdm.io.common.ICdmIO;\r
+import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.ImportHelper;\r
+import eu.etaxonomy.cdm.io.common.MapWrapper;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.agent.AgentBase;\r
+import eu.etaxonomy.cdm.model.agent.Team;\r
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+\r
+\r
+/**\r
+ * @author a.babadshanjan\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class FaunaEuropaeaAuthorImport extends FaunaEuropaeaImportBase {\r
+ private static final Logger logger = Logger.getLogger(FaunaEuropaeaAuthorImport.class);\r
+\r
+ private static int modCount = 1000;\r
+\r
+ public FaunaEuropaeaAuthorImport(){\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IImportConfigurator config){\r
+ boolean result = true;\r
+ logger.warn("No checking for Authors not implemented");\r
+ \r
+ return result;\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)\r
+ */\r
+ @Override\r
+ protected boolean doInvoke(IImportConfigurator config, \r
+ Map<String, MapWrapper<? extends CdmBase>> stores){ \r
+\r
+ MapWrapper<AgentBase> teamMap = (MapWrapper<AgentBase>)stores.get(ICdmIO.AUTHOR_STORE);\r
+ \r
+ FaunaEuropaeaImportConfigurator fauEuConfig = (FaunaEuropaeaImportConfigurator)config;\r
+ Source source = fauEuConfig.getSource();\r
+ String dbAttrName;\r
+ String cdmAttrName;\r
+\r
+ logger.info("Start making authors ...");\r
+ boolean success = true ;\r
+ \r
+ //get data from database\r
+ String strQuery = \r
+ " SELECT * " +\r
+ " FROM author " ;\r
+ ResultSet rs = source.getResultSet(strQuery) ;\r
+ String namespace = "AuthorTeam";\r
+ \r
+ int i = 0;\r
+ try{\r
+ while (rs.next()){\r
+ \r
+ if ((i++ % modCount ) == 0 && i!= 1 ){ logger.info("Authors handled: " + (i-1));}\r
+ \r
+ //create Agent element\r
+ int teamId = rs.getInt("aut_id");\r
+ \r
+ TeamOrPersonBase<Team> team = new Team();\r
+ \r
+ dbAttrName = "aut_name";\r
+ cdmAttrName = "nomenclaturalTitle";\r
+ success &= ImportHelper.addStringValue(rs, team, dbAttrName, cdmAttrName);\r
+\r
+ dbAttrName = "aut_name";\r
+ cdmAttrName = "titleCache";\r
+ success &= ImportHelper.addStringValue(rs, team, dbAttrName, cdmAttrName);\r
+\r
+ //TODO\r
+ //title cache or nomenclaturalTitle?\r
+\r
+ teamMap.put(teamId, team);\r
+ }\r
+ } catch (SQLException e) {\r
+ logger.error("SQLException:" + e);\r
+ return false;\r
+ }\r
+\r
+ logger.info(i + " authors handled");\r
+ getAgentService().saveAgentAll(teamMap.objects());\r
+\r
+ logger.info("End making authors ...");\r
+ return success;\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IImportConfigurator config){\r
+ return !config.isDoAuthors();\r
+ }\r
+\r
+}\r
--- /dev/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.faunaEuropaea;\r
+\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.util.ArrayList;\r
+import java.util.HashSet;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Set;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.springframework.stereotype.Component;\r
+\r
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
+import eu.etaxonomy.cdm.io.common.ICdmIO;\r
+import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.MapWrapper;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.Distribution;\r
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
+import eu.etaxonomy.cdm.model.location.TdwgArea;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
+\r
+\r
+/**\r
+ * @author a.babadshanjan\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class FaunaEuropaeaDistributionImport extends FaunaEuropaeaImportBase {\r
+ private static final Logger logger = Logger.getLogger(FaunaEuropaeaDistributionImport.class);\r
+\r
+ private static int modCount = 10000;\r
+\r
+ public FaunaEuropaeaDistributionImport(){\r
+ super();\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IImportConfigurator config){\r
+ boolean result = true;\r
+ FaunaEuropaeaImportConfigurator bmiConfig = (FaunaEuropaeaImportConfigurator)config;\r
+ result &= checkTaxonIsAccepted(bmiConfig);\r
+ //result &= checkPartOfJournal(bmiConfig);\r
+ logger.warn("Checking for Occurrence not yet fully implemented");\r
+ return result;\r
+ }\r
+ \r
+//******************************** CHECK *************************************************\r
+ \r
+ private static boolean checkTaxonIsAccepted(FaunaEuropaeaImportConfigurator bmiConfig){\r
+ try {\r
+ boolean result = true;\r
+ Source source = bmiConfig.getSource();\r
+ String strQuery = "SELECT emOccurrence.OccurrenceId, PTaxon.StatusFk, Name.FullNameCache, Status.Status " + \r
+ " FROM emOccurrence INNER JOIN " +\r
+ " PTaxon ON emOccurrence.PTNameFk = PTaxon.PTNameFk AND emOccurrence.PTRefFk = PTaxon.PTRefFk INNER JOIN " + \r
+ " Name ON PTaxon.PTNameFk = Name.NameId INNER JOIN " +\r
+ " Status ON PTaxon.StatusFk = Status.StatusId " + \r
+ " WHERE (PTaxon.StatusFk <> 1) ";\r
+ \r
+ ResultSet resulSet = source.getResultSet(strQuery);\r
+ boolean firstRow = true;\r
+ while (resulSet.next()){\r
+ if (firstRow){\r
+ System.out.println("========================================================");\r
+ logger.warn("There are Occurrences for a taxon that is not accepted!");\r
+ System.out.println("========================================================");\r
+ }\r
+ int occurrenceId = resulSet.getInt("OccurrenceId");\r
+ int statusFk = resulSet.getInt("StatusFk");\r
+ String status = resulSet.getString("Status");\r
+ String fullNameCache = resulSet.getString("FullNameCache");\r
+ \r
+ System.out.println("OccurrenceId:" + occurrenceId + "\n Status: " + status + \r
+ "\n FullNameCache: " + fullNameCache );\r
+ result = firstRow = false;\r
+ }\r
+ \r
+ return result;\r
+ } catch (SQLException e) {\r
+ e.printStackTrace();\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ \r
+\r
+ \r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)\r
+ */\r
+ @Override\r
+ protected boolean doInvoke(IImportConfigurator config, \r
+ Map<String, MapWrapper<? extends CdmBase>> stores){\r
+ \r
+ MapWrapper<TaxonBase> taxonMap = (MapWrapper<TaxonBase>)stores.get(ICdmIO.TAXON_STORE);\r
+ MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)stores.get(ICdmIO.REFERENCE_STORE);\r
+ FaunaEuropaeaImportConfigurator bmiConfig = (FaunaEuropaeaImportConfigurator)config;\r
+ \r
+ Set<TaxonBase> taxonStore = new HashSet<TaxonBase>();\r
+ Source source = bmiConfig.getSource();\r
+ \r
+ logger.info("start make occurrences ...");\r
+ \r
+ try {\r
+ //get data from database\r
+ String strQuery = //DISTINCT because otherwise emOccurrenceSource creates multiple records for a single distribution \r
+ " SELECT DISTINCT PTaxon.RIdentifier, emOccurrence.OccurrenceId, emOccurSumCat.emOccurSumCatId, emOccurSumCat.Short, emOccurSumCat.Description, " + \r
+ " emOccurSumCat.OutputCode, emArea.AreaId, emArea.EMCode, emArea.ISOCode, emArea.TDWGCode, emArea.Unit, " + \r
+ " emArea.Status, emArea.OutputOrder, emArea.eur, emArea.EuroMedArea " + \r
+ " FROM emOccurrence INNER JOIN " + \r
+ " emArea ON emOccurrence.AreaFk = emArea.AreaId INNER JOIN " + \r
+ " PTaxon ON emOccurrence.PTNameFk = PTaxon.PTNameFk AND emOccurrence.PTRefFk = PTaxon.PTRefFk LEFT OUTER JOIN " + \r
+ " emOccurSumCat ON emOccurrence.SummaryStatus = emOccurSumCat.emOccurSumCatId LEFT OUTER JOIN " + \r
+ " emOccurrenceSource ON emOccurrence.OccurrenceId = emOccurrenceSource.OccurrenceFk " + \r
+ " WHERE (1=1)" + \r
+ " ORDER BY PTaxon.RIdentifier";\r
+ ResultSet rs = source.getResultSet(strQuery) ;\r
+ \r
+ int oldTaxonId = -1;\r
+ TaxonDescription oldDescription = null;\r
+ int i = 0;\r
+ int countDescriptions = 0;\r
+ int countDistributions = 0;\r
+ //for each reference\r
+ while (rs.next()){\r
+ \r
+ if ((i++ % modCount) == 0 && i!= 1 ){ logger.info("Facts handled: " + (i-1));}\r
+ \r
+ int occurrenceId = rs.getInt("OccurrenceId");\r
+ int newTaxonId = rs.getInt("RIdentifier");\r
+ String tdwgCodeString = rs.getString("TDWGCode");\r
+ Integer emStatusId = (Integer)rs.getObject("emOccurSumCatId");\r
+ \r
+ try {\r
+ //status\r
+ PresenceAbsenceTermBase<?> status = null;\r
+ if (emStatusId != null){\r
+ status = FaunaEuropaeaTransformer.occStatus2PresenceAbsence(emStatusId);\r
+ }\r
+ \r
+ //Create area list\r
+ List<NamedArea> tdwgAreas = new ArrayList<NamedArea>();\r
+ if (tdwgCodeString != null){\r
+ String[] tdwgCodes = tdwgCodeString.split(";");\r
+ for (String tdwgCode : tdwgCodes){\r
+ NamedArea tdwgArea = TdwgArea.getAreaByTdwgAbbreviation(tdwgCode.trim());\r
+ if (tdwgArea != null){\r
+ tdwgAreas.add(tdwgArea);\r
+ }\r
+ }\r
+ }\r
+ \r
+ //create description(elements)\r
+ TaxonDescription taxonDescription = getTaxonDescription(newTaxonId, oldTaxonId, oldDescription, taxonMap, occurrenceId);\r
+ for (NamedArea tdwgArea : tdwgAreas){\r
+ Distribution distribution = Distribution.NewInstance(tdwgArea, status);\r
+ if (taxonDescription != null) { \r
+ if (checkIsNoDuplicate(taxonDescription , distribution)){\r
+ taxonDescription.addElement(distribution); \r
+ countDistributions++; \r
+ if (taxonDescription != oldDescription){ \r
+ taxonStore.add(taxonDescription.getTaxon()); \r
+ oldDescription = taxonDescription; \r
+ countDescriptions++; \r
+ } \r
+ }else{\r
+ logger.debug("Distribution is duplicate");\r
+ }\r
+ } else { \r
+ logger.warn("Distribution " + tdwgArea.toString() + " ignored"); \r
+ }\r
+ }\r
+ \r
+ } catch (UnknownCdmTypeException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+\r
+// TODO\r
+// sources\r
+// references\r
+ }\r
+\r
+ logger.info("Distributions: " + countDistributions + ", Descriptions: " + countDescriptions );\r
+ logger.warn("Unmatched occurrences: " + (i - countDescriptions));\r
+ logger.info("Taxa to save: " + taxonStore.size());\r
+ getTaxonService().saveTaxonAll(taxonStore); \r
+ \r
+ logger.info("end make occurrences ...");\r
+ return true;\r
+ } catch (SQLException e) {\r
+ logger.error("SQLException:" + e);\r
+ return false;\r
+ }\r
+\r
+ }\r
+\r
+ \r
+ /**\r
+ * Tests if a distribution with the same tdwgArea and the same status already exists in the description\r
+ * Returns false, if a duplicate exists. True otherwise\r
+ * @param description\r
+ * @param tdwgArea\r
+ * @return\r
+ */\r
+ private boolean checkIsNoDuplicate(TaxonDescription description, Distribution distribution){\r
+ for (DescriptionElementBase descElBase : description.getElements()){\r
+ if (descElBase.isInstanceOf(Distribution.class)){\r
+ Distribution oldDistr = HibernateProxyHelper.deproxy(descElBase, Distribution.class);\r
+ NamedArea oldArea = oldDistr.getArea();\r
+ if (oldArea != null && oldArea.equals(distribution.getArea())){\r
+ PresenceAbsenceTermBase<?> oldStatus = oldDistr.getStatus();\r
+ if (oldStatus != null && oldStatus.equals(distribution.getStatus())){\r
+ return false;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return true;\r
+ }\r
+ \r
+ /**\r
+ * Use same TaxonDescription if two records belong to the same taxon \r
+ * @param newTaxonId\r
+ * @param oldTaxonId\r
+ * @param oldDescription\r
+ * @param taxonMap\r
+ * @return\r
+ */\r
+ private TaxonDescription getTaxonDescription(int newTaxonId, int oldTaxonId, TaxonDescription oldDescription, MapWrapper<TaxonBase> taxonMap, int occurrenceId){\r
+ TaxonDescription result = null;\r
+ if (oldDescription == null || newTaxonId != oldTaxonId){\r
+ TaxonBase taxonBase = taxonMap.get(newTaxonId);\r
+ //TODO for testing\r
+ //TaxonBase taxonBase = Taxon.NewInstance(BotanicalName.NewInstance(Rank.SPECIES()), null);\r
+ Taxon taxon;\r
+ if ( taxonBase instanceof Taxon ) {\r
+ taxon = (Taxon) taxonBase;\r
+ } else if (taxonBase != null) {\r
+ logger.warn("TaxonBase for Occurrence " + occurrenceId + " was not of type Taxon but: " + taxonBase.getClass().getSimpleName());\r
+ return null;\r
+ } else {\r
+ logger.warn("TaxonBase for Occurrence " + occurrenceId + " is null.");\r
+ return null;\r
+ }\r
+ \r
+ result = TaxonDescription.NewInstance();\r
+ taxon.addDescription(result);\r
+ //TODO add source title as title (or reference at least)\r
+ //result.setTitleCache("");\r
+ }else{\r
+ result = oldDescription;\r
+ }\r
+ return result;\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IImportConfigurator config){\r
+ return ! config.isDoOccurrence();\r
+ }\r
+ \r
+}\r
--- /dev/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.faunaEuropaea;\r
+\r
+import java.sql.ResultSet;\r
+import java.sql.ResultSetMetaData;\r
+import java.sql.SQLException;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.io.common.CdmIoBase;\r
+import eu.etaxonomy.cdm.io.common.ICdmIO;\r
+import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.ImportHelper;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.common.Annotation;\r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
+import eu.etaxonomy.cdm.model.common.Language;\r
+\r
+/**\r
+ * @author a.babadshanjan\r
+ * @created 11.05.2009\r
+ * @version 1.0\r
+ */\r
+public abstract class FaunaEuropaeaImportBase extends CdmIoBase<IImportConfigurator> implements ICdmIO<IImportConfigurator> {\r
+ private static final Logger logger = Logger.getLogger(FaunaEuropaeaImportBase.class);\r
+ \r
+ public FaunaEuropaeaImportBase() {\r
+ }\r
+ \r
+ protected boolean resultSetHasColumn(ResultSet rs, String columnName){\r
+ try {\r
+ ResultSetMetaData metaData = rs.getMetaData();\r
+ for (int i = 0; i < metaData.getColumnCount(); i++){\r
+ if (metaData.getColumnName(i + 1).equalsIgnoreCase(columnName)){\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ } catch (SQLException e) {\r
+ logger.warn("Exception in resultSetHasColumn");\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ protected boolean checkSqlServerColumnExists(Source source, String tableName, String columnName){\r
+ String strQuery = "SELECT Count(t.id) as n " +\r
+ " FROM sysobjects AS t " +\r
+ " INNER JOIN syscolumns AS c ON t.id = c.id " +\r
+ " WHERE (t.xtype = 'U') AND " + \r
+ " (t.name = '" + tableName + "') AND " + \r
+ " (c.name = '" + columnName + "')";\r
+ ResultSet rs = source.getResultSet(strQuery) ; \r
+ int n;\r
+ try {\r
+ rs.next();\r
+ n = rs.getInt("n");\r
+ return n>0;\r
+ } catch (SQLException e) {\r
+ e.printStackTrace();\r
+ return false;\r
+ }\r
+ \r
+ }\r
+ \r
+ /**\r
+ * Returns a map that holds all values of a ResultSet. This is needed if a value needs to\r
+ * be accessed twice\r
+ * @param rs\r
+ * @return\r
+ * @throws SQLException\r
+ */\r
+ protected Map<String, Object> getValueMap(ResultSet rs) throws SQLException{\r
+ try{\r
+ Map<String, Object> valueMap = new HashMap<String, Object>();\r
+ int colCount = rs.getMetaData().getColumnCount();\r
+ for (int c = 0; c < colCount ; c++){\r
+ Object value = rs.getObject(c+1);\r
+ String label = rs.getMetaData().getColumnLabel(c+1).toLowerCase();\r
+ if (value != null && ! CdmUtils.Nz(value.toString()).trim().equals("")){\r
+ valueMap.put(label, value);\r
+ }\r
+ }\r
+ return valueMap;\r
+ }catch(SQLException e){\r
+ throw e;\r
+ }\r
+ }\r
+ \r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2008 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
+package eu.etaxonomy.cdm.io.faunaEuropaea;\r
+\r
+import org.apache.log4j.Logger;\r
+import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.io.berlinModel.BerlinModelImportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
+import eu.etaxonomy.cdm.model.reference.Database;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+\r
+/**\r
+ * @author a.babadshanjan\r
+ * @created 08.05.2009\r
+ * @version 1.0\r
+ */\r
+public class FaunaEuropaeaImportConfigurator extends ImportConfiguratorBase implements IImportConfigurator {\r
+\r
+ private static final Logger logger = Logger.getLogger(FaunaEuropaeaImportConfigurator.class);\r
+ \r
+ @SuppressWarnings("unchecked")\r
+ protected void makeIoClassList() {\r
+ ioClassList = new Class[] {\r
+// FaunaEuropaeaAuthorImport.class,\r
+ FaunaEuropaeaTaxonImport.class,\r
+ FaunaEuropaeaDistributionImport.class\r
+ };\r
+ };\r
+ \r
+ public static FaunaEuropaeaImportConfigurator NewInstance(Source source, ICdmDataSource destination){\r
+ return new FaunaEuropaeaImportConfigurator(source, destination);\r
+}\r
+ \r
+ private FaunaEuropaeaImportConfigurator(Source source, ICdmDataSource destination) {\r
+ setSource(source);\r
+ setDestination(destination);\r
+ setNomenclaturalCode(NomenclaturalCode.ICBN);\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSource()\r
+ */\r
+ public Source getSource() {\r
+ return (Source)super.getSource();\r
+ }\r
+ \r
+ /**\r
+ * @param dbSource\r
+ */\r
+ public void setSource(Source dbSource) {\r
+ super.setSource(dbSource);\r
+ }\r
+\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()\r
+ */\r
+ @Override\r
+ public ReferenceBase getSourceReference() {\r
+ //TODO\r
+ if (this.sourceReference == null){\r
+ logger.warn("getSource Reference not yet fully implemented");\r
+ sourceReference = Database.NewInstance();\r
+ sourceReference.setTitleCache("Fauna Europaea data import");\r
+ }\r
+ return sourceReference;\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getSourceNameString()\r
+ */\r
+ public String getSourceNameString() {\r
+ if (this.getSource() == null){\r
+ return null;\r
+ }else{\r
+ return this.getSource().toString();\r
+ }\r
+ }\r
+ \r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2008 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
+package eu.etaxonomy.cdm.io.faunaEuropaea;\r
+\r
+import java.io.FileNotFoundException;\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Set;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.springframework.stereotype.Component;\r
+import org.springframework.transaction.TransactionStatus;\r
+\r
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
+import eu.etaxonomy.cdm.api.service.config.impl.IdentifiableServiceConfiguratorImpl;\r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.common.ExcelUtils;\r
+import eu.etaxonomy.cdm.io.common.CdmIoBase;\r
+import eu.etaxonomy.cdm.io.common.ICdmIO;\r
+import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.MapWrapper;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.Distribution;\r
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
+import eu.etaxonomy.cdm.model.description.PresenceTerm;\r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
+import eu.etaxonomy.cdm.model.location.TdwgArea;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
+\r
+/**\r
+ * @author a.babadshanjan\r
+ * @created 08.05.2009\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class FaunaEuropaeaImporter extends CdmIoBase<IImportConfigurator> implements ICdmIO<IImportConfigurator> {\r
+\r
+ private static final Logger logger = Logger.getLogger(FaunaEuropaeaImporter.class);\r
+ \r
+ @Override\r
+ protected boolean doInvoke(IImportConfigurator config,\r
+ Map<String, MapWrapper<? extends CdmBase>> stores) {\r
+ \r
+ if (logger.isDebugEnabled()) { logger.debug("Importing Fauna Europaea data"); }\r
+ \r
+ return true;\r
+ }\r
+ \r
+\r
+ @Override\r
+ protected boolean doCheck(IImportConfigurator config) {\r
+ boolean result = true;\r
+ logger.warn("No check implemented for Fauna Europaea data import");\r
+ return result;\r
+ }\r
+ \r
+\r
+ @Override\r
+ protected boolean isIgnore(IImportConfigurator config) {\r
+ return false;\r
+ }\r
+\r
+}\r
--- /dev/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.faunaEuropaea;\r
+\r
+import static eu.etaxonomy.cdm.io.faunaEuropaea.FaunaEuropaeaTransformer.T_STATUS_ACCEPTED;\r
+import static eu.etaxonomy.cdm.io.faunaEuropaea.FaunaEuropaeaTransformer.T_STATUS_NOT_ACCEPTED;\r
+\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.util.Map;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.springframework.stereotype.Component;\r
+\r
+import eu.etaxonomy.cdm.io.berlinModel.CdmOneToManyMapper;\r
+import eu.etaxonomy.cdm.io.berlinModel.CdmStringMapper;\r
+import eu.etaxonomy.cdm.io.common.CdmAttributeMapperBase;\r
+import eu.etaxonomy.cdm.io.common.CdmSingleAttributeMapperBase;\r
+import eu.etaxonomy.cdm.io.common.ICdmIO;\r
+import eu.etaxonomy.cdm.io.common.IImportConfigurator;\r
+import eu.etaxonomy.cdm.io.common.ImportHelper;\r
+import eu.etaxonomy.cdm.io.common.MapWrapper;\r
+import eu.etaxonomy.cdm.io.common.Source;\r
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
+import eu.etaxonomy.cdm.model.reference.PublicationBase;\r
+import eu.etaxonomy.cdm.model.reference.Publisher;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;\r
+\r
+\r
+/**\r
+ * @author a.babadshanjan\r
+ * @created 12.05.2009\r
+ * @version 1.0\r
+ */\r
+@Component\r
+public class FaunaEuropaeaTaxonImport extends FaunaEuropaeaImportBase {\r
+ private static final Logger logger = Logger.getLogger(FaunaEuropaeaTaxonImport.class);\r
+\r
+ private int modCount = 10000;\r
+ \r
+ public FaunaEuropaeaTaxonImport(){\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ @Override\r
+ protected boolean doCheck(IImportConfigurator config){\r
+ boolean result = true;\r
+ FaunaEuropaeaImportConfigurator fauEuConfig = (FaunaEuropaeaImportConfigurator)config;\r
+ logger.warn("Checking for Taxa not yet fully implemented");\r
+ result &= checkTaxonStatus(fauEuConfig);\r
+ \r
+ return result;\r
+ }\r
+ \r
+ private boolean checkTaxonStatus(FaunaEuropaeaImportConfigurator fauEuConfig){\r
+ boolean result = true;\r
+// try {\r
+ Source source = fauEuConfig.getSource();\r
+ String sqlStr = "";\r
+ ResultSet rs = source.getResultSet(sqlStr);\r
+ return result;\r
+// } catch (SQLException e) {\r
+// e.printStackTrace();\r
+// return false;\r
+// }\r
+ }\r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doInvoke(eu.etaxonomy.cdm.io.common.IImportConfigurator, eu.etaxonomy.cdm.api.application.CdmApplicationController, java.util.Map)\r
+ */\r
+ @Override\r
+ protected boolean doInvoke(IImportConfigurator config, \r
+ Map<String, MapWrapper<? extends CdmBase>> stores){ \r
+ \r
+ boolean success = true;\r
+ //make not needed maps empty\r
+ MapWrapper<TeamOrPersonBase<?>> authorMap = (MapWrapper<TeamOrPersonBase<?>>)stores.get(ICdmIO.AUTHOR_STORE);\r
+ authorMap.makeEmpty();\r
+\r
+ \r
+ MapWrapper<TaxonNameBase<?,?>> taxonNameMap = (MapWrapper<TaxonNameBase<?,?>>)stores.get(ICdmIO.TAXONNAME_STORE);\r
+ MapWrapper<ReferenceBase> referenceMap = (MapWrapper<ReferenceBase>)stores.get(ICdmIO.REFERENCE_STORE);\r
+ MapWrapper<ReferenceBase> nomRefMap = (MapWrapper<ReferenceBase>)stores.get(ICdmIO.NOMREF_STORE);\r
+ MapWrapper<TaxonBase> taxonMap = (MapWrapper<TaxonBase>)stores.get(ICdmIO.TAXON_STORE);\r
+ \r
+ FaunaEuropaeaImportConfigurator fauEuConfig = (FaunaEuropaeaImportConfigurator)config;\r
+ Source source = fauEuConfig.getSource();\r
+ \r
+ logger.info("start make Taxa ...");\r
+ \r
+ String namespace = "Taxon";\r
+ \r
+ try {\r
+ //get data from database\r
+ String strQuery = \r
+ " SELECT Taxon.*, rank.* " + \r
+ " FROM dbo.Taxon INNER JOIN dbo.rank ON dbo.Taxon.TAX_RNK_ID = dbo.rank.rnk_id " +\r
+ " WHERE (1=1)";\r
+ \r
+// " SELECT Taxon.*, dbo.rank.rnk_id " + \r
+// " FROM dbo.Taxon INNER JOIN dbo.rank ON dbo.Taxon.TAX_RNK_ID = dbo.rank.rnk_id " +\r
+// " WHERE (1=1)";\r
+ \r
+ ResultSet rs = source.getResultSet(strQuery) ;\r
+ \r
+ int i = 0;\r
+ while (rs.next()){\r
+ \r
+ if ((i++ % modCount) == 0 && i!= 1 ){ logger.info("Taxa handled: " + (i-1)); }\r
+ \r
+ //create TaxonName element\r
+ int taxonId = rs.getInt("TAX_ID");\r
+ //int statusFk = rs.getInt("statusFk");\r
+ \r
+ String taxonName = rs.getString("TAX_NAME");\r
+ int statusFk = rs.getInt("TAX_VALID");\r
+ int rankId = rs.getInt("rnk_id");\r
+ Rank rank = null;\r
+ \r
+ try {\r
+ rank = FaunaEuropaeaTransformer.rankId2Rank(rs, false);\r
+ } catch (UnknownCdmTypeException e) {\r
+ logger.warn("Taxon (" + taxonId + ") has unknown rank (" + rankId + ") and could not be saved.");\r
+ success = false; \r
+ }\r
+ \r
+ ReferenceBase<?> reference = null;\r
+// if (referenceMap != null){\r
+// //int refFk = rs.getInt("PTRefFk");\r
+// if ()\r
+// reference = referenceMap.get(refFk);\r
+// if (reference == null){\r
+// reference = nomRefMap.get(refFk);\r
+// }\r
+// }\r
+ \r
+ ZoologicalName zooName = ZoologicalName.NewInstance(rank);\r
+ zooName.setNameCache(taxonName);\r
+ \r
+ TaxonBase<?> taxonBase;\r
+ Synonym synonym;\r
+ Taxon taxon;\r
+ try {\r
+ logger.debug(statusFk);\r
+ if (statusFk == T_STATUS_ACCEPTED) {\r
+ taxon = Taxon.NewInstance(zooName, reference);\r
+ taxonBase = taxon;\r
+ } else if (statusFk == T_STATUS_NOT_ACCEPTED) {\r
+ synonym = Synonym.NewInstance(zooName, reference);\r
+ taxonBase = synonym;\r
+ } else {\r
+ logger.warn("Taxon status " + statusFk + " not yet implemented. Taxon (" + taxonId + ") ignored.");\r
+ continue;\r
+ }\r
+ \r
+ \r
+ //nameId\r
+ ImportHelper.setOriginalSource(taxonBase, fauEuConfig.getSourceReference(), taxonId, namespace);\r
+\r
+ taxonMap.put(taxonId, taxonBase);\r
+ \r
+ } catch (Exception e) {\r
+ logger.warn("An exception occurred when creating taxon with id " + taxonId + ". Taxon could not be saved.");\r
+ }\r
+ }\r
+ //invokeRelations(source, cdmApp, deleteAll, taxonMap, referenceMap);\r
+ logger.info("saving taxa ...");\r
+ getTaxonService().saveTaxonAll(taxonMap.objects());\r
+ \r
+ logger.info("end making taxa ...");\r
+ \r
+ return true;\r
+ } catch (SQLException e) {\r
+ logger.error("SQLException:" + e);\r
+ return false;\r
+ }\r
+\r
+ }\r
+\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)\r
+ */\r
+ protected boolean isIgnore(IImportConfigurator config){\r
+ return ! config.isDoTaxa();\r
+ }\r
+\r
+}\r
--- /dev/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.faunaEuropaea;\r
+\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.springframework.stereotype.Component;\r
+\r
+import eu.etaxonomy.cdm.common.ResultWrapper;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
+import eu.etaxonomy.cdm.model.description.PresenceTerm;\r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
+import eu.etaxonomy.cdm.model.location.TdwgArea;\r
+import eu.etaxonomy.cdm.model.name.HybridRelationshipType;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\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
+ //TaxonStatus\r
+ public static int T_STATUS_ACCEPTED = 1;\r
+ public static int T_STATUS_NOT_ACCEPTED = 0;\r
+ \r
+ private static Map<String, String> tdwgAreas = null;\r
+\r
+ public static PresenceAbsenceTermBase<?> occStatus2PresenceAbsence (int occStatusId) throws UnknownCdmTypeException{\r
+ switch (occStatusId){\r
+ case 0: return null;\r
+ case 110: return PresenceTerm.CULTIVATED_REPORTED_IN_ERROR();\r
+ case 120: return PresenceTerm.CULTIVATED();\r
+ case 210: return PresenceTerm.INTRODUCED_REPORTED_IN_ERROR();\r
+ case 220: return PresenceTerm.INTRODUCED_PRESENCE_QUESTIONABLE();\r
+ case 230: return PresenceTerm.INTRODUCED_FORMERLY_INTRODUCED();\r
+ case 240: return PresenceTerm.INTRODUCED_DOUBTFULLY_INTRODUCED();\r
+ case 250: return PresenceTerm.INTRODUCED();\r
+ case 260: return PresenceTerm.INTRODUCED_UNCERTAIN_DEGREE_OF_NATURALISATION();\r
+ case 270: return PresenceTerm.INTRODUCED_ADVENTITIOUS();\r
+ case 280: return PresenceTerm.INTRODUCED_NATURALIZED();\r
+ case 310: return PresenceTerm.NATIVE_REPORTED_IN_ERROR();\r
+ case 320: return PresenceTerm.NATIVE_PRESENCE_QUESTIONABLE();\r
+ case 330: return PresenceTerm.NATIVE_FORMERLY_NATIVE();\r
+ case 340: return PresenceTerm.NATIVE_DOUBTFULLY_NATIVE();\r
+ case 350: return PresenceTerm.NATIVE();\r
+ case 999: {\r
+ logger.warn("endemic for EM can not be transformed in legal status");\r
+ //TODO preliminary\r
+ return PresenceTerm.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 + ", " + rankLatinName + ", " + rankCategory);\r
+ }\r
+\r
+ try {\r
+ result = Rank.getRankByNameOrAbbreviation(rankName);\r
+ } catch (UnknownCdmTypeException e1) {\r
+\r
+ switch (rankId) {\r
+ case 0: return null;\r
+ case 1: return Rank.KINGDOM();\r
+ case 2: return Rank.SUBKINGDOM();\r
+ case 3: return Rank.SUPERPHYLUM();\r
+ case 4: return Rank.PHYLUM();\r
+ case 5: return Rank.SUBPHYLUM();\r
+ case 6: return Rank.INFRAPHYLUM();\r
+ case 7: return Rank.CLASS();\r
+ case 8: return Rank.SUBCLASS();\r
+ case 9: return Rank.INFRACLASS();\r
+ case 10: return Rank.SUPERORDER();\r
+ case 11: return Rank.ORDER();\r
+ case 12: return Rank.SUBORDER();\r
+ case 13: return Rank.INFRAORDER();\r
+ case 14: return Rank.SUPERFAMILY();\r
+ case 15: return Rank.FAMILY();\r
+ case 16: return Rank.SUBFAMILY();\r
+ case 17: return Rank.TRIBE();\r
+ case 18: return Rank.SUBTRIBE();\r
+ case 19: return Rank.GENUS();\r
+ case 20: return Rank.SUBGENUS();\r
+ case 21: return Rank.SPECIES();\r
+ case 22: 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 (ResultSet rs, boolean useUnknown) throws UnknownCdmTypeException {\r
+ \r
+ NamedArea tdwgArea = null;\r
+ \r
+ try {\r
+ int areaId = rs.getInt("ara_id");\r
+ String areaName = rs.getString("ara_name");\r
+ String areaCode = rs.getString("ara_code");\r
+ int extraLimital = rs.getInt("ara_extralimital");\r
+ \r
+ //TODO: Verify mappings with comments. Are those the best matches?\r
+ \r
+ if (areaCode.equals("AD")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("SPA-AN");\r
+ else if (areaCode.equals("AFR")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("24"); // Afro-tropical region - Northeast Tropical Africa\r
+ else if (areaCode.equals("AL")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("ALB-OO");\r
+ else if (areaCode.equals("AT")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("AUT-AU");\r
+ else if (areaCode.equals("AUS")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("50"); // Australian region - Australia\r
+ else if (areaCode.equals("BA")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("YUG-BH"); \r
+ else if (areaCode.equals("BE")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("BGM-BE");\r
+ else if (areaCode.equals("BG")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("BUL-OO");\r
+ else if (areaCode.equals("BY")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("BLR-OO");\r
+ else if (areaCode.equals("CH")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("SWI-OO");\r
+ else if (areaCode.equals("CY")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("CYP-OO");\r
+ else if (areaCode.equals("CZ")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("CZE-CZ");\r
+ else if (areaCode.equals("DE")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("GER-OO");\r
+ else if (areaCode.equals("DK-DEN")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("DEN-OO");\r
+ else if (areaCode.equals("DK-FOR")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("FOR-OO");\r
+ else if (areaCode.equals("EE")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("BLT-ES");\r
+ else if (areaCode.equals("EPA")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("Palaearctic");\r
+ else if (areaCode.equals("ES-BAL")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("BLT-ES");\r
+ else if (areaCode.equals("ES-CNY")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("CNY-OO");\r
+ else if (areaCode.equals("ES-SPA")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("SPA-SP");\r
+ else if (areaCode.equals("FI")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("FIN-OO");\r
+ else if (areaCode.equals("FR-COR")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("COR-OO");\r
+ else if (areaCode.equals("FR-FRA")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("FRA-FR");\r
+ else if (areaCode.equals("GB-CI")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("FRA-CI");\r
+ else if (areaCode.equals("GB-GI")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("SPA-GI");\r
+ else if (areaCode.equals("GB-GRB")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("GRB-OO");\r
+ else if (areaCode.equals("GB-NI")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("IRE-NI");\r
+ else if (areaCode.equals("GR-AEG")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("EAI-OO"); // North Aegean Is. - East Aegean Is.\r
+ else if (areaCode.equals("GR-CYC")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("GRC-OO"); // Cyclades Is. - Greece\r
+ else if (areaCode.equals("GR-DOD")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("EAI-OO"); // Dodecanese Is. - East Aegean Is.\r
+ else if (areaCode.equals("GR-GRC")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("GRC-OO");\r
+ else if (areaCode.equals("GR-KRI")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("KRI-OO");\r
+ else if (areaCode.equals("HR")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("YUG-CR");\r
+ else if (areaCode.equals("HU")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("HUN-OO");\r
+ else if (areaCode.equals("IE")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("IRE-IR");\r
+ else if (areaCode.equals("IS")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("ICE-OO");\r
+ else if (areaCode.equals("IT-ITA")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("ITA-IT");\r
+ else if (areaCode.equals("IT-SAR")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("SAR-OO");\r
+ else if (areaCode.equals("IT-SI")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("SIC-SI");\r
+ else if (areaCode.equals("LI")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("AUT-LI");\r
+ else if (areaCode.equals("LT")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("BLT-LI");\r
+ else if (areaCode.equals("LU")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("BGM-LU");\r
+ else if (areaCode.equals("LV")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("BLT-LA");\r
+ else if (areaCode.equals("MC")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("FRA-MO");\r
+ else if (areaCode.equals("MD")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("UKR-MO");\r
+ else if (areaCode.equals("MK")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("YUG-MA");\r
+ else if (areaCode.equals("MT")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("SIC-MA");\r
+ else if (areaCode.equals("NAF")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("20"); // North Africa - Northern Africa\r
+ else if (areaCode.equals("NEA")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("7"); // Nearctic region - Northern America\r
+ else if (areaCode.equals("NEO")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("8"); // Neotropical region - Southern America\r
+else if (areaCode.equals("NL")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("NET-OO");\r
+ else if (areaCode.equals("NO-NOR")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("NOR-OO");\r
+ else if (areaCode.equals("NO-SVA")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("SVA-OO");\r
+ else if (areaCode.equals("NRE")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("34"); // Near East - Western Asia\r
+ else if (areaCode.equals("ORR")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("35"); // Oriental region - Arabian Peninsula\r
+ else if (areaCode.equals("PL")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("POL-OO");\r
+ else if (areaCode.equals("PT-AZO")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("AZO-OO");\r
+ else if (areaCode.equals("PT-MDR")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("MDR-OO");\r
+ else if (areaCode.equals("PT-POR")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("POR-OO");\r
+ else if (areaCode.equals("PT-SEL")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("SEL-OO");\r
+ else if (areaCode.equals("RO")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("ROM-OO");\r
+ else if (areaCode.equals("RU-FJL")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("WSB-OO");\r
+ else if (areaCode.equals("RU-KGD")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("BLT-KA");\r
+ else if (areaCode.equals("RU-NOZ")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("WSB-OO");\r
+ else if (areaCode.equals("RU-RUC")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("RUC-OO");\r
+ else if (areaCode.equals("RU-RUE")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("RUE-OO");\r
+ else if (areaCode.equals("RU-RUN")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("RUN-OO");\r
+ else if (areaCode.equals("RU-RUS")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("RUS-OO");\r
+ else if (areaCode.equals("RU-RUW")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("RUW-OO");\r
+ else if (areaCode.equals("SE")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("SWE-OO");\r
+ else if (areaCode.equals("SI")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("YUG-SL");\r
+ else if (areaCode.equals("SK")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("CZE-SL");\r
+ else if (areaCode.equals("SM")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("ITA-SM");\r
+ else if (areaCode.equals("TR-TUE")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("TUE-OO");\r
+ else if (areaCode.equals("UA")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("UKR-UK");\r
+ else if (areaCode.equals("VA")) tdwgArea = TdwgArea.getAreaByTdwgAbbreviation("ITA-VC");\r
+ else if (areaCode.equals("YU")) tdwgArea = TdwgArea.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 (SQLException e) {\r
+ e.printStackTrace();\r
+ logger.warn("Exception occurred. Area could not be mapped.");\r
+ return null;\r
+ } \r
+ \r
+ return tdwgArea;\r
+ }\r
+ \r
+}\r