correcting utf8 chars
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / erms / ErmsTransformer.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.cdm.io.erms;
12
13 import java.util.HashSet;
14 import java.util.Set;
15 import java.util.UUID;
16
17 import org.apache.log4j.Logger;
18
19 import eu.etaxonomy.cdm.common.CdmUtils;
20 import eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase;
21 import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;
22 import eu.etaxonomy.cdm.model.common.ExtensionType;
23 import eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase;
24 import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;
25 import eu.etaxonomy.cdm.model.common.Language;
26 import eu.etaxonomy.cdm.model.description.Feature;
27 import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
28 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
29
30 /**
31 * @author a.mueller
32 * @created 01.03.2010
33 * @version 1.0
34 */
35 public final class ErmsTransformer extends InputTransformerBase {
36 private static final Logger logger = Logger.getLogger(ErmsTransformer.class);
37
38 public static final int SOURCE_USE_ORIGINAL_DESCRIPTION = 1;
39 public static final int SOURCE_USE_BASIS_OF_RECORD = 2;
40 public static final int SOURCE_USE_ADDITIONAL_SOURCE = 3;
41 public static final int SOURCE_USE_SOURCE_OF_SYNONYMY = 4;
42 public static final int SOURCE_USE_REDESCRIPTION = 5;
43 public static final int SOURCE_USE_NEW_COMBINATION_REFERENCE = 6;
44 public static final int SOURCE_USE_STATUS_SOURCE = 7;
45 public static final int SOURCE_USE_EMENDATION = 8;
46
47 //language uuids
48 public static final UUID uuidEuropeanMarineWaters = UUID.fromString("47389e42-3b3c-4873-bded-ac030db86462");
49 public static final UUID uuidMediterraneanSea = UUID.fromString("bde8a624-23c4-4ac3-b381-11287f5d656a");
50 public static final UUID uuidWhiteSea = UUID.fromString("bf14bfb6-8925-4696-911c-56d3e90d4491");
51 public static final UUID uuidNorthSea = UUID.fromString("d5ea2d46-ed97-4996-8702-0619231626b6");
52 public static final UUID uuidBalticSea = UUID.fromString("0031cda2-4b27-49de-afa3-fdec75ee5060");
53 public static final UUID uuidBlackSea = UUID.fromString("1f110909-7462-4ee8-a7ff-9f976701dd1d");
54 public static final UUID uuidBarentsSea = UUID.fromString("b6fd9a4d-0ad0-4481-a0b4-5dd71c8fda8b");
55 public static final UUID uuidCaspianSea = UUID.fromString("0d3c3850-0cec-48d0-ac0d-9cbcc2c60552");
56 public static final UUID uuidPortugueseExclusiveEconomicZone = UUID.fromString("642336f3-41cb-4546-9a1c-ffeccbad2ef5");
57 public static final UUID uuidBelgianExclusiveEconomicZone = UUID.fromString("02138b0f-cee1-4c56-ae12-72a5b36839af");
58 public static final UUID uuidFrenchExclusiveEconomicZone = UUID.fromString("9f6a61c0-c329-4a61-a47a-f5f383737c36");
59 public static final UUID uuidEnglishChannel = UUID.fromString("3ed96112-bb4a-47df-b489-2c198d6f0fd2");
60 public static final UUID uuidAdriaticSea = UUID.fromString("da376165-f970-4f0c-99db-773686d66591");
61 public static final UUID uuidBiscayBay = UUID.fromString("1461cf85-e0b4-4ac3-bdf5-efe6053af174");
62 public static final UUID uuidDutchExclusiveEconomicZone = UUID.fromString("a1bd019e-e2af-41c8-a5e4-c7245b575759");
63 public static final UUID uuidUnitedKingdomExclusiveEconomicZone = UUID.fromString("18ab29c0-3104-4102-ada8-6711fcdbdbb8");
64 public static final UUID uuidSpanishExclusiveEconomicZone = UUID.fromString("68c2823a-2173-4c31-89e8-bc1439abf448");
65 public static final UUID uuidEgyptianExclusiveEconomicZone = UUID.fromString("e542bcfd-0ff1-49ac-a6ae-c0b3db39e560");
66 public static final UUID uuidGrecianExclusiveEconomicZone = UUID.fromString("1d14857c-30be-4d3a-bae9-8e79da0d9d1d");
67 public static final UUID uuidTirrenoSea = UUID.fromString("6e4f8a9d-ca6e-4b23-9211-446fac35a052");
68 public static final UUID uuidIcelandicExclusiveEconomicZone = UUID.fromString("a121a8fb-6287-4661-9228-0816affdf3f5");
69 public static final UUID uuidIrishExclusiveeconomicZone = UUID.fromString("c8fe2626-53d2-4eaa-962b-99662470b96e");
70 public static final UUID uuidIrishSea = UUID.fromString("9e972ad5-b153-419e-ab7e-935b93ff881b");
71 public static final UUID uuidItalianExclusiveEconomicZone = UUID.fromString("10557c6f-a33f-443a-ad8b-cd31c105bddd");
72 public static final UUID uuidNorwegianSea = UUID.fromString("c6c44372-a963-41b2-8c12-a0b46425c523");
73 public static final UUID uuidMoroccanExclusiveEconomicZone = UUID.fromString("e62e5cc2-922f-4807-abd6-1b4bffbced49");
74 public static final UUID uuidNorwegianExclusiveEconomicZone = UUID.fromString("bd317f3e-9719-4943-ae3e-19ff0c9761be");
75 public static final UUID uuidSkagerrak = UUID.fromString("5f63ece2-d112-4b39-80a0-bffb6c78654c");
76 public static final UUID uuidTunisianExclusiveEconomicZone = UUID.fromString("b5972b59-6a36-45ea-88f7-0c520c99b99d");
77 public static final UUID uuidWaddenSea = UUID.fromString("ae0c4555-8e19-479d-8a4f-e1b62939c09b");
78 public static final UUID uuidBeltSea = UUID.fromString("780f4144-f157-45e8-ae42-cacb3ec369ba");
79 public static final UUID uuidMarmaraSea = UUID.fromString("3db5d470-3265-4187-ba5a-01ecfb94ce6e");
80 public static final UUID uuidSeaofAzov = UUID.fromString("5b02cb7e-8a83-446c-af47-936a2ea31a8a");
81 public static final UUID uuidAegeanSea = UUID.fromString("65d6c443-225f-4ac0-9c86-da51502b46df");
82 public static final UUID uuidBulgarianExclusiveEconomicZone = UUID.fromString("13e5aa21-3971-4d06-bc34-ed75a31c2f66");
83 public static final UUID uuidSouthBalticproper = UUID.fromString("1c2a672d-4948-455d-9877-42a8da1ff1d0");
84 public static final UUID uuidBalticProper = UUID.fromString("12ddfcad-bf8f-43d8-a772-15ae69d37b20");
85 public static final UUID uuidNorthBalticproper = UUID.fromString("183ec305-1e9e-4cb1-93cc-703bd64de28f");
86 public static final UUID uuidArchipelagoSea = UUID.fromString("d9ea9d63-ec4d-4b01-967d-13f28b09a715");
87 public static final UUID uuidBothnianSea = UUID.fromString("926f7fa3-b0a4-4763-85eb-4c3804a72333");
88 public static final UUID uuidGermanExclusiveEconomicZone = UUID.fromString("a6dbea03-090f-4f5f-bf5e-27a00ab4cc1d");
89 public static final UUID uuidSwedishExclusiveEconomicZone = UUID.fromString("94b0e605-d241-44e1-a301-d8911c34fdef");
90 public static final UUID uuidUkrainianExclusiveEconomicZone = UUID.fromString("b7335968-e34f-412c-91a5-5dc0b73310e7");
91 public static final UUID uuidMadeiranExclusiveEconomicZone = UUID.fromString("c00f442a-4c08-4452-b979-825fa3ff97b2");
92 public static final UUID uuidLebaneseExclusiveEconomicZone = UUID.fromString("d9f7dc8b-9041-4206-bf5f-5226c42a5978");
93 public static final UUID uuidSpanishExclusiveEconomicZoneMediterraneanpart = UUID.fromString("94ccf304-9687-41b6-a14b-019509adb723");
94 public static final UUID uuidEstonianExclusiveEconomicZone = UUID.fromString("ed17f07b-357f-4b4a-9653-3a564fdd32e5");
95 public static final UUID uuidCroatianExclusiveEconomicZone = UUID.fromString("028b045a-b1bd-4a72-a4c2-a3d0473b8257");
96 public static final UUID uuidBalearSea = UUID.fromString("478f30f0-01b1-4772-9d01-3a0a571f41c3");
97 public static final UUID uuidTurkishExclusiveEconomicZone = UUID.fromString("3d552e73-2bf5-4f36-8a91-94fbead970e5");
98 public static final UUID uuidDanishExclusiveEconomicZone = UUID.fromString("53d5a8bd-804b-4cbb-b5ad-f47ff6433db0");
99
100
101 //feature uuids
102 public static final UUID uuidRemark = UUID.fromString("648eab77-8469-4139-bbf4-3fb26ec15864");
103 public static final UUID uuidAdditionalinformation = UUID.fromString("ef00c304-ce33-45ef-9543-0b9336a2b6eb");
104 public static final UUID uuidSpelling = UUID.fromString("536594a1-21a5-4d99-aa46-132bc7b31316");
105 public static final UUID uuidPublicationdate = UUID.fromString("b996b34f-1313-4575-bf46-732676674290");
106 public static final UUID uuidSystematics = UUID.fromString("caac0f7f-f43e-4b7c-b296-ec2d930c4d05");
107 public static final UUID uuidClassification = UUID.fromString("aa9bffd3-1fa8-4bd7-9e25-e2d162177b3d");
108 public static final UUID uuidEnvironment = UUID.fromString("4f8ea10d-2242-443f-9d7d-4ecccdee4953");
109 public static final UUID uuidHabitat = UUID.fromString("b7387877-51e3-4192-b9e4-025a359f4b59");
110 public static final UUID uuidAuthority = UUID.fromString("9c7f8908-2530-4900-8da9-d328f7ac9031");
111 public static final UUID uuidMorphology = UUID.fromString("5be1f948-d85f-497f-a0d5-4e5f3b227274");
112 public static final UUID uuidTaxonomicRemarks = UUID.fromString("cc863aee-8da9-448b-82cd-47e3af942998");
113 public static final UUID uuidNote = UUID.fromString("2c66d35f-c76e-40e0-951b-f2c340e5973f");
114 public static final UUID uuidTaxonomy = UUID.fromString("d5734631-c86b-4212-9b8d-cb62f813e0a0");
115 public static final UUID uuidTaxonomicstatus = UUID.fromString("ffbadab5-a8bc-4fb6-a6b3-d1f2593187ff");
116 public static final UUID uuidStatus = UUID.fromString("fcc50853-bcff-4d0f-bc9a-123d7f175490");
117 public static final UUID uuidRank = UUID.fromString("cabada57-a098-47fc-929f-31c8c910f6cf");
118 public static final UUID uuidHomonymy = UUID.fromString("2791a14f-49b2-417f-a248-84c3d022d75f");
119 public static final UUID uuidNomenclature = UUID.fromString("15fe184f-4aab-4076-8bbb-3415d6f1f27f");
120 public static final UUID uuidTypespecies = UUID.fromString("cf674b0d-76e2-4628-952c-2cd06e209c6e");
121 public static final UUID uuidTaxonomicRemark = UUID.fromString("044e7c4e-aab8-4f44-bfa5-0339e7576c74");
122 public static final UUID uuidDateofPublication = UUID.fromString("2a416574-69db-4f80-b9a7-b912d5ed1816");
123 public static final UUID uuidAcknowledgments = UUID.fromString("3b2fd495-3f9a-480e-986a-7643741177da");
124 public static final UUID uuidOriginalpublication = UUID.fromString("ea9b7e53-0487-499f-a281-3d82d10e76dd");
125 public static final UUID uuidTypelocality = UUID.fromString("7c1c5779-2b4b-467b-b2ca-5ca2e029e116");
126 public static final UUID uuidValidity = UUID.fromString("bd066f25-935b-4b4e-a2eb-3fbfcd5e608f");
127 public static final UUID uuidIdentification = UUID.fromString("dec3cd5b-0690-4035-825d-bda9aee96bc1");
128 public static final UUID uuidSynonymy = UUID.fromString("f5c8be5f-8d33-47df-838e-55fc7999fc81");
129
130 //extension type uuids
131 public static final UUID GAZETTEER_UUID = UUID.fromString("dcfa124a-1028-49cd-aea5-fdf9bd396c1a");
132 public static final UUID IMIS_UUID = UUID.fromString("ee2ac2ca-b60c-4e6f-9cad-720fcdb0a6ae");
133 public static final UUID uuidFossilStatus = UUID.fromString("ec3dffbe-a0c8-4d76-845f-5fc166a33d5b");
134 public static final UUID uuidTsn = UUID.fromString("6b0df02b-7278-4ce0-8fc9-0e6523832eb5");
135 public static final UUID uuidDisplayName = UUID.fromString("cd72225d-32c7-4b2d-a973-a95184392690");
136 public static final UUID uuidFuzzyName = UUID.fromString("8870dc69-d3a4-425f-a5a8-093a79f527a8");
137 public static final UUID uuidCredibility = UUID.fromString("909a3886-8744-49dc-b9cc-277378b81b42");
138 public static final UUID uuidCompleteness = UUID.fromString("141f4816-78c0-4da1-8a79-5c9031e6b149");
139 public static final UUID uuidUnacceptReason = UUID.fromString("3883fb79-374d-4120-964b-9666307e3567");
140 public static final UUID uuidQualityStatus = UUID.fromString("4de84c6e-41bd-4a0e-894d-77e9ec3103d2");
141
142
143 public static NomenclaturalCode kingdomId2NomCode(Integer kingdomId){
144 switch (kingdomId){
145 case 1: return null;
146 case 2: return NomenclaturalCode.ICZN; //Animalia
147 case 3: return NomenclaturalCode.ICBN; //Plantae
148 case 4: return NomenclaturalCode.ICBN; //Fungi
149 case 5: return NomenclaturalCode.ICZN ; //Protozoa
150 case 6: return NomenclaturalCode.ICNB ; //Bacteria
151 case 7: return NomenclaturalCode.ICBN; //Chromista
152 case 147415: return NomenclaturalCode.ICNB; //Monera
153 default: return null;
154
155 }
156
157 }
158
159
160
161
162 /* (non-Javadoc)
163 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getNameTypeDesignationStatusByKey(java.lang.String)
164 */
165 @Override
166 public NameTypeDesignationStatus getNameTypeDesignationStatusByKey(String key) throws UndefinedTransformerMethodException {
167 if (key == null){
168 return null;
169 }
170 Integer intDesignationId = Integer.valueOf(key);
171 switch (intDesignationId){
172 case 1: return NameTypeDesignationStatus.ORIGINAL_DESIGNATION();
173 case 2: return NameTypeDesignationStatus.SUBSEQUENT_DESIGNATION();
174 case 3: return NameTypeDesignationStatus.MONOTYPY();
175 default:
176 String warning = "Unknown name type designation status id " + key;
177 logger.warn(warning);
178 return null;
179 }
180 }
181
182
183
184
185 /* (non-Javadoc)
186 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getNameTypeDesignationStatusUuid(java.lang.String)
187 */
188 @Override
189 public UUID getNameTypeDesignationStatusUuid(String key) throws UndefinedTransformerMethodException {
190 //nott needed
191 return super.getNameTypeDesignationStatusUuid(key);
192 }
193
194
195 public Language getLanguageByKey(String ermsAbbrev) throws IllegalArgumentException {
196 Set<String> unhandledLanguages = new HashSet<String>();
197 if (CdmUtils.isEmpty(ermsAbbrev)){return null;
198 }else if (ermsAbbrev.equals("af")){return Language.AFRIKAANS();
199 }else if (ermsAbbrev.equals("al")){return Language.ALEUT();
200 }else if (ermsAbbrev.equals("ar")){return Language.ARABIC();
201 }else if (ermsAbbrev.equals("as")){return Language.ASSAMESE();
202 // }else if (ermsAbbrev.equals("au")){return Language.AUNS(); //??
203 }else if (ermsAbbrev.equals("az")){return Language.AZERBAIJANI();
204 }else if (ermsAbbrev.equals("ba")){return Language.BASQUE();
205 }else if (ermsAbbrev.equals("be")){return Language.BELORUSSIAN();
206 }else if (ermsAbbrev.equals("bg")){return Language.BULGARIAN();
207 }else if (ermsAbbrev.equals("bn")){return Language.BENGALI();
208 }else if (ermsAbbrev.equals("br")){return Language.BRETON();
209 }else if (ermsAbbrev.equals("bu")){return Language.BURMESE();
210 }else if (ermsAbbrev.equals("ca")){return Language.CATALAN_VALENCIAN(); //??? (Catalan)
211 }else if (ermsAbbrev.equals("ce")){return Language.CEBUANO();
212 }else if (ermsAbbrev.equals("ch")){return Language.CHINESE();
213 // }else if (ermsAbbrev.equals("cl")){return Language.CHUKCHI(); // (LOURAVETLANY)(); //iso639-3: ckt //also known as Luoravetlan, Chukot and Chukcha is a Palaeosiberian language spoken by Chukchi people in the easternmost extremity of Siberia, mainly in Chukotka Autonomous Okrug.
214 }else if (ermsAbbrev.equals("cr")){return Language.CROATIAN();
215 }else if (ermsAbbrev.equals("cs")){return Language.CZECH();
216 }else if (ermsAbbrev.equals("da")){return Language.DANISH();
217 }else if (ermsAbbrev.equals("de")){return Language.GERMAN();
218 // }else if (ermsAbbrev.equals("ec")){return Language.ENGLISH-CANADIAN(); //no iso
219 }else if (ermsAbbrev.equals("ee")){return Language.ESTONIAN();
220 // }else if (ermsAbbrev.equals("ek")){return Language.EVEN-KAMCHATKA(); //iso639-3: eve Lamut, Ewen, Eben, Orich, Ilqan; Russian: ???´????? ???´?, earlier also ????????? ???´?) is a Tungusic language spoken by the Evens in Siberia
221 }else if (ermsAbbrev.equals("en")){return Language.ENGLISH();
222 }else if (ermsAbbrev.equals("ep")){return Language.ESPERANTO();
223 }else if (ermsAbbrev.equals("es")){return Language.SPANISH_CATALAN();
224 // }else if (ermsAbbrev.equals("eu")){return Language.ENGLISH-UNITED STATES(); no iso //ENGLISH();
225 // }else if (ermsAbbrev.equals("ev")){return Language.EVENKI(); iso: evn //languages of Tungusic family
226 }else if (ermsAbbrev.equals("fa")){return Language.PERSIAN();
227 // }else if (ermsAbbrev.equals("fc")){return Language.FRENCH-CANADIAN(); no iso //FRENCH();
228 }else if (ermsAbbrev.equals("fi")){return Language.FINNISH();
229 }else if (ermsAbbrev.equals("fj")){return Language.FIJIAN();
230 }else if (ermsAbbrev.equals("fl")){return Language.DUTCH_FLEMISH();
231 }else if (ermsAbbrev.equals("fo")){return Language.FAROESE();
232 }else if (ermsAbbrev.equals("fr")){return Language.FRENCH();
233 }else if (ermsAbbrev.equals("ga")){return Language.GAELIC_SCOTTISH_GAELIC(); //??
234 }else if (ermsAbbrev.equals("ge")){return Language.KALAALLISUT_GREENLANDIC(); // GREENLANDIC
235 }else if (ermsAbbrev.equals("gl")){return Language.GALICIAN();
236 }else if (ermsAbbrev.equals("gr")){return Language.GREEK_MODERN(); //(Greek)
237 // }else if (ermsAbbrev.equals("gu")){return Language.GUARAYO(); //GUARANI() ??
238 // }else if (ermsAbbrev.equals("ha")){return Language.HASSANYA(); Hassaniyya Arabic ios 639-3: mey
239 }else if (ermsAbbrev.equals("he")){return Language.HEBREW();
240 }else if (ermsAbbrev.equals("hi")){return Language.HINDI();
241 }else if (ermsAbbrev.equals("hu")){return Language.HUNGARIAN();
242 }else if (ermsAbbrev.equals("hw")){return Language.HAWAIIAN();
243 }else if (ermsAbbrev.equals("hy")){return Language.ARMENIAN();
244 }else if (ermsAbbrev.equals("in")){return Language.INDONESIAN();
245 }else if (ermsAbbrev.equals("iq")){return Language.INUPIAQ();
246 }else if (ermsAbbrev.equals("ir")){return Language.IRISH();
247 }else if (ermsAbbrev.equals("is")){return Language.ICELANDIC();
248 }else if (ermsAbbrev.equals("it")){return Language.ITALIAN();
249 }else if (ermsAbbrev.equals("ja")){return Language.JAPANESE();
250 // }else if (ermsAbbrev.equals("ji")){return Language.JIVARA(); //??
251 // }else if (ermsAbbrev.equals("ka")){return Language.KAMCHADAL(); iso 639-3:itl //Itelmen, formerly also known as Kamchadal, is a language belonging to the Chukotko-Kamchatkan family traditionally spoken in the Kamchatka Peninsula.
252 }else if (ermsAbbrev.equals("ko")){return Language.KOREAN();
253 // }else if (ermsAbbrev.equals("kr")){return Language.KORYAK(); //iso639-3: kpy
254 }else if (ermsAbbrev.equals("la")){return Language.LATIN();
255 }else if (ermsAbbrev.equals("li")){return Language.LITHUANIAN();
256 // }else if (ermsAbbrev.equals("lp")){return Language.LAPP(); //??
257 }else if (ermsAbbrev.equals("lv")){return Language.LATVIAN();
258 }else if (ermsAbbrev.equals("ma")){return Language.MACEDONIAN();
259 // }else if (ermsAbbrev.equals("mh")){return Language.MAHR(); //Marathi ; Mari ??
260 // }else if (ermsAbbrev.equals("mk")){return Language.MAKAH (QWIQWIDICCIAT)(); //iso639-3: myh
261 }else if (ermsAbbrev.equals("ml")){return Language.MALAY();
262 // }else if (ermsAbbrev.equals("ne")){return Language.NENETS(); iso639-3 yrk; iso639-2: mis
263 }else if (ermsAbbrev.equals("nl")){return Language.DUTCH_FLEMISH();
264 }else if (ermsAbbrev.equals("no")){return Language.NORWEGIAN();
265 }else if (ermsAbbrev.equals("np")){return Language.NEPALI();
266 // }else if (ermsAbbrev.equals("os")){return Language.OSTYAK(); //Ostyak on its own or in combination, can refer, especially in older literature, to several Siberian peoples and languages:
267 // Khanty language (kca; 639-2: fiu); Ket language(ket); Selkup language(sel; 639-2: sel)
268 // }else if (ermsAbbrev.equals("pi")){return Language.PIRAYAGUARA(); //??
269 }else if (ermsAbbrev.equals("pl")){return Language.POLISH();
270 }else if (ermsAbbrev.equals("pt")){return Language.PORTUGUESE();
271 }else if (ermsAbbrev.equals("ro")){return Language.ROMANIAN();
272 }else if (ermsAbbrev.equals("ru")){return Language.RUSSIAN();
273 }else if (ermsAbbrev.equals("sc")){return Language.SCOTS();
274 }else if (ermsAbbrev.equals("sd")){return Language.SINDHI();
275 // }else if (ermsAbbrev.equals("sh")){return Language.SERBO_CROATIAN(); //hbs
276 }else if (ermsAbbrev.equals("si")){return Language.SINHALA_SINHALESE();
277 }else if (ermsAbbrev.equals("sk")){return Language.SLOVAK();
278 }else if (ermsAbbrev.equals("sn")){return Language.SLOVENIAN();
279 }else if (ermsAbbrev.equals("sr")){return Language.SERBIAN();
280 }else if (ermsAbbrev.equals("st")){return Language.SRANAN_TONGO();
281 }else if (ermsAbbrev.equals("sv")){return Language.SWEDISH();
282 }else if (ermsAbbrev.equals("sw")){return Language.SWAHILI();
283 }else if (ermsAbbrev.equals("ta")){return Language.TAMIL();
284 }else if (ermsAbbrev.equals("te")){return Language.TELUGU();
285 }else if (ermsAbbrev.equals("tg")){return Language.TAGALOG();
286 }else if (ermsAbbrev.equals("th")){return Language.THAI();
287 // }else if (ermsAbbrev.equals("tm")){return Language.TAMUL(); //??
288 }else if (ermsAbbrev.equals("tr")){return Language.TURKISH();
289 }else if (ermsAbbrev.equals("tu")){return Language.TUPIS();
290 }else if (ermsAbbrev.equals("uk")){return Language.UKRAINIAN();
291 }else if (ermsAbbrev.equals("ur")){return Language.URDU();
292 }else if (ermsAbbrev.equals("vi")){return Language.VIETNAMESE();
293 }else if (ermsAbbrev.equals("we")){return Language.WELSH();
294 }else if (ermsAbbrev.equals("wo")){return Language.WOLOF();
295 }else if (ermsAbbrev.equals("ya")){return Language.YAKUT();
296 }else if (ermsAbbrev.equals("yp")){return Language.YUPIKS();
297 // }else if (ermsAbbrev.equals("yu")){return Language.YUKAGIR(); 639-2: mis; 639-3 yux (Southern Yukaghir)- ykg(Tundra Yukaghir)
298 }else{
299 unhandledLanguages.add("au");
300 unhandledLanguages.add("cl");
301 unhandledLanguages.add("ec");
302 unhandledLanguages.add("ek");
303 unhandledLanguages.add("eu");
304 unhandledLanguages.add("ev");
305 unhandledLanguages.add("fc");
306 unhandledLanguages.add("gu");
307 unhandledLanguages.add("ha");
308 unhandledLanguages.add("ji");
309 unhandledLanguages.add("ka");
310 unhandledLanguages.add("kr");
311 unhandledLanguages.add("lp");
312 unhandledLanguages.add("mh");
313 unhandledLanguages.add("mk");
314 unhandledLanguages.add("ne");
315 unhandledLanguages.add("os");
316 unhandledLanguages.add("pi");
317 unhandledLanguages.add("sh");
318 unhandledLanguages.add("tm");
319 unhandledLanguages.add("sh");
320 unhandledLanguages.add("yu");
321
322 if (unhandledLanguages.contains(ermsAbbrev)){
323 logger.warn("Unhandled language '" + ermsAbbrev + "' replaced by 'UNDETERMINED'" );
324 return Language.UNDETERMINED();
325 }
326 String warning = "New language abbreviation " + ermsAbbrev;
327 logger.warn(warning);
328 throw new IllegalArgumentException(warning);
329 }
330
331
332
333 }
334
335 /* (non-Javadoc)
336 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getLanguageUuid(java.lang.String)
337 */
338 @Override
339 public UUID getLanguageUuid(String key)
340 throws UndefinedTransformerMethodException {
341 return super.getLanguageUuid(key);
342 }
343
344
345
346
347
348
349 /* (non-Javadoc)
350 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getExtensionTypeByKey(java.lang.String)
351 */
352 @Override
353 public ExtensionType getExtensionTypeByKey(String key) throws UndefinedTransformerMethodException {
354 if (key == null){return null;
355 }
356 return null;
357 }
358
359 /* (non-Javadoc)
360 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getExtensionTypeUuid(java.lang.String)
361 */
362 @Override
363 public UUID getExtensionTypeUuid(String key)
364 throws UndefinedTransformerMethodException {
365 if (key == null){return null;
366 // }else if (key.equalsIgnoreCase("recent only")){return uuidRecentOnly;
367 // }else if (key.equalsIgnoreCase("recent + fossil")){return uuidRecentAndFossil;
368 // }else if (key.equalsIgnoreCase("fossil only")){return uuidFossilOnly;
369 }
370 return null;
371 }
372
373 public static UUID uuidFromGuName(String guName){
374 if (CdmUtils.isEmpty(guName)){return null;
375 }else if (guName.equalsIgnoreCase("European Marine Waters")){ return uuidEuropeanMarineWaters;
376 }else if (guName.equalsIgnoreCase("Mediterranean Sea")){ return uuidMediterraneanSea;
377 }else if (guName.equalsIgnoreCase("White Sea")){ return uuidWhiteSea;
378 }else if (guName.equalsIgnoreCase("North Sea")){ return uuidNorthSea;
379 }else if (guName.equalsIgnoreCase("Baltic Sea")){ return uuidBalticSea;
380 }else if (guName.equalsIgnoreCase("Black Sea")){ return uuidBlackSea;
381 }else if (guName.equalsIgnoreCase("Barents Sea")){ return uuidBarentsSea;
382 }else if (guName.equalsIgnoreCase("Caspian Sea")){ return uuidCaspianSea;
383 }else if (guName.equalsIgnoreCase("Portuguese Exclusive Economic Zone")){ return uuidPortugueseExclusiveEconomicZone;
384 }else if (guName.equalsIgnoreCase("Belgian Exclusive Economic Zone")){ return uuidBelgianExclusiveEconomicZone;
385 }else if (guName.equalsIgnoreCase("French Exclusive Economic Zone")){ return uuidFrenchExclusiveEconomicZone;
386 }else if (guName.equalsIgnoreCase("English Channel")){ return uuidEnglishChannel;
387 }else if (guName.equalsIgnoreCase("Adriatic Sea")){ return uuidAdriaticSea;
388 }else if (guName.equalsIgnoreCase("Biscay Bay")){ return uuidBiscayBay;
389 }else if (guName.equalsIgnoreCase("Dutch Exclusive Economic Zone")){ return uuidDutchExclusiveEconomicZone;
390 }else if (guName.equalsIgnoreCase("United Kingdom Exclusive Economic Zone")){ return uuidUnitedKingdomExclusiveEconomicZone;
391 }else if (guName.equalsIgnoreCase("Spanish Exclusive Economic Zone")){ return uuidSpanishExclusiveEconomicZone;
392 }else if (guName.equalsIgnoreCase("Egyptian Exclusive Economic Zone")){ return uuidEgyptianExclusiveEconomicZone;
393 }else if (guName.equalsIgnoreCase("Grecian Exclusive Economic Zone")){ return uuidGrecianExclusiveEconomicZone;
394 }else if (guName.equalsIgnoreCase("Tirreno Sea")){ return uuidTirrenoSea;
395 }else if (guName.equalsIgnoreCase("Icelandic Exclusive Economic Zone")){ return uuidIcelandicExclusiveEconomicZone;
396 }else if (guName.equalsIgnoreCase("Irish Exclusive economic Zone")){ return uuidIrishExclusiveeconomicZone;
397 }else if (guName.equalsIgnoreCase("Irish Sea")){ return uuidIrishSea;
398 }else if (guName.equalsIgnoreCase("Italian Exclusive Economic Zone")){ return uuidItalianExclusiveEconomicZone;
399 }else if (guName.equalsIgnoreCase("Norwegian Sea")){ return uuidNorwegianSea;
400 }else if (guName.equalsIgnoreCase("Moroccan Exclusive Economic Zone")){ return uuidMoroccanExclusiveEconomicZone;
401 }else if (guName.equalsIgnoreCase("Norwegian Exclusive Economic Zone")){ return uuidNorwegianExclusiveEconomicZone;
402 }else if (guName.equalsIgnoreCase("Skagerrak")){ return uuidSkagerrak;
403 }else if (guName.equalsIgnoreCase("Tunisian Exclusive Economic Zone")){ return uuidTunisianExclusiveEconomicZone;
404 }else if (guName.equalsIgnoreCase("Wadden Sea")){ return uuidWaddenSea;
405 }else if (guName.equalsIgnoreCase("Belt Sea")){ return uuidBeltSea;
406 }else if (guName.equalsIgnoreCase("Marmara Sea")){ return uuidMarmaraSea;
407 }else if (guName.equalsIgnoreCase("Sea of Azov")){ return uuidSeaofAzov;
408 }else if (guName.equalsIgnoreCase("Aegean Sea")){ return uuidAegeanSea;
409 }else if (guName.equalsIgnoreCase("Bulgarian Exclusive Economic Zone")){ return uuidBulgarianExclusiveEconomicZone;
410 }else if (guName.equalsIgnoreCase("South Baltic proper")){ return uuidSouthBalticproper;
411 }else if (guName.equalsIgnoreCase("Baltic Proper")){ return uuidBalticProper;
412 }else if (guName.equalsIgnoreCase("North Baltic proper")){ return uuidNorthBalticproper;
413 }else if (guName.equalsIgnoreCase("Archipelago Sea")){ return uuidArchipelagoSea;
414 }else if (guName.equalsIgnoreCase("Bothnian Sea")){ return uuidBothnianSea;
415 }else if (guName.equalsIgnoreCase("German Exclusive Economic Zone")){ return uuidGermanExclusiveEconomicZone;
416 }else if (guName.equalsIgnoreCase("Swedish Exclusive Economic Zone")){ return uuidSwedishExclusiveEconomicZone;
417 }else if (guName.equalsIgnoreCase("Ukrainian Exclusive Economic Zone")){ return uuidUkrainianExclusiveEconomicZone;
418 }else if (guName.equalsIgnoreCase("Madeiran Exclusive Economic Zone")){ return uuidMadeiranExclusiveEconomicZone;
419 }else if (guName.equalsIgnoreCase("Lebanese Exclusive Economic Zone")){ return uuidLebaneseExclusiveEconomicZone;
420 }else if (guName.equalsIgnoreCase("Spanish Exclusive Economic Zone [Mediterranean part]")){ return uuidSpanishExclusiveEconomicZoneMediterraneanpart;
421 }else if (guName.equalsIgnoreCase("Estonian Exclusive Economic Zone")){ return uuidEstonianExclusiveEconomicZone;
422 }else if (guName.equalsIgnoreCase("Croatian Exclusive Economic Zone")){ return uuidCroatianExclusiveEconomicZone;
423 }else if (guName.equalsIgnoreCase("Balear Sea")){ return uuidBalearSea;
424 }else if (guName.equalsIgnoreCase("Turkish Exclusive Economic Zone")){ return uuidTurkishExclusiveEconomicZone;
425 }else if (guName.equalsIgnoreCase("Danish Exclusive Economic Zone")){ return uuidDanishExclusiveEconomicZone;
426 }else{
427 throw new IllegalArgumentException("Unknown area " + guName);
428 }
429
430 }
431
432
433 public static UUID uuidFromGuId(Integer guId){
434 if (guId == null){return null;
435 }else if (guId == 7788){ return uuidEuropeanMarineWaters;
436 }else if (guId == 7789){ return uuidMediterraneanSea;
437 }else if (guId == 7791){ return uuidWhiteSea;
438 }else if (guId == 7792){ return uuidNorthSea;
439 }else if (guId == 7793){ return uuidBalticSea;
440 }else if (guId == 7794){ return uuidBlackSea;
441 }else if (guId == 7795){ return uuidBarentsSea;
442 }else if (guId == 7796){ return uuidCaspianSea;
443 }else if (guId == 7799){ return uuidPortugueseExclusiveEconomicZone;
444 }else if (guId == 7802){ return uuidBelgianExclusiveEconomicZone;
445 }else if (guId == 7805){ return uuidFrenchExclusiveEconomicZone;
446 }else if (guId == 7818){ return uuidEnglishChannel;
447 }else if (guId == 7821){ return uuidAdriaticSea;
448 }else if (guId == 7831){ return uuidBiscayBay;
449 }else if (guId == 7839){ return uuidDutchExclusiveEconomicZone;
450 }else if (guId == 7862){ return uuidUnitedKingdomExclusiveEconomicZone;
451 }else if (guId == 7869){ return uuidSpanishExclusiveEconomicZone;
452 }else if (guId == 7902){ return uuidEgyptianExclusiveEconomicZone;
453 }else if (guId == 7939){ return uuidGrecianExclusiveEconomicZone;
454 }else if (guId == 7946){ return uuidTirrenoSea;
455 }else if (guId == 7964){ return uuidIcelandicExclusiveEconomicZone;
456 }else if (guId == 7974){ return uuidIrishExclusiveeconomicZone;
457 }else if (guId == 7975){ return uuidIrishSea;
458 }else if (guId == 7978){ return uuidItalianExclusiveEconomicZone;
459 }else if (guId == 7980){ return uuidNorwegianSea;
460 }else if (guId == 8027){ return uuidMoroccanExclusiveEconomicZone;
461 }else if (guId == 8050){ return uuidNorwegianExclusiveEconomicZone;
462 }else if (guId == 8072){ return uuidSkagerrak;
463 }else if (guId == 8143){ return uuidTunisianExclusiveEconomicZone;
464 }else if (guId == 8155){ return uuidWaddenSea;
465 }else if (guId == 8203){ return uuidBeltSea;
466 }else if (guId == 8205){ return uuidMarmaraSea;
467 }else if (guId == 8837){ return uuidSeaofAzov;
468 }else if (guId == 9146){ return uuidAegeanSea;
469 }else if (guId == 9178){ return uuidBulgarianExclusiveEconomicZone;
470 }else if (guId == 9903){ return uuidSouthBalticproper;
471 }else if (guId == 9904){ return uuidBalticProper;
472 }else if (guId == 9905){ return uuidNorthBalticproper;
473 }else if (guId == 9908){ return uuidArchipelagoSea;
474 }else if (guId == 9909){ return uuidBothnianSea;
475 }else if (guId == 10515){ return uuidGermanExclusiveEconomicZone;
476 }else if (guId == 10528){ return uuidSwedishExclusiveEconomicZone;
477 }else if (guId == 10529){ return uuidUkrainianExclusiveEconomicZone;
478 }else if (guId == 10564){ return uuidMadeiranExclusiveEconomicZone;
479 }else if (guId == 10574){ return uuidLebaneseExclusiveEconomicZone;
480 }else if (guId == 10659){ return uuidSpanishExclusiveEconomicZoneMediterraneanpart;
481 }else if (guId == 10708){ return uuidEstonianExclusiveEconomicZone;
482 }else if (guId == 10778){ return uuidCroatianExclusiveEconomicZone;
483 }else if (guId == 10779){ return uuidBalearSea;
484 }else if (guId == 10782){ return uuidTurkishExclusiveEconomicZone;
485 }else if (guId == 11039){ return uuidDanishExclusiveEconomicZone;
486
487 }else{
488 throw new IllegalArgumentException("Unknown area id " + guId);
489 }
490
491 }
492
493 public static Feature noteType2Feature(String type){
494 if (CdmUtils.isEmpty(type)){return null;
495 }else if (type.equals("Remark")){return Feature.UNKNOWN();
496 }else if (type.equals("Additional information")){return Feature.UNKNOWN();
497 }else if (type.equals("Spelling")){return Feature.UNKNOWN();
498 }else if (type.equals("Publication date")){return Feature.UNKNOWN();
499 }else if (type.equals("Systematics")){return Feature.UNKNOWN();
500 }else if (type.equals("Classification")){return Feature.UNKNOWN();
501 }else if (type.equals("Environment")){return Feature.UNKNOWN();
502 }else if (type.equals("Habitat")){return Feature.UNKNOWN();
503 }else if (type.equals("Authority")){return Feature.UNKNOWN();
504 }else if (type.equals("Ecology")){return Feature.UNKNOWN();
505 }else if (type.equals("Morphology")){return Feature.UNKNOWN();
506 }else if (type.equals("Taxonomic Remarks")){return Feature.UNKNOWN();
507 }else if (type.equals("NULL")){return Feature.UNKNOWN();
508 }else if (type.equals("Distribution")){return Feature.UNKNOWN();
509 }else if (type.equals("Note")){return Feature.UNKNOWN();
510 }else if (type.equals("Taxonomy")){return Feature.UNKNOWN();
511 }else if (type.equals("Taxonomic status")){return Feature.UNKNOWN();
512 }else if (type.equals("Status")){return Feature.UNKNOWN();
513 }else if (type.equals("Rank")){return Feature.UNKNOWN();
514 }else if (type.equals("Homonymy")){return Feature.UNKNOWN();
515 }else if (type.equals("Nomenclature")){return Feature.UNKNOWN();
516 }else if (type.equals("Type species")){return Feature.UNKNOWN();
517 }else if (type.equals("Taxonomic Remark")){return Feature.UNKNOWN();
518 }else if (type.equals("Diagnosis")){return Feature.UNKNOWN();
519 }else if (type.equals("Date of Publication")){return Feature.UNKNOWN();
520 }else if (type.equals("Acknowledgments")){return Feature.UNKNOWN();
521 }else if (type.equals("Biology")){return Feature.UNKNOWN();
522 }else if (type.equals("Original publication")){return Feature.UNKNOWN();
523 }else if (type.equals("Type locality")){return Feature.UNKNOWN();
524 }else if (type.equals("Host")){return Feature.UNKNOWN();
525 }else if (type.equals("Validity")){return Feature.UNKNOWN();
526 }else if (type.equals("Identification")){return Feature.UNKNOWN();
527 }else if (type.equals("Synonymy")){return Feature.UNKNOWN();
528 }else{
529 throw new IllegalArgumentException("Unknown note type " + type);
530 }
531 }
532
533 /* (non-Javadoc)
534 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getFeatureByKey(java.lang.String)
535 */
536 @Override
537 public Feature getFeatureByKey(String key) throws UndefinedTransformerMethodException {
538 if (CdmUtils.isEmpty(key)){return null;
539 }else if (key.equalsIgnoreCase("Distribution")){return Feature.DISTRIBUTION();
540 }else if (key.equalsIgnoreCase("Ecology")){return Feature.ECOLOGY();
541 }else if (key.equalsIgnoreCase("Diagnosis")){return Feature.DIAGNOSIS();
542 }else if (key.equalsIgnoreCase("Biology")){return Feature.BIOLOGY_ECOLOGY();
543 }else if (key.equalsIgnoreCase("Host")){return Feature.HOSTPLANT();
544 }else{
545 return null;
546 }
547 }
548
549 /* (non-Javadoc)
550 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getFeatureUuid(java.lang.String)
551 */
552 @Override
553 public UUID getFeatureUuid(String key)
554 throws UndefinedTransformerMethodException {
555 if (CdmUtils.isEmpty(key)){return null;
556 }else if (key.equalsIgnoreCase("Remark")){return uuidRemark;
557 }else if (key.equalsIgnoreCase("Additional information")){return uuidAdditionalinformation;
558 }else if (key.equalsIgnoreCase("Spelling")){return uuidSpelling;
559 }else if (key.equalsIgnoreCase("Publication date")){return uuidPublicationdate;
560 }else if (key.equalsIgnoreCase("Systematics")){return uuidSystematics;
561 }else if (key.equalsIgnoreCase("Classification")){return uuidClassification;
562 }else if (key.equalsIgnoreCase("Environment")){return uuidEnvironment;
563 }else if (key.equalsIgnoreCase("Habitat")){return uuidHabitat;
564 }else if (key.equalsIgnoreCase("Authority")){return uuidAuthority;
565 }else if (key.equalsIgnoreCase("Morphology")){return uuidMorphology;
566 }else if (key.equalsIgnoreCase("Taxonomic Remarks")){return uuidTaxonomicRemarks;
567 }else if (key.equalsIgnoreCase("Note")){return uuidNote;
568 }else if (key.equalsIgnoreCase("Taxonomy")){return uuidTaxonomy;
569 }else if (key.equalsIgnoreCase("Taxonomic status")){return uuidTaxonomicstatus;
570 }else if (key.equalsIgnoreCase("Status")){return uuidStatus;
571 }else if (key.equalsIgnoreCase("Rank")){return uuidRank;
572 }else if (key.equalsIgnoreCase("Homonymy")){return uuidHomonymy;
573 }else if (key.equalsIgnoreCase("Nomenclature")){return uuidNomenclature;
574 }else if (key.equalsIgnoreCase("Type species")){return uuidTypespecies;
575 }else if (key.equalsIgnoreCase("Taxonomic Remark")){return uuidTaxonomicRemark;
576 }else if (key.equalsIgnoreCase("Date of Publication")){return uuidDateofPublication;
577 }else if (key.equalsIgnoreCase("Acknowledgments")){return uuidAcknowledgments;
578 }else if (key.equalsIgnoreCase("Original publication")){return uuidOriginalpublication;
579 }else if (key.equalsIgnoreCase("Type locality")){return uuidTypelocality;
580 }else if (key.equalsIgnoreCase("Validity")){return uuidValidity;
581 }else if (key.equalsIgnoreCase("Identification")){return uuidIdentification;
582 }else if (key.equalsIgnoreCase("Synonymy")){return uuidSynonymy;
583 }else{
584 return null;
585 }
586 }
587
588
589
590 }