Project

General

Profile

Download (42.5 KB) Statistics
| Branch: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy 
4
* http://www.e-taxonomy.eu
5
* 
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.cdm.io.pesi.erms;
11

    
12
import java.util.HashSet;
13
import java.util.Set;
14
import java.util.UUID;
15

    
16
import org.apache.commons.lang.StringUtils;
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.model.common.Language;
24
import eu.etaxonomy.cdm.model.description.Feature;
25
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
26
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
27

    
28
/**
29
 * @author a.mueller
30
 * @since 01.03.2010
31
 */
32
public final class ErmsTransformer extends InputTransformerBase {
33
	private static final Logger logger = Logger.getLogger(ErmsTransformer.class);
34
	
35
	public static final int SOURCE_USE_ORIGINAL_DESCRIPTION = 1;
36
	public static final int SOURCE_USE_BASIS_OF_RECORD = 2;
37
	public static final int SOURCE_USE_ADDITIONAL_SOURCE = 3;
38
	public static final int SOURCE_USE_SOURCE_OF_SYNONYMY = 4;
39
	public static final int SOURCE_USE_REDESCRIPTION = 5;
40
	public static final int SOURCE_USE_NEW_COMBINATION_REFERENCE = 6;
41
	public static final int SOURCE_USE_STATUS_SOURCE = 7;
42
	public static final int SOURCE_USE_EMENDATION = 8;
43
	
44
	//taxon relationship type uuids
45
	public static final UUID uuidTaxRelTypeIsTaxonSynonymOf = UUID.fromString("cc648276-0823-47b1-9deb-fa7c046e4afd");
46
	
47
	
48
	//rank uuids
49
	public static final UUID uuidRankSuperdomain = UUID.fromString("66d4d773-4946-4e02-b758-8903563eaa26");
50
	
51
	//language uuids
52
	public static final UUID uuidEuropeanMarineWaters = UUID.fromString("47389e42-3b3c-4873-bded-ac030db86462");
53
	public static final UUID uuidMediterraneanSea = UUID.fromString("bde8a624-23c4-4ac3-b381-11287f5d656a");
54
	public static final UUID uuidWhiteSea = UUID.fromString("bf14bfb6-8925-4696-911c-56d3e90d4491");
55
	public static final UUID uuidNorthSea = UUID.fromString("d5ea2d46-ed97-4996-8702-0619231626b6");
56
	public static final UUID uuidBalticSea = UUID.fromString("0031cda2-4b27-49de-afa3-fdec75ee5060");
57
	public static final UUID uuidBlackSea = UUID.fromString("1f110909-7462-4ee8-a7ff-9f976701dd1d");
58
	public static final UUID uuidBarentsSea = UUID.fromString("b6fd9a4d-0ad0-4481-a0b4-5dd71c8fda8b");
59
	public static final UUID uuidCaspianSea = UUID.fromString("0d3c3850-0cec-48d0-ac0d-9cbcc2c60552");
60
	public static final UUID uuidPortugueseExclusiveEconomicZone = UUID.fromString("642336f3-41cb-4546-9a1c-ffeccbad2ef5");
61
	public static final UUID uuidBelgianExclusiveEconomicZone = UUID.fromString("02138b0f-cee1-4c56-ae12-72a5b36839af");
62
	public static final UUID uuidFrenchExclusiveEconomicZone = UUID.fromString("9f6a61c0-c329-4a61-a47a-f5f383737c36");
63
	public static final UUID uuidEnglishChannel = UUID.fromString("3ed96112-bb4a-47df-b489-2c198d6f0fd2");
64
	public static final UUID uuidAdriaticSea = UUID.fromString("da376165-f970-4f0c-99db-773686d66591");
65
	public static final UUID uuidBiscayBay = UUID.fromString("1461cf85-e0b4-4ac3-bdf5-efe6053af174");
66
	public static final UUID uuidDutchExclusiveEconomicZone = UUID.fromString("a1bd019e-e2af-41c8-a5e4-c7245b575759");
67
	public static final UUID uuidUnitedKingdomExclusiveEconomicZone = UUID.fromString("18ab29c0-3104-4102-ada8-6711fcdbdbb8");
68
	public static final UUID uuidSpanishExclusiveEconomicZone = UUID.fromString("68c2823a-2173-4c31-89e8-bc1439abf448");
69
	public static final UUID uuidEgyptianExclusiveEconomicZone = UUID.fromString("e542bcfd-0ff1-49ac-a6ae-c0b3db39e560");
70
	public static final UUID uuidGrecianExclusiveEconomicZone = UUID.fromString("1d14857c-30be-4d3a-bae9-8e79da0d9d1d");
71
	public static final UUID uuidTirrenoSea = UUID.fromString("6e4f8a9d-ca6e-4b23-9211-446fac35a052");
72
	public static final UUID uuidIcelandicExclusiveEconomicZone = UUID.fromString("a121a8fb-6287-4661-9228-0816affdf3f5");
73
	public static final UUID uuidIrishExclusiveeconomicZone = UUID.fromString("c8fe2626-53d2-4eaa-962b-99662470b96e");
74
	public static final UUID uuidIrishSea = UUID.fromString("9e972ad5-b153-419e-ab7e-935b93ff881b");
75
	public static final UUID uuidItalianExclusiveEconomicZone = UUID.fromString("10557c6f-a33f-443a-ad8b-cd31c105bddd");
76
	public static final UUID uuidNorwegianSea = UUID.fromString("c6c44372-a963-41b2-8c12-a0b46425c523");
77
	public static final UUID uuidMoroccanExclusiveEconomicZone = UUID.fromString("e62e5cc2-922f-4807-abd6-1b4bffbced49");
78
	public static final UUID uuidNorwegianExclusiveEconomicZone = UUID.fromString("bd317f3e-9719-4943-ae3e-19ff0c9761be");
79
	public static final UUID uuidSkagerrak = UUID.fromString("5f63ece2-d112-4b39-80a0-bffb6c78654c");
80
	public static final UUID uuidTunisianExclusiveEconomicZone = UUID.fromString("b5972b59-6a36-45ea-88f7-0c520c99b99d");
81
	public static final UUID uuidWaddenSea = UUID.fromString("ae0c4555-8e19-479d-8a4f-e1b62939c09b");
82
	public static final UUID uuidBeltSea = UUID.fromString("780f4144-f157-45e8-ae42-cacb3ec369ba");
83
	public static final UUID uuidMarmaraSea = UUID.fromString("3db5d470-3265-4187-ba5a-01ecfb94ce6e");
84
	public static final UUID uuidSeaofAzov = UUID.fromString("5b02cb7e-8a83-446c-af47-936a2ea31a8a");
85
	public static final UUID uuidAegeanSea = UUID.fromString("65d6c443-225f-4ac0-9c86-da51502b46df");
86
	public static final UUID uuidBulgarianExclusiveEconomicZone = UUID.fromString("13e5aa21-3971-4d06-bc34-ed75a31c2f66");
87
	public static final UUID uuidSouthBalticproper = UUID.fromString("1c2a672d-4948-455d-9877-42a8da1ff1d0");
88
	public static final UUID uuidBalticProper = UUID.fromString("12ddfcad-bf8f-43d8-a772-15ae69d37b20");
89
	public static final UUID uuidNorthBalticproper = UUID.fromString("183ec305-1e9e-4cb1-93cc-703bd64de28f");
90
	public static final UUID uuidArchipelagoSea = UUID.fromString("d9ea9d63-ec4d-4b01-967d-13f28b09a715");
91
	public static final UUID uuidBothnianSea = UUID.fromString("926f7fa3-b0a4-4763-85eb-4c3804a72333");
92
	public static final UUID uuidGermanExclusiveEconomicZone = UUID.fromString("a6dbea03-090f-4f5f-bf5e-27a00ab4cc1d");
93
	public static final UUID uuidSwedishExclusiveEconomicZone = UUID.fromString("94b0e605-d241-44e1-a301-d8911c34fdef");
94
	public static final UUID uuidUkrainianExclusiveEconomicZone = UUID.fromString("b7335968-e34f-412c-91a5-5dc0b73310e7");
95
	public static final UUID uuidMadeiranExclusiveEconomicZone = UUID.fromString("c00f442a-4c08-4452-b979-825fa3ff97b2");
96
	public static final UUID uuidLebaneseExclusiveEconomicZone = UUID.fromString("d9f7dc8b-9041-4206-bf5f-5226c42a5978");
97
	public static final UUID uuidSpanishExclusiveEconomicZoneMediterraneanpart = UUID.fromString("94ccf304-9687-41b6-a14b-019509adb723");
98
	public static final UUID uuidEstonianExclusiveEconomicZone = UUID.fromString("ed17f07b-357f-4b4a-9653-3a564fdd32e5");
99
	public static final UUID uuidCroatianExclusiveEconomicZone = UUID.fromString("028b045a-b1bd-4a72-a4c2-a3d0473b8257");
100
	public static final UUID uuidBalearSea = UUID.fromString("478f30f0-01b1-4772-9d01-3a0a571f41c3");
101
	public static final UUID uuidTurkishExclusiveEconomicZone = UUID.fromString("3d552e73-2bf5-4f36-8a91-94fbead970e5");
102
	public static final UUID uuidDanishExclusiveEconomicZone = UUID.fromString("53d5a8bd-804b-4cbb-b5ad-f47ff6433db0");
103

    
104
	public static final UUID uuidBayOfBiscay = UUID.fromString("36ffc01e-85a2-4f71-91fd-012d0b1eeff5");
105
	public static final UUID uuidGreekExclusiveEconomicZone = UUID.fromString("6e587a2b-d681-46d3-bede-30411b0707a9");
106
	public static final UUID uuidTyrrhenianSea = UUID.fromString("26c39604-b7fd-425a-93a5-958774261d04");
107
	public static final UUID uuidBaeltSea = UUID.fromString("66ebf77f-77c1-4aea-8610-7c679835caee");
108
	public static final UUID uuidSeaOfMarmara = UUID.fromString("326da4d1-0c6c-4621-baf5-fdd04b0dc26c");
109
	public static final UUID uuidAzoresExclusiveEconomicZone = UUID.fromString("e0297e2c-d28a-46aa-8b30-694148b0640d");
110
	public static final UUID uuidIsraeliExclusiveEconomicZoneMediterranean = UUID.fromString("d947e1c1-6d7b-47e1-ad91-703d15c5c55b");
111
	public static final UUID uuidPolishExclusiveEconomicZone = UUID.fromString("dc7f8339-528b-49ec-a8d9-c2be0441e933");
112

    
113
	
114

    
115
	//feature uuids
116
	public static final UUID uuidRemark = UUID.fromString("648eab77-8469-4139-bbf4-3fb26ec15864");
117
	public static final UUID uuidAdditionalinformation = UUID.fromString("ef00c304-ce33-45ef-9543-0b9336a2b6eb");
118
	public static final UUID uuidSpelling = UUID.fromString("536594a1-21a5-4d99-aa46-132bc7b31316");
119
	public static final UUID uuidPublicationdate = UUID.fromString("b996b34f-1313-4575-bf46-732676674290");
120
	public static final UUID uuidSystematics = UUID.fromString("caac0f7f-f43e-4b7c-b296-ec2d930c4d05");
121
	public static final UUID uuidClassification = UUID.fromString("aa9bffd3-1fa8-4bd7-9e25-e2d162177b3d");
122
	public static final UUID uuidEnvironment = UUID.fromString("4f8ea10d-2242-443f-9d7d-4ecccdee4953");
123
	public static final UUID uuidHabitat = UUID.fromString("b7387877-51e3-4192-b9e4-025a359f4b59");
124
	public static final UUID uuidAuthority = UUID.fromString("9c7f8908-2530-4900-8da9-d328f7ac9031");
125
	public static final UUID uuidMorphology = UUID.fromString("5be1f948-d85f-497f-a0d5-4e5f3b227274");
126
	public static final UUID uuidTaxonomicRemarks = UUID.fromString("cc863aee-8da9-448b-82cd-47e3af942998");
127
	public static final UUID uuidNote = UUID.fromString("2c66d35f-c76e-40e0-951b-f2c340e5973f");
128
	public static final UUID uuidTaxonomy = UUID.fromString("d5734631-c86b-4212-9b8d-cb62f813e0a0");
129
	public static final UUID uuidTaxonomicstatus = UUID.fromString("ffbadab5-a8bc-4fb6-a6b3-d1f2593187ff");
130
	public static final UUID uuidStatus = UUID.fromString("fcc50853-bcff-4d0f-bc9a-123d7f175490");
131
	public static final UUID uuidRank = UUID.fromString("cabada57-a098-47fc-929f-31c8c910f6cf");
132
	public static final UUID uuidHomonymy = UUID.fromString("2791a14f-49b2-417f-a248-84c3d022d75f");
133
	public static final UUID uuidNomenclature = UUID.fromString("15fe184f-4aab-4076-8bbb-3415d6f1f27f");
134
	public static final UUID uuidTypespecies = UUID.fromString("cf674b0d-76e2-4628-952c-2cd06e209c6e");
135
	public static final UUID uuidTaxonomicRemark = UUID.fromString("044e7c4e-aab8-4f44-bfa5-0339e7576c74");
136
	public static final UUID uuidDateofPublication = UUID.fromString("2a416574-69db-4f80-b9a7-b912d5ed1816");
137
	public static final UUID uuidAcknowledgments = UUID.fromString("3b2fd495-3f9a-480e-986a-7643741177da");
138
	public static final UUID uuidOriginalpublication = UUID.fromString("ea9b7e53-0487-499f-a281-3d82d10e76dd");
139
	public static final UUID uuidTypelocality = UUID.fromString("7c1c5779-2b4b-467b-b2ca-5ca2e029e116");
140
	public static final UUID uuidValidity = UUID.fromString("bd066f25-935b-4b4e-a2eb-3fbfcd5e608f");
141
	public static final UUID uuidIdentification = UUID.fromString("dec3cd5b-0690-4035-825d-bda9aee96bc1");
142
	public static final UUID uuidSynonymy = UUID.fromString("f5c8be5f-8d33-47df-838e-55fc7999fc81");
143

    
144
	//extension type uuids
145
	public static final UUID uuidErmsTaxonStatus = UUID.fromString("859eee7f-5240-48a0-8edc-7af63557fa6e");
146

    
147
	public static final UUID GAZETTEER_UUID = UUID.fromString("dcfa124a-1028-49cd-aea5-fdf9bd396c1a");
148
	public static final UUID IMIS_UUID = UUID.fromString("ee2ac2ca-b60c-4e6f-9cad-720fcdb0a6ae");
149
	public static final UUID uuidFossilStatus = UUID.fromString("ec3dffbe-a0c8-4d76-845f-5fc166a33d5b");
150
	public static final UUID uuidTsn = UUID.fromString("6b0df02b-7278-4ce0-8fc9-0e6523832eb5");
151
	public static final UUID uuidDisplayName = UUID.fromString("cd72225d-32c7-4b2d-a973-a95184392690");
152
	public static final UUID uuidFuzzyName = UUID.fromString("8870dc69-d3a4-425f-a5a8-093a79f527a8");
153
	public static final UUID uuidCredibility = UUID.fromString("909a3886-8744-49dc-b9cc-277378b81b42");
154
	public static final UUID uuidCompleteness = UUID.fromString("141f4816-78c0-4da1-8a79-5c9031e6b149");
155
	public static final UUID uuidUnacceptReason = UUID.fromString("3883fb79-374d-4120-964b-9666307e3567");
156
	public static final UUID uuidQualityStatus = UUID.fromString("4de84c6e-41bd-4a0e-894d-77e9ec3103d2");
157
	
158
	//MarkerTypes
159
	public static final UUID uuidMarkerMarine = UUID.fromString("5da78a28-5668-4ed5-b788-10c69343f91e");
160
	public static final UUID uuidMarkerBrackish = UUID.fromString("2da39f5d-67d6-4779-b40d-923dca85fe14");
161
	public static final UUID uuidMarkerFreshwater = UUID.fromString("1190b182-e1d3-4986-8cc3-a6de3c115cf7");
162
	public static final UUID uuidMarkerTerrestrial = UUID.fromString("5ed92edb-e2c6-48da-8367-6e82071c888f");
163
	
164
	
165
	//language uuids
166
	public static final UUID uuidLangAuns = UUID.fromString("7bb29f8f-d74b-4f7d-b673-c52debb7ae20");     //au
167
	public static final UUID uuidLangChukchiLouravetlany = UUID.fromString("f85797cc-5ab3-454d-b9eb-beb75bc8eb37");   //cl
168
	public static final UUID uuidLangChleuh = UUID.fromString("85132635-d696-4fc0-af12-207175b11773");    //cu 
169
	public static final UUID uuidLangEnglishCanadian = UUID.fromString("43d244c4-e8cb-4c7f-951a-14d71666999c");   //ec
170
	public static final UUID uuidLangEnglishUs = UUID.fromString("037bc818-b992-48ce-a40b-994980bc46d7");  //eu
171
	public static final UUID uuidLangEvenKamchatcka= UUID.fromString("6ff3e21e-cabe-4583-b416-11b7120c5c0a");   //ek
172
	public static final UUID uuidLangEvenki = UUID.fromString("2773fa25-8b37-4c58-8936-b666ccbb8e1c");  //ev
173
	public static final UUID uuidLangFrenchCanadian = UUID.fromString("2b9a24d1-df9d-45bf-9310-11afa1256b9a");   //fc
174
	public static final UUID uuidLangHassanya = UUID.fromString("ece61834-448c-4897-98ed-a90d1253a215");    //ha
175
	public static final UUID uuidLangKamchadal = UUID.fromString("61671224-9fc5-4e59-a29b-04fc3e9ffab2");  //ka
176
	public static final UUID uuidLangKrio = UUID.fromString("93a1899a-dd23-4d55-b159-a427dc44ab19");   //  ki
177
	public static final UUID uuidLangKoryak = UUID.fromString("e5c71f03-691c-440c-ad5c-2e120b2795d7");    //kr
178
	public static final UUID uuidLangLapp = UUID.fromString("8405e039-a45c-491e-84dd-6779d1980e53");   //lp
179
	public static final UUID uuidLangMonegasque = UUID.fromString("05dbbcdd-6ea1-4091-8a8b-ed023dff8070");   //mo
180
	public static final UUID uuidLangOstyak = UUID.fromString("c3fda8b6-a7ce-4846-8d18-b112477316fb");//os
181
	public static final UUID uuidLangTamul = UUID.fromString("9f55f493-9f2b-427c-bb55-d970822726c9");   //tm
182
	public static final UUID uuidLangNentsiNenets = UUID.fromString("4697b87e-2718-4986-8f9b-361dd47b0c90");   //ne
183

    
184
	
185
	
186
	//...
187
	
188
	
189
	public static NomenclaturalCode kingdomId2NomCode(Integer kingdomId){
190
		switch (kingdomId){
191
			case 1: return null;
192
			case 2: return NomenclaturalCode.ICZN;  //Animalia
193
			case 3: return NomenclaturalCode.ICNAFP;  //Plantae
194
			case 4: return NomenclaturalCode.ICNAFP;  //Fungi
195
			case 5: return NomenclaturalCode.ICZN ;  //Protozoa
196
			case 6: return NomenclaturalCode.ICNB ;  //Bacteria
197
			case 7: return NomenclaturalCode.ICNAFP;  //Chromista   ??
198
			case 147415: return NomenclaturalCode.ICNB;  //Monera
199
			default: return null;
200
	
201
		}
202
	
203
	}
204
	
205
	
206
	
207
	
208
	/* (non-Javadoc)
209
	 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getNameTypeDesignationStatusByKey(java.lang.String)
210
	 */
211
	@Override
212
	public NameTypeDesignationStatus getNameTypeDesignationStatusByKey(String key) throws UndefinedTransformerMethodException {
213
		if (key == null){
214
			return null;
215
		}
216
		Integer intDesignationId = Integer.valueOf(key);
217
		switch (intDesignationId){
218
			case 1: return NameTypeDesignationStatus.ORIGINAL_DESIGNATION();
219
			case 2: return NameTypeDesignationStatus.SUBSEQUENT_DESIGNATION();
220
			case 3: return NameTypeDesignationStatus.MONOTYPY();
221
			default: 
222
				String warning = "Unknown name type designation status id " + key;
223
				logger.warn(warning);
224
				return null;
225
		}
226
	}
227

    
228

    
229

    
230

    
231
	/* (non-Javadoc)
232
	 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getNameTypeDesignationStatusUuid(java.lang.String)
233
	 */
234
	@Override
235
	public UUID getNameTypeDesignationStatusUuid(String key) throws UndefinedTransformerMethodException {
236
		//nott needed
237
		return super.getNameTypeDesignationStatusUuid(key);
238
	}
239

    
240

    
241
	public Language getLanguageByKey(String ermsAbbrev) throws IllegalArgumentException {
242
		Set<String> unhandledLanguages = new HashSet<String>();
243
		if (CdmUtils.isEmpty(ermsAbbrev)){return null;
244
		}else if (ermsAbbrev.equals("ab")){return Language.ALBANIAN();
245
		}else if (ermsAbbrev.equals("af")){return Language.AFRIKAANS();
246
		}else if (ermsAbbrev.equals("al")){return Language.ALEUT();
247
		}else if (ermsAbbrev.equals("ar")){return Language.ARABIC();
248
		}else if (ermsAbbrev.equals("as")){return Language.ASSAMESE();
249
//		}else if (ermsAbbrev.equals("au")){return Language.AUNS();  //??
250
		}else if (ermsAbbrev.equals("az")){return Language.AZERBAIJANI();
251
		}else if (ermsAbbrev.equals("ba")){return Language.BASQUE();
252
		}else if (ermsAbbrev.equals("be")){return Language.BELORUSSIAN();
253
		}else if (ermsAbbrev.equals("bg")){return Language.BULGARIAN();
254
		}else if (ermsAbbrev.equals("bl")){return Language.BALUCHI();
255
		}else if (ermsAbbrev.equals("bn")){return Language.BENGALI();
256
		}else if (ermsAbbrev.equals("br")){return Language.BRETON();
257
		}else if (ermsAbbrev.equals("bu")){return Language.BURMESE();
258
		}else if (ermsAbbrev.equals("ca")){return Language.CATALAN_VALENCIAN();  //??? (Catalan)
259
		}else if (ermsAbbrev.equals("ce")){return Language.CEBUANO();
260
		}else if (ermsAbbrev.equals("ch")){return Language.CHINESE();
261
//		}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.
262
		}else if (ermsAbbrev.equals("cr")){return Language.CROATIAN();
263
		}else if (ermsAbbrev.equals("cs")){return Language.CZECH();
264
//		}else if (ermsAbbrev.equals("cu")){return Language.CHLEUH();
265
		}else if (ermsAbbrev.equals("da")){return Language.DANISH();
266
		}else if (ermsAbbrev.equals("de")){return Language.GERMAN();
267
//		}else if (ermsAbbrev.equals("ec")){return Language.ENGLISH-CANADIAN();  //no iso
268
		}else if (ermsAbbrev.equals("ee")){return Language.ESTONIAN();
269
//		}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
270
		}else if (ermsAbbrev.equals("en")){return Language.ENGLISH();
271
		}else if (ermsAbbrev.equals("ep")){return Language.ESPERANTO();
272
		}else if (ermsAbbrev.equals("es")){return Language.SPANISH_CASTILIAN();
273
//		}else if (ermsAbbrev.equals("eu")){return Language.ENGLISH-UNITED STATES();  no iso //ENGLISH();
274
//		}else if (ermsAbbrev.equals("ev")){return Language.EVENKI();   iso: evn  //languages of Tungusic family 
275
		}else if (ermsAbbrev.equals("fa")){return Language.PERSIAN(); 
276
//		}else if (ermsAbbrev.equals("fc")){return Language.FRENCH-CANADIAN();   no iso  //FRENCH();
277
		}else if (ermsAbbrev.equals("fi")){return Language.FINNISH();
278
		}else if (ermsAbbrev.equals("fj")){return Language.FIJIAN();
279
		}else if (ermsAbbrev.equals("fl")){return Language.DUTCH_FLEMISH();
280
		}else if (ermsAbbrev.equals("fo")){return Language.FAROESE();
281
		}else if (ermsAbbrev.equals("fr")){return Language.FRENCH();
282
		}else if (ermsAbbrev.equals("ga")){return Language.GAELIC_SCOTTISH_GAELIC();  //??
283
		}else if (ermsAbbrev.equals("ge")){return Language.KALAALLISUT_GREENLANDIC(); // GREENLANDIC
284
		}else if (ermsAbbrev.equals("gl")){return Language.GALICIAN();
285
		}else if (ermsAbbrev.equals("gr")){return Language.GREEK_MODERN(); //(Greek)
286
//		}else if (ermsAbbrev.equals("gu")){return Language.GUARAYO();     //GUARANI() ??
287
//		}else if (ermsAbbrev.equals("ha")){return Language.HASSANYA(); Hassaniyya Arabic  ios 639-3: mey
288
		}else if (ermsAbbrev.equals("he")){return Language.HEBREW();
289
		}else if (ermsAbbrev.equals("hi")){return Language.HINDI();
290
		}else if (ermsAbbrev.equals("hu")){return Language.HUNGARIAN();
291
		}else if (ermsAbbrev.equals("hw")){return Language.HAWAIIAN();
292
		}else if (ermsAbbrev.equals("hy")){return Language.ARMENIAN();
293
		}else if (ermsAbbrev.equals("in")){return Language.INDONESIAN();
294
		}else if (ermsAbbrev.equals("iq")){return Language.INUPIAQ();
295
		}else if (ermsAbbrev.equals("ir")){return Language.IRISH();
296
		}else if (ermsAbbrev.equals("is")){return Language.ICELANDIC();
297
		}else if (ermsAbbrev.equals("it")){return Language.ITALIAN();
298
		}else if (ermsAbbrev.equals("ja")){return Language.JAPANESE();
299
//		}else if (ermsAbbrev.equals("ji")){return Language.JIVARA();   		//??
300
//		}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.    
301
//		}else if (ermsAbbrev.equals("ki")){return Language.CREOLES_PIDGINS_ENGLISH_BASED_OTHER()
302
		}else if (ermsAbbrev.equals("ko")){return Language.KOREAN();
303
//		}else if (ermsAbbrev.equals("kr")){return Language.KORYAK();    //iso639-3: kpy
304
		}else if (ermsAbbrev.equals("la")){return Language.LATIN();
305
		}else if (ermsAbbrev.equals("li")){return Language.LITHUANIAN();
306
//		}else if (ermsAbbrev.equals("lp")){return Language.LAPP();      //??
307
		}else if (ermsAbbrev.equals("lv")){return Language.LATVIAN();
308
		}else if (ermsAbbrev.equals("lt")){return Language.LITHUANIAN();
309
		}else if (ermsAbbrev.equals("ma")){return Language.MACEDONIAN();
310
//		}else if (ermsAbbrev.equals("mh")){return Language.MAHR();   //Marathi ; Mari ??
311
//		}else if (ermsAbbrev.equals("mk")){return Language.MAKAH (QWIQWIDICCIAT)();  //iso639-3: myh
312
		}else if (ermsAbbrev.equals("ml")){return Language.MALAY();
313
		}else if (ermsAbbrev.equals("mr")){return Language.MAORI();
314
		}else if (ermsAbbrev.equals("mt")){return Language.MALTESE();
315
		}else if (ermsAbbrev.equals("nb")){return Language.NORWEGIAN_BOKMOL();
316
//		}else if (ermsAbbrev.equals("ne")){return Language.NENETS();   iso639-3 yrk; iso639-2: mis
317
		}else if (ermsAbbrev.equals("nl")){return Language.DUTCH_FLEMISH();
318
		}else if (ermsAbbrev.equals("nn")){return Language.NORWEGIAN_NYNORSK();
319
		}else if (ermsAbbrev.equals("no")){return Language.NORWEGIAN();
320
		}else if (ermsAbbrev.equals("np")){return Language.NEPALI();
321
//		}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:
322
		//																Khanty language (kca; 639-2: fiu); Ket language(ket); Selkup language(sel; 639-2: sel)
323
//		}else if (ermsAbbrev.equals("pi")){return Language.PIRAYAGUARA();  //??
324
		}else if (ermsAbbrev.equals("pl")){return Language.POLISH();
325
		}else if (ermsAbbrev.equals("pt")){return Language.PORTUGUESE();
326
		}else if (ermsAbbrev.equals("ro")){return Language.ROMANIAN();
327
		}else if (ermsAbbrev.equals("ru")){return Language.RUSSIAN();
328
		}else if (ermsAbbrev.equals("sa")){return Language.SAMOAN();
329
		}else if (ermsAbbrev.equals("sc")){return Language.SCOTS();
330
		}else if (ermsAbbrev.equals("sd")){return Language.SINDHI();
331
//		}else if (ermsAbbrev.equals("sh")){return Language.SERBO_CROATIAN();  //hbs
332
		}else if (ermsAbbrev.equals("si")){return Language.SINHALA_SINHALESE();
333
		}else if (ermsAbbrev.equals("sk")){return Language.SLOVAK();
334
		}else if (ermsAbbrev.equals("sl")){return Language.SLOVENIAN();
335
		}else if (ermsAbbrev.equals("sn")){return Language.SLOVENIAN();  //not used anymore
336
		}else if (ermsAbbrev.equals("sr")){return Language.SERBIAN();
337
		}else if (ermsAbbrev.equals("st")){return Language.SRANAN_TONGO();
338
		}else if (ermsAbbrev.equals("sv")){return Language.SWEDISH();
339
		}else if (ermsAbbrev.equals("sw")){return Language.SWAHILI();
340
		}else if (ermsAbbrev.equals("ta")){return Language.TAMIL();
341
		}else if (ermsAbbrev.equals("te")){return Language.TELUGU();
342
		}else if (ermsAbbrev.equals("tg")){return Language.TAGALOG();
343
		}else if (ermsAbbrev.equals("th")){return Language.THAI();
344
//		}else if (ermsAbbrev.equals("tm")){return Language.TAM			//??
345
		}else if (ermsAbbrev.equals("tr")){return Language.TURKISH();
346
		}else if (ermsAbbrev.equals("tu")){return Language.TUPIS();
347
		}else if (ermsAbbrev.equals("uk")){return Language.UKRAINIAN();
348
		}else if (ermsAbbrev.equals("ur")){return Language.URDU();
349
		}else if (ermsAbbrev.equals("vi")){return Language.VIETNAMESE();
350
		}else if (ermsAbbrev.equals("we")){return Language.WELSH();
351
		}else if (ermsAbbrev.equals("wo")){return Language.WOLOF();
352
		}else if (ermsAbbrev.equals("ya")){return Language.YAKUT();
353
		}else if (ermsAbbrev.equals("yp")){return Language.YUPIKS();
354
//		}else if (ermsAbbrev.equals("yu")){return Language.YUKAGIR();  639-2: mis;  639-3 yux (Southern Yukaghir)- ykg(Tundra Yukaghir)
355
		}else{
356
			unhandledLanguages.add("au");
357
			unhandledLanguages.add("cl");
358
			unhandledLanguages.add("ec");
359
			unhandledLanguages.add("ek");
360
			unhandledLanguages.add("eu");
361
			unhandledLanguages.add("ev");
362
			unhandledLanguages.add("fc");
363
			unhandledLanguages.add("gu");
364
			unhandledLanguages.add("ha");
365
			unhandledLanguages.add("ji");
366
			unhandledLanguages.add("ka");
367
			unhandledLanguages.add("kr");
368
			unhandledLanguages.add("lp");
369
			unhandledLanguages.add("mh");
370
			unhandledLanguages.add("mk");
371
			unhandledLanguages.add("ne");
372
			unhandledLanguages.add("os");
373
			unhandledLanguages.add("pi");
374
			unhandledLanguages.add("sh");
375
			unhandledLanguages.add("tm");
376
			unhandledLanguages.add("sh");
377
			unhandledLanguages.add("yu");
378
			
379
			unhandledLanguages.add("cu");   //Chleuh
380
			unhandledLanguages.add("ki");  //Krio, subset of Language.CREOLES_PIDGINS_ENGLISH_BASED_OTHER()
381
			unhandledLanguages.add("mo");  //Monégasque
382

    
383

    
384
			
385
			
386
			if (unhandledLanguages.contains(ermsAbbrev)){
387
				logger.info("Unhandled language '" + ermsAbbrev + "' replaced by 'UNDETERMINED'" );
388
				return Language.UNDETERMINED();
389
			}
390
			String warning = "New language abbreviation " + ermsAbbrev;
391
			logger.warn(warning);
392
			throw new IllegalArgumentException(warning);
393
		}
394
	}
395
	
396
	/* (non-Javadoc)
397
	 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getLanguageUuid(java.lang.String)
398
	 */
399
	@Override
400
	public UUID getLanguageUuid(String key) throws UndefinedTransformerMethodException {
401
		if (key == null){
402
			return null;
403
		}else if (key.equalsIgnoreCase("au")){return uuidLangAuns;
404
		}else if (key.equalsIgnoreCase("cl")){return uuidLangChukchiLouravetlany;
405
		}else if (key.equalsIgnoreCase("cu")){return uuidLangChleuh;
406
		}else if (key.equalsIgnoreCase("ec")){return uuidLangEnglishCanadian;
407
		}else if (key.equalsIgnoreCase("ek")){return uuidLangEvenKamchatcka;
408
		}else if (key.equalsIgnoreCase("eu")){return uuidLangEnglishUs;
409
		}else if (key.equalsIgnoreCase("ev")){return uuidLangEvenki;
410
		}else if (key.equalsIgnoreCase("fc")){return uuidLangFrenchCanadian;
411
		}else if (key.equalsIgnoreCase("ha")){return uuidLangHassanya;
412
		}else if (key.equalsIgnoreCase("ka")){return uuidLangKamchadal;
413
		}else if (key.equalsIgnoreCase("ki")){return uuidLangKrio;
414
		}else if (key.equalsIgnoreCase("kr")){return uuidLangKoryak;
415
		}else if (key.equalsIgnoreCase("lp")){return uuidLangLapp;
416
		}else if (key.equalsIgnoreCase("mo")){return uuidLangMonegasque;
417
		}else if (key.equalsIgnoreCase("ne")){return uuidLangNentsiNenets;
418
		}else if (key.equalsIgnoreCase("os")){return uuidLangOstyak;
419
		}else if (key.equalsIgnoreCase("tm")){return uuidLangTamul;
420
		}
421
		
422
		return super.getLanguageUuid(key);
423
	}
424
	
425
	
426

    
427
	/* (non-Javadoc)
428
	 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getExtensionTypeByKey(java.lang.String)
429
	 */
430
	@Override
431
	public ExtensionType getExtensionTypeByKey(String key) throws UndefinedTransformerMethodException {
432
		if (key == null){return null;
433
		}
434
		return null;
435
	}
436

    
437
	/* (non-Javadoc)
438
	 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getExtensionTypeUuid(java.lang.String)
439
	 */
440
	@Override
441
	public UUID getExtensionTypeUuid(String key)
442
			throws UndefinedTransformerMethodException {
443
		if (key == null){return null;
444
//		}else if (key.equalsIgnoreCase("recent only")){return uuidRecentOnly;
445
//		}else if (key.equalsIgnoreCase("recent + fossil")){return uuidRecentAndFossil;
446
//		}else if (key.equalsIgnoreCase("fossil only")){return uuidFossilOnly;
447
		}
448
		return null;
449
	}
450

    
451
	public static UUID uuidFromGuName(String guName){
452
		if (CdmUtils.isEmpty(guName)){return null;
453
		}else if (guName.equalsIgnoreCase("European Marine Waters")){ return uuidEuropeanMarineWaters;
454
		}else if (guName.equalsIgnoreCase("Mediterranean Sea")){ return uuidMediterraneanSea;
455
		}else if (guName.equalsIgnoreCase("White Sea")){ return uuidWhiteSea;
456
		}else if (guName.equalsIgnoreCase("North Sea")){ return uuidNorthSea;
457
		}else if (guName.equalsIgnoreCase("Baltic Sea")){ return uuidBalticSea;
458
		}else if (guName.equalsIgnoreCase("Black Sea")){ return uuidBlackSea;
459
		}else if (guName.equalsIgnoreCase("Barents Sea")){ return uuidBarentsSea;
460
		}else if (guName.equalsIgnoreCase("Caspian Sea")){ return uuidCaspianSea;
461
		}else if (guName.equalsIgnoreCase("Portuguese Exclusive Economic Zone")){ return uuidPortugueseExclusiveEconomicZone;
462
		}else if (guName.equalsIgnoreCase("Belgian Exclusive Economic Zone")){ return uuidBelgianExclusiveEconomicZone;
463
		}else if (guName.equalsIgnoreCase("French Exclusive Economic Zone")){ return uuidFrenchExclusiveEconomicZone;
464
		}else if (guName.equalsIgnoreCase("English Channel")){ return uuidEnglishChannel;
465
		}else if (guName.equalsIgnoreCase("Adriatic Sea")){ return uuidAdriaticSea;
466
		}else if (guName.equalsIgnoreCase("Biscay Bay")){ return uuidBiscayBay;
467
		}else if (guName.equalsIgnoreCase("Dutch Exclusive Economic Zone")){ return uuidDutchExclusiveEconomicZone;
468
		}else if (guName.equalsIgnoreCase("United Kingdom Exclusive Economic Zone")){ return uuidUnitedKingdomExclusiveEconomicZone;
469
		}else if (guName.equalsIgnoreCase("Spanish Exclusive Economic Zone")){ return uuidSpanishExclusiveEconomicZone;
470
		}else if (guName.equalsIgnoreCase("Egyptian Exclusive Economic Zone")){ return uuidEgyptianExclusiveEconomicZone;
471
		}else if (guName.equalsIgnoreCase("Grecian Exclusive Economic Zone")){ return uuidGrecianExclusiveEconomicZone;
472
		}else if (guName.equalsIgnoreCase("Tirreno Sea")){ return uuidTirrenoSea;
473
		}else if (guName.equalsIgnoreCase("Icelandic Exclusive Economic Zone")){ return uuidIcelandicExclusiveEconomicZone;
474
		}else if (guName.equalsIgnoreCase("Irish Exclusive economic Zone")){ return uuidIrishExclusiveeconomicZone;
475
		}else if (guName.equalsIgnoreCase("Irish Sea")){ return uuidIrishSea;
476
		}else if (guName.equalsIgnoreCase("Italian Exclusive Economic Zone")){ return uuidItalianExclusiveEconomicZone;
477
		}else if (guName.equalsIgnoreCase("Norwegian Sea")){ return uuidNorwegianSea;
478
		}else if (guName.equalsIgnoreCase("Moroccan Exclusive Economic Zone")){ return uuidMoroccanExclusiveEconomicZone;
479
		}else if (guName.equalsIgnoreCase("Norwegian Exclusive Economic Zone")){ return uuidNorwegianExclusiveEconomicZone;
480
		}else if (guName.equalsIgnoreCase("Skagerrak")){ return uuidSkagerrak;
481
		}else if (guName.equalsIgnoreCase("Tunisian Exclusive Economic Zone")){ return uuidTunisianExclusiveEconomicZone;
482
		}else if (guName.equalsIgnoreCase("Wadden Sea")){ return uuidWaddenSea;
483
		}else if (guName.equalsIgnoreCase("Belt Sea")){ return uuidBeltSea;
484
		}else if (guName.equalsIgnoreCase("Marmara Sea")){ return uuidMarmaraSea;
485
		}else if (guName.equalsIgnoreCase("Sea of Azov")){ return uuidSeaofAzov;
486
		}else if (guName.equalsIgnoreCase("Aegean Sea")){ return uuidAegeanSea;
487
		}else if (guName.equalsIgnoreCase("Bulgarian Exclusive Economic Zone")){ return uuidBulgarianExclusiveEconomicZone;
488
		}else if (guName.equalsIgnoreCase("South Baltic proper")){ return uuidSouthBalticproper;
489
		}else if (guName.equalsIgnoreCase("Baltic Proper")){ return uuidBalticProper;
490
		}else if (guName.equalsIgnoreCase("North Baltic proper")){ return uuidNorthBalticproper;
491
		}else if (guName.equalsIgnoreCase("Archipelago Sea")){ return uuidArchipelagoSea;
492
		}else if (guName.equalsIgnoreCase("Bothnian Sea")){ return uuidBothnianSea;
493
		}else if (guName.equalsIgnoreCase("German Exclusive Economic Zone")){ return uuidGermanExclusiveEconomicZone;
494
		}else if (guName.equalsIgnoreCase("Swedish Exclusive Economic Zone")){ return uuidSwedishExclusiveEconomicZone;
495
		}else if (guName.equalsIgnoreCase("Ukrainian Exclusive Economic Zone")){ return uuidUkrainianExclusiveEconomicZone;
496
		}else if (guName.equalsIgnoreCase("Madeiran Exclusive Economic Zone")){ return uuidMadeiranExclusiveEconomicZone;
497
		}else if (guName.equalsIgnoreCase("Lebanese Exclusive Economic Zone")){ return uuidLebaneseExclusiveEconomicZone;
498
		}else if (guName.equalsIgnoreCase("Spanish Exclusive Economic Zone [Mediterranean part]")){ return uuidSpanishExclusiveEconomicZoneMediterraneanpart;
499
		}else if (guName.equalsIgnoreCase("Estonian Exclusive Economic Zone")){ return uuidEstonianExclusiveEconomicZone;
500
		}else if (guName.equalsIgnoreCase("Croatian Exclusive Economic Zone")){ return uuidCroatianExclusiveEconomicZone;
501
		}else if (guName.equalsIgnoreCase("Balear Sea")){ return uuidBalearSea;
502
		}else if (guName.equalsIgnoreCase("Turkish Exclusive Economic Zone")){ return uuidTurkishExclusiveEconomicZone;
503
		}else if (guName.equalsIgnoreCase("Danish Exclusive Economic Zone")){ return uuidDanishExclusiveEconomicZone;
504
		
505
		}else if (guName.equalsIgnoreCase("Bay of Biscay")){ return uuidBayOfBiscay;
506
		}else if (guName.equalsIgnoreCase("Greek Exclusive Economic Zone")){ return uuidGreekExclusiveEconomicZone;
507
		}else if (guName.equalsIgnoreCase("Tyrrhenian Sea")){ return uuidTyrrhenianSea;
508
		}else if (guName.equalsIgnoreCase("Baelt Sea")){ return uuidBaeltSea;
509
		}else if (guName.equalsIgnoreCase("Sea of Marmara")){ return uuidSeaOfMarmara;
510
		}else if (guName.equalsIgnoreCase("Azores Exclusive Economic Zone")){ return uuidAzoresExclusiveEconomicZone;
511
		}else if (guName.equalsIgnoreCase("Israeli Exclusive Economic Zone [Mediterranean part]")){ return uuidIsraeliExclusiveEconomicZoneMediterranean;
512
		}else if (guName.equalsIgnoreCase("Polish Exclusive Economic Zone")){ return uuidPolishExclusiveEconomicZone;
513
		
514
		}else{
515
			throw new IllegalArgumentException("Unknown area " + guName);
516
		}
517
		
518
	}
519

    
520
	
521
	public static UUID uuidFromGuId(Integer guId){
522
		if (guId == null){return null;
523
		}else if (guId == 7788){ return uuidEuropeanMarineWaters;
524
		}else if (guId == 7789){ return uuidMediterraneanSea;
525
		}else if (guId == 7791){ return uuidWhiteSea;
526
		}else if (guId == 7792){ return uuidNorthSea;
527
		}else if (guId == 7793){ return uuidBalticSea;
528
		}else if (guId == 7794){ return uuidBlackSea;
529
		}else if (guId == 7795){ return uuidBarentsSea;
530
		}else if (guId == 7796){ return uuidCaspianSea;
531
		}else if (guId == 7799){ return uuidPortugueseExclusiveEconomicZone;
532
		}else if (guId == 7802){ return uuidBelgianExclusiveEconomicZone;
533
		}else if (guId == 7805){ return uuidFrenchExclusiveEconomicZone;
534
		}else if (guId == 7818){ return uuidEnglishChannel;
535
		}else if (guId == 7821){ return uuidAdriaticSea;
536
		}else if (guId == 7831){ return uuidBiscayBay;
537
		}else if (guId == 7839){ return uuidDutchExclusiveEconomicZone;
538
		}else if (guId == 7862){ return uuidUnitedKingdomExclusiveEconomicZone;
539
		}else if (guId == 7869){ return uuidSpanishExclusiveEconomicZone;
540
		}else if (guId == 7902){ return uuidEgyptianExclusiveEconomicZone;
541
		}else if (guId == 7939){ return uuidGrecianExclusiveEconomicZone;
542
		}else if (guId == 7946){ return uuidTirrenoSea;
543
		}else if (guId == 7964){ return uuidIcelandicExclusiveEconomicZone;
544
		}else if (guId == 7974){ return uuidIrishExclusiveeconomicZone;
545
		}else if (guId == 7975){ return uuidIrishSea;
546
		}else if (guId == 7978){ return uuidItalianExclusiveEconomicZone;
547
		}else if (guId == 7980){ return uuidNorwegianSea;
548
		}else if (guId == 8027){ return uuidMoroccanExclusiveEconomicZone;
549
		}else if (guId == 8050){ return uuidNorwegianExclusiveEconomicZone;
550
		}else if (guId == 8072){ return uuidSkagerrak;
551
		}else if (guId == 8143){ return uuidTunisianExclusiveEconomicZone;
552
		}else if (guId == 8155){ return uuidWaddenSea;
553
		}else if (guId == 8203){ return uuidBeltSea;
554
		}else if (guId == 8205){ return uuidMarmaraSea;
555
		}else if (guId == 8837){ return uuidSeaofAzov;
556
		}else if (guId == 9146){ return uuidAegeanSea;
557
		}else if (guId == 9178){ return uuidBulgarianExclusiveEconomicZone;
558
		}else if (guId == 9903){ return uuidSouthBalticproper;
559
		}else if (guId == 9904){ return uuidBalticProper;
560
		}else if (guId == 9905){ return uuidNorthBalticproper;
561
		}else if (guId == 9908){ return uuidArchipelagoSea;
562
		}else if (guId == 9909){ return uuidBothnianSea;
563
		}else if (guId == 10515){ return uuidGermanExclusiveEconomicZone;
564
		}else if (guId == 10528){ return uuidSwedishExclusiveEconomicZone;
565
		}else if (guId == 10529){ return uuidUkrainianExclusiveEconomicZone;
566
		}else if (guId == 10564){ return uuidMadeiranExclusiveEconomicZone;
567
		}else if (guId == 10574){ return uuidLebaneseExclusiveEconomicZone;
568
		}else if (guId == 10659){ return uuidSpanishExclusiveEconomicZoneMediterraneanpart;
569
		}else if (guId == 10708){ return uuidEstonianExclusiveEconomicZone;
570
		}else if (guId == 10778){ return uuidCroatianExclusiveEconomicZone;
571
		}else if (guId == 10779){ return uuidBalearSea;
572
		}else if (guId == 10782){ return uuidTurkishExclusiveEconomicZone;
573
		}else if (guId == 11039){ return uuidDanishExclusiveEconomicZone;
574
		
575
		}else{
576
			throw new IllegalArgumentException("Unknown area id " + guId);
577
		}
578

    
579
	}
580
	
581
	public static Feature noteType2Feature(String type){
582
		if (CdmUtils.isEmpty(type)){return null;
583
		}else if (type.equals("Remark")){return Feature.UNKNOWN();
584
		}else if (type.equals("Additional information")){return Feature.UNKNOWN();
585
		}else if (type.equals("Spelling")){return Feature.UNKNOWN();
586
		}else if (type.equals("Publication date")){return Feature.UNKNOWN();
587
		}else if (type.equals("Systematics")){return Feature.UNKNOWN();
588
		}else if (type.equals("Classification")){return Feature.UNKNOWN();
589
		}else if (type.equals("Environment")){return Feature.UNKNOWN();
590
		}else if (type.equals("Habitat")){return Feature.UNKNOWN();
591
		}else if (type.equals("Authority")){return Feature.UNKNOWN();
592
		}else if (type.equals("Ecology")){return Feature.UNKNOWN();
593
		}else if (type.equals("Morphology")){return Feature.UNKNOWN();
594
		}else if (type.equals("Taxonomic Remarks")){return Feature.UNKNOWN();
595
		}else if (type.equals("NULL")){return Feature.UNKNOWN();
596
		}else if (type.equals("Distribution")){return Feature.UNKNOWN();
597
		}else if (type.equals("Note")){return Feature.UNKNOWN();
598
		}else if (type.equals("Taxonomy")){return Feature.UNKNOWN();
599
		}else if (type.equals("Taxonomic status")){return Feature.UNKNOWN();
600
		}else if (type.equals("Status")){return Feature.UNKNOWN();
601
		}else if (type.equals("Rank")){return Feature.UNKNOWN();
602
		}else if (type.equals("Homonymy")){return Feature.UNKNOWN();
603
		}else if (type.equals("Nomenclature")){return Feature.UNKNOWN();
604
		}else if (type.equals("Type species")){return Feature.UNKNOWN();
605
		}else if (type.equals("Taxonomic Remark")){return Feature.UNKNOWN();
606
		}else if (type.equals("Diagnosis")){return Feature.UNKNOWN();
607
		}else if (type.equals("Date of Publication")){return Feature.UNKNOWN();
608
		}else if (type.equals("Acknowledgments")){return Feature.UNKNOWN();
609
		}else if (type.equals("Biology")){return Feature.UNKNOWN();
610
		}else if (type.equals("Original publication")){return Feature.UNKNOWN();
611
		}else if (type.equals("Type locality")){return Feature.UNKNOWN();
612
		}else if (type.equals("Host")){return Feature.UNKNOWN();
613
		}else if (type.equals("Validity")){return Feature.UNKNOWN();
614
		}else if (type.equals("Identification")){return Feature.UNKNOWN();
615
		}else if (type.equals("Synonymy")){return Feature.UNKNOWN();
616
		}else{
617
			throw new IllegalArgumentException("Unknown note type " + type);
618
		}
619
	}
620

    
621
	/* (non-Javadoc)
622
	 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getFeatureByKey(java.lang.String)
623
	 */
624
	@Override
625
	public Feature getFeatureByKey(String key) throws UndefinedTransformerMethodException {
626
		if (CdmUtils.isEmpty(key)){return null;
627
		}else if (key.equalsIgnoreCase("Distribution")){return Feature.DISTRIBUTION();
628
		}else if (key.equalsIgnoreCase("Ecology")){return Feature.ECOLOGY();
629
		}else if (key.equalsIgnoreCase("Diagnosis")){return Feature.DIAGNOSIS();
630
		}else if (key.equalsIgnoreCase("Biology")){return Feature.BIOLOGY_ECOLOGY();
631
		}else if (key.equalsIgnoreCase("Host")){return Feature.HOSTPLANT();
632
		}else{
633
			return null;
634
		}
635
	}
636

    
637
	/* (non-Javadoc)
638
	 * @see eu.etaxonomy.cdm.io.common.mapping.InputTransformerBase#getFeatureUuid(java.lang.String)
639
	 */
640
	@Override
641
	public UUID getFeatureUuid(String key)
642
			throws UndefinedTransformerMethodException {
643
		if (StringUtils.isBlank(key)){return null;
644
		}else if (key.equalsIgnoreCase("Remark")){return uuidRemark;
645
		}else if (key.equalsIgnoreCase("Additional information")){return uuidAdditionalinformation;
646
		}else if (key.equalsIgnoreCase("Spelling")){return uuidSpelling;
647
		}else if (key.equalsIgnoreCase("Publication date")){return uuidPublicationdate;
648
		}else if (key.equalsIgnoreCase("Systematics")){return uuidSystematics;
649
		}else if (key.equalsIgnoreCase("Classification")){return uuidClassification;
650
		}else if (key.equalsIgnoreCase("Environment")){return uuidEnvironment;
651
		}else if (key.equalsIgnoreCase("Habitat")){return uuidHabitat;
652
		}else if (key.equalsIgnoreCase("Authority")){return uuidAuthority;
653
		}else if (key.equalsIgnoreCase("Morphology")){return uuidMorphology;
654
		}else if (key.equalsIgnoreCase("Taxonomic Remarks")){return uuidTaxonomicRemarks;
655
		}else if (key.equalsIgnoreCase("Note")){return uuidNote;
656
		}else if (key.equalsIgnoreCase("Taxonomy")){return uuidTaxonomy;
657
		}else if (key.equalsIgnoreCase("Taxonomic status")){return uuidTaxonomicstatus;
658
		}else if (key.equalsIgnoreCase("Status")){return uuidStatus;
659
		}else if (key.equalsIgnoreCase("Rank")){return uuidRank;
660
		}else if (key.equalsIgnoreCase("Homonymy")){return uuidHomonymy;
661
		}else if (key.equalsIgnoreCase("Nomenclature")){return uuidNomenclature;
662
		}else if (key.equalsIgnoreCase("Type species")){return uuidTypespecies;
663
		}else if (key.equalsIgnoreCase("Taxonomic Remark")){return uuidTaxonomicRemark;
664
		}else if (key.equalsIgnoreCase("Date of Publication")){return uuidDateofPublication;
665
		}else if (key.equalsIgnoreCase("Acknowledgments")){return uuidAcknowledgments;
666
		}else if (key.equalsIgnoreCase("Original publication")){return uuidOriginalpublication;
667
		}else if (key.equalsIgnoreCase("Type locality")){return uuidTypelocality;
668
		}else if (key.equalsIgnoreCase("Validity")){return uuidValidity;
669
		}else if (key.equalsIgnoreCase("Identification")){return uuidIdentification;
670
		}else if (key.equalsIgnoreCase("Synonymy")){return uuidSynonymy;
671
		}else{
672
			return null;
673
		}
674
	}
675
	
676
	
677
	
678
}
(15-15/17)