Project

General

Profile

Download (36.6 KB) Statistics
| Branch: | Revision:
1
/**
2
* Copyright (C) 2009 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.redlist.bfnXml.in;
11

    
12
import java.util.UUID;
13

    
14
import org.apache.commons.lang.StringUtils;
15
import org.apache.log4j.Logger;
16

    
17
import com.google.common.collect.BiMap;
18
import com.google.common.collect.HashBiMap;
19

    
20
import eu.etaxonomy.cdm.io.redlist.bfnXml.BfnXmlConstants;
21
import eu.etaxonomy.cdm.model.name.Rank;
22
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
23
import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;
24

    
25
public final class BfnXmlTransformer {
26
    @SuppressWarnings("unused")
27
	private static final Logger logger = Logger.getLogger(BfnXmlTransformer.class);
28

    
29

    
30
	private static final BiMap<String, Rank> rankMap = HashBiMap.create();
31
	static {
32
	    rankMap.put(BfnXmlConstants.RNK_INFRAGEN, Rank.INFRAGENUS());
33
	    rankMap.put(BfnXmlConstants.RNK_SUBGEN, Rank.SUBGENUS());
34
	    rankMap.put(BfnXmlConstants.RNK_GEN, Rank.GENUS());
35
	    //genus subdivision
36
	    rankMap.put(BfnXmlConstants.RNK_AGGR, Rank.SPECIESAGGREGATE());
37
	    rankMap.put(BfnXmlConstants.RNK_TAXINFRAGEN, Rank.INFRAGENERICTAXON());
38
	    rankMap.put(BfnXmlConstants.RNK_SUBSER, Rank.SUBSERIES());
39
	    rankMap.put(BfnXmlConstants.RNK_SER, Rank.SERIES());
40
	    rankMap.put(BfnXmlConstants.RNK_SUBSECT, Rank.SUBSECTION_BOTANY());
41
	    rankMap.put(BfnXmlConstants.RNK_SECT, Rank.SECTION_BOTANY());
42
	    //species group
43
	    rankMap.put(BfnXmlConstants.RNK_SUBSP_AGGR, Rank.SUBSPECIFICAGGREGATE());
44
	    rankMap.put(BfnXmlConstants.RNK_SSP, Rank.SUBSPECIES());
45
	    rankMap.put(BfnXmlConstants.RNK_SPEZIES, Rank.SPECIES());
46
	    //below subspecies
47
	    rankMap.put(BfnXmlConstants.RNK_CAND, Rank.CANDIDATE());
48
	    rankMap.put(BfnXmlConstants.RNK_TAXINFRASP, Rank.INFRASPECIFICTAXON());
49
	    rankMap.put(BfnXmlConstants.RNK_FSP, Rank.SPECIALFORM());
50
	    rankMap.put(BfnXmlConstants.RNK_SUBSUBFM, Rank.SUBSUBFORM());
51
	    rankMap.put(BfnXmlConstants.RNK_SUBFM, Rank.SUBFORM());
52
	    rankMap.put(BfnXmlConstants.RNK_FM, Rank.FORM());
53
	    rankMap.put(BfnXmlConstants.RNK_SUBSUBVAR, Rank.SUBSUBVARIETY());
54
	    rankMap.put(BfnXmlConstants.RNK_SUBVAR, Rank.SUBVARIETY());
55
	    rankMap.put(BfnXmlConstants.RNK_VAR, Rank.VARIETY());
56
	    rankMap.put(BfnXmlConstants.RNK_INFRASP, Rank.INFRASPECIES());
57
	    //above superfamily
58
	    rankMap.put(BfnXmlConstants.RNK_INFRAORD, Rank.INFRAORDER());
59
	    rankMap.put(BfnXmlConstants.RNK_ORD, Rank.ORDER());
60
	    rankMap.put(BfnXmlConstants.RNK_SUPERORD, Rank.SUPERORDER());
61
	    rankMap.put(BfnXmlConstants.RNK_INFRACL, Rank.INFRACLASS());
62
	    rankMap.put(BfnXmlConstants.RNK_SUBCL, Rank.SUBCLASS());
63
	    rankMap.put(BfnXmlConstants.RNK_CL, Rank.CLASS());
64
	    rankMap.put(BfnXmlConstants.RNK_SUPERCL, Rank.SUPERCLASS());
65
	    rankMap.put(BfnXmlConstants.RNK_INFRAPHYL_DIV, Rank.INFRAPHYLUM());
66
	    rankMap.put(BfnXmlConstants.RNK_SUBPHYL_DIV, Rank.SUBPHYLUM());
67
	    rankMap.put(BfnXmlConstants.RNK_PHYL_DIV, Rank.PHYLUM());
68
	    rankMap.put(BfnXmlConstants.RNK_SUPERPHYL_DIV, Rank.SUPERPHYLUM());
69
	    rankMap.put(BfnXmlConstants.RNK_INFRAREG, Rank.INFRAKINGDOM());
70
	    rankMap.put(BfnXmlConstants.RNK_SUBREG, Rank.SUBKINGDOM());
71
	    rankMap.put(BfnXmlConstants.RNK_REG, Rank.KINGDOM());
72
	    rankMap.put(BfnXmlConstants.RNK_SUPERREG, Rank.SUPERKINGDOM());
73
	    rankMap.put(BfnXmlConstants.RNK_DOM, Rank.DOMAIN());
74
	    rankMap.put(BfnXmlConstants.RNK_TAXSUPRAGEN, Rank.SUPRAGENERICTAXON());
75
	    rankMap.put(BfnXmlConstants.RNK_AUSWERTUNGSGRUPPE, Rank.EMPIRE());
76
	    //family group
77
	    rankMap.put(BfnXmlConstants.RNK_INFRAFAM, Rank.FAMILY());
78
	}
79

    
80
    public static String getRankCodeForRank(Rank rank) {
81
        return rankMap.inverse().get(rank);
82
    }
83

    
84
    /** Creates an cdm-Rank by the tcs rank
85
     */
86
    public static Rank getRankForRankCode (String rankCode){
87
        if (rankCode == null){
88
            return null;
89
        }
90
        //handle ambiguous key
91
        else if (rankCode.equals(BfnXmlConstants.RNK_AGG)){return Rank.SPECIESAGGREGATE();
92
        }else if (rankCode.equals(BfnXmlConstants.RNK_SUBSP)){return Rank.SUBSPECIES();
93
        }else if (rankCode.equals(BfnXmlConstants.RNK_SUBSP_DOT)){return Rank.SUBSPECIES();
94
        }else if (rankCode.equals(BfnXmlConstants.RNK_INFRAGEN)){return Rank.INFRAGENUS();
95
        }else if (rankCode.equals(BfnXmlConstants.RNK_SP)){return Rank.SPECIES();
96
        }else if (rankCode.equals(BfnXmlConstants.RNK_F)){return Rank.FORM();
97
        }else if (rankCode.equals(BfnXmlConstants.RNK_VAR_DOT)){return Rank.VARIETY();
98
        }else if (rankCode.equals(BfnXmlConstants.RNK_SUBFAM)){return Rank.FAMILY();
99
        }else if (rankCode.equals(BfnXmlConstants.RNK_FAM)){return Rank.FAMILY();
100
        }else if (rankCode.equals(BfnXmlConstants.RNK_SUPERFAM)){return Rank.FAMILY();
101
        }else if (rankCode.equals(BfnXmlConstants.RNK_INTRATRIB)){return Rank.FAMILY();
102
        }else if (rankCode.equals(BfnXmlConstants.RNK_SUBTRIB)){return Rank.FAMILY();
103
        }else if (rankCode.equals(BfnXmlConstants.RNK_TRIB)){return Rank.FAMILY();
104
        }else if (rankCode.equals(BfnXmlConstants.RNK_SUPERTRIB)){return Rank.FAMILY();
105
        }else {
106
            return rankMap.get(rankCode);
107
        }
108
    }
109

    
110
    private static final BiMap<String, TaxonRelationshipType> relationshipTypeMap = HashBiMap.create();
111
    static {
112
        relationshipTypeMap.put("!=", TaxonRelationshipType.CONGRUENT_TO());
113
        relationshipTypeMap.put("!=,>", TaxonRelationshipType.CONGRUENT_OR_INCLUDES());
114
        relationshipTypeMap.put("!=,<", TaxonRelationshipType.CONGRUENT_OR_INCLUDED_OR_INCLUDES());
115
        relationshipTypeMap.put(">", TaxonRelationshipType.INCLUDES());
116
        relationshipTypeMap.put(">,><", TaxonRelationshipType.INCLUDES_OR_OVERLAPS());
117
        relationshipTypeMap.put("><", TaxonRelationshipType.OVERLAPS());
118
        relationshipTypeMap.put("~", TaxonRelationshipType.CONGRUENT_OR_INCLUDES_OR_OVERLAPS());//TODO Included in not here
119
        relationshipTypeMap.put("?", TaxonRelationshipType.ALL_RELATIONSHIPS());
120
        relationshipTypeMap.put("/=", TaxonRelationshipType.EXCLUDES());
121
    }
122

    
123
    public static String getConceptCodeForTaxonRelation(TaxonRelationshipType type) {
124
        return relationshipTypeMap.inverse().get(type);
125
    }
126

    
127
	public static TaxonRelationshipType getTaxonRelationForConceptCode(String conceptCode){
128
		if(conceptCode == null) {
129
			return null;
130
		}
131
        //handle ambiguous key
132
		else if(conceptCode.equalsIgnoreCase("=!")){
133
			return TaxonRelationshipType.CONGRUENT_TO();
134
		}else if(conceptCode.equalsIgnoreCase("\\")){
135
			return TaxonRelationshipType.EXCLUDES();
136
		}
137
		else{
138
			return relationshipTypeMap.get(conceptCode);
139
		}
140
	}
141

    
142
	public static String redListString2RedListCode (String redListCode) throws UnknownCdmTypeException{
143
		if (redListCode == null){ return null;
144
		}else if (redListCode.equals("#dtpl_RLKat_NULL#")){return "0";
145
		}else if (redListCode.equals("#dtpl_RLKat_EINS#")){return "1";
146
		}else if (redListCode.equals("#dtpl_RLKat_ZWEI#")){return "2";
147
		}else if (redListCode.equals("#dtpl_RLKat_DREI#")){return "3";
148
		}else if (redListCode.equals("#dtpl_RLKat_VIER#")){return "4";
149
		}else if (redListCode.equals("#dtpl_RLKat_G#")){return "G";
150
		}else if (redListCode.equals("#dtpl_RLKat_R#")){return "R";
151
		}else if (redListCode.equals("#dtpl_RLKat_V#")){return "V";
152
		}else if (redListCode.equals("#dtpl_RLKat_STERN#")){return "*";
153
		}else if (redListCode.equals("#dtpl_RLKat_STERN##dtpl_RLKat_STERN#")){return "**";
154
		}else if (redListCode.equals("#dtpl_RLKat_D#")){return "D";
155
		}else if (redListCode.equals("#dtpl_RLKat_RAUTE#")){
156
			char c = 0x2666;
157
			return String.valueOf(c);
158
		}else if (redListCode.equals("kN")){return "kN";
159
		}else if (redListCode.equals("+")){return "+";
160
		}else if (redListCode.equals("-")){return "-";
161
		}else if (redListCode.equals("=")){return "=";
162
		}else if (redListCode.equals("N")){return "N";
163
		}else if (redListCode.equals("S")){return "S";
164
		}else if (redListCode.equals("E")){return "E";
165
		}else if (redListCode.equals("D")){return "D";
166
		}else if (redListCode.equals("#dtpl_KurzfBest_RUNTER##dtpl_KurzfBest_RUNTER##dtpl_KurzfBest_RUNTER#")){
167
			char c = 0x2193;
168
			return String.valueOf(c)+String.valueOf(c)+String.valueOf(c);
169
		}else if (redListCode.equals("#dtpl_KurzfBest_RUNTER##dtpl_KurzfBest_RUNTER#")){
170
			char c = 0x2193;
171
			return String.valueOf(c)+String.valueOf(c);
172
		}else if (redListCode.equals("(#dtpl_KurzfBest_RUNTER#)")){
173
			char c = 0x2193;
174
			return "("+String.valueOf(c)+")";
175
		}else if (redListCode.equals("#dtpl_KurzfBest_HOCH#")){
176
			char c = 0x2191;
177
			return String.valueOf(c);
178
		}else if (redListCode.equals("#dtpl_Risiko_MINUS#")){return "-";
179
		}else if (redListCode.equals("#dtpl_VERANTW_NB#")){return "nb";
180
		}else if (redListCode.equals("#dtpl_TaxBez_GLEICH#")){return "=";
181
		}else if (redListCode.equals("#dtpl_TaxBez_KLEINER#")){return "<";
182
		}else if (redListCode.equals("#dtpl_TaxBez_GROESSER#")){return ">";
183
		}else if (redListCode.equals("#dtpl_TaxBez_UNGLEICH#")){
184
			char c = 0x2260;
185
			return String.valueOf(c);
186
		}else if (redListCode.equals("#dtpl_AlteRLKat_STERN#")){return "*";
187
		}else if (redListCode.equals("#dtpl_AlteRLKat_ZWEISTERN#")){return "**";
188
		}else if (redListCode.equals("#dtpl_AlteRLKat_NB#")){return "nb";
189
		}else if (redListCode.equals("#dtpl_AlteRLKat_KN#")){return "kN";
190
		}else if (redListCode.equals("#dtpl_TaxBez_UNGLEICH#")){return "-";
191
		}else if (StringUtils.isBlank(redListCode)){return "keine Angabe";
192
		}
193
		else if (redListCode.matches("(ex|es|ss?|mh|h|sh|\\?|nb|kn)")){
194
		    return redListCode;
195
		}else if (redListCode.equals("")){
196
		    return "";
197
		}
198
		else if (redListCode.matches("(<<?<?|\\(<\\)|>|!!?|\\(!\\))")){
199
            return redListCode;
200
        }else if (redListCode.matches("(0|1|2|3|G|R|V)")){
201
            return redListCode;
202
        }
203
		else {
204
			throw new UnknownCdmTypeException("Unknown Redlist Code " + redListCode);
205
		}
206
	}
207

    
208

    
209
	public static UUID getRedlistVocabularyUUID(String redListVocabulary) throws UnknownCdmTypeException {
210

    
211
		if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
212
            return BfnXmlConstants.uuidVocStateRLKat;
213
        }else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_KAT)) {
214
            return BfnXmlConstants.uuidVocStateRlKatDiff;
215
        }else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
216
            return BfnXmlConstants.uuidVocStateRlAkt;
217
        }else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_LANGFRISTIGER_BESTANDSTREND)) {
218
            return BfnXmlConstants.uuidVocStateRLLang;
219
        }else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_KURZFRISTIGER_BESTANDSTREND)) {
220
            return BfnXmlConstants.uuidVocStateRLKurz;
221
        }else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_RISIKOFAKTOREN)) {
222
            return BfnXmlConstants.uuidVocStateRLRisk;
223
        }else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_VERANTWORTLICHKEIT)) {
224
            return BfnXmlConstants.uuidVocStateRLResp;
225
        }else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
226
            return BfnXmlConstants.uuidVocStateRLKatOld;
227
        }else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_NEOBIOTA)) {
228
            return BfnXmlConstants.uuidVocStateRLNeo;
229
        }else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_EINDEUTIGER_CODE)) {
230
            return BfnXmlConstants.uuidVocStateRLKatId;
231
        }else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_SONDERFAELLE)) {
232
            return BfnXmlConstants.uuidVocStateRLSpecialCases;
233
        }else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_VORKOMMENSSTATUS)) {
234
		    return BfnXmlConstants.uuidVocGermanPresenceTerms;
235
		}else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_ETABLIERUNGSSTATUS)) {
236
		    return BfnXmlConstants.uuidVocGermanEstablishmentTerms;
237
		}else if(redListVocabulary.equalsIgnoreCase(BfnXmlConstants.VOC_BUNDESLAENDER)) {
238
            return BfnXmlConstants.uuidVocGermanFederalStates;
239
        } else{
240
			throw new UnknownCdmTypeException("Unknown Vocabulary feature, could not match: " + redListVocabulary);
241
		}
242

    
243
	}
244

    
245

    
246
	public static UUID getRedlistFeatureUUID(String redListFeature) throws UnknownCdmTypeException {
247

    
248
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
249
            return BfnXmlConstants.uuidFeatureRLKat;
250
        }
251
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_KAT)) {
252
            return BfnXmlConstants.uuidFeatureRlKatDiff;
253
        }
254
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
255
            return BfnXmlConstants.uuidFeatureRlAkt;
256
        }
257
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_LANGFRISTIGER_BESTANDSTREND)) {
258
            return BfnXmlConstants.uuidFeatureRLLang;
259
        }
260
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_KURZFRISTIGER_BESTANDSTREND)) {
261
            return BfnXmlConstants.uuidFeatureRLKurz;
262
        }
263
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RISIKOFAKTOREN)) {
264
            return BfnXmlConstants.uuidFeatureRLRisk;
265
        }
266
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_VERANTWORTLICHKEIT)) {
267
            return BfnXmlConstants.uuidFeatureRLResp;
268
        }
269
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
270
            return BfnXmlConstants.uuidFeatureRLKatOld;
271
        }
272
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_NEOBIOTA)) {
273
            return BfnXmlConstants.uuidFeatureRLNeo;
274
        }
275
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_EINDEUTIGER_CODE)) {
276
            return BfnXmlConstants.uuidFeatureRLKatId;
277
        }
278
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.FEAT_KOMMENTAR_TAXONOMIE)) {
279
            return BfnXmlConstants.uuidFeatureRLTaxComment;
280
        }
281
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.FEAT_KOMMENTAR_GEFAEHRDUNG)) {
282
            return BfnXmlConstants.uuidFeatureRLHazardComment;
283
        }
284
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_SONDERFAELLE)) {
285
            return BfnXmlConstants.uuidFeatureRLSpecialCases;
286
        }
287
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.FEAT_LETZTER_NACHWEIS)) {
288
            return BfnXmlConstants.uuidFeatureRLLastOccurrence;
289
        }
290
		if(redListFeature.equalsIgnoreCase(BfnXmlConstants.FEAT_WEITERE_KOMMENTARE)) {
291
            return BfnXmlConstants.uuidFeatureRLAdditionalComment;
292
        } else{
293
			throw new UnknownCdmTypeException("Unknown feature, could not match: " + redListFeature);
294
		}
295

    
296
	}
297

    
298
	public static UUID getRedlistStateTermUUID(String redListStateTerm, String redListFeature) throws UnknownCdmTypeException {
299
		//RL Kat
300
		char a = 0x2666;
301
		if(redListStateTerm.equalsIgnoreCase("0") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
302
            return BfnXmlConstants.stateTermRlKat0;
303
        }
304
		if(redListStateTerm.equalsIgnoreCase("1") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
305
            return BfnXmlConstants.stateTermRlKat1;
306
        }
307
		if(redListStateTerm.equalsIgnoreCase("2") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
308
            return BfnXmlConstants.stateTermRlKat2;
309
        }
310
		if(redListStateTerm.equalsIgnoreCase("3") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
311
            return BfnXmlConstants.stateTermRlKat3;
312
        }
313
		if(redListStateTerm.equalsIgnoreCase("G") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
314
            return BfnXmlConstants.stateTermRlKatG;
315
        }
316
		if(redListStateTerm.equalsIgnoreCase("R") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
317
            return BfnXmlConstants.stateTermRlKatR;
318
        }
319
		if(redListStateTerm.equalsIgnoreCase("V") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
320
            return BfnXmlConstants.stateTermRlKatV;
321
        }
322
		if(redListStateTerm.equalsIgnoreCase("*") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
323
            return BfnXmlConstants.stateTermRlKatStar;
324
        }
325
		if(redListStateTerm.equalsIgnoreCase("**") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
326
            return BfnXmlConstants.stateTermRlKatStar2;
327
        }
328
		if(redListStateTerm.equalsIgnoreCase("D") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
329
            return BfnXmlConstants.stateTermRlKatD;
330
        }
331
		if(redListStateTerm.equalsIgnoreCase(String.valueOf(a)) && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
332
            return BfnXmlConstants.stateTermRlKatDiamond;
333
        }
334
		if(redListStateTerm.equalsIgnoreCase("kN") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RL_KAT)) {
335
            return BfnXmlConstants.stateTermRlKatKN;
336
        }
337

    
338
		//RL Diff
339
		if(redListStateTerm.equalsIgnoreCase("+") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_KAT)) {
340
            return BfnXmlConstants.stateTermRLKatDiffPlus;
341
        }
342
		if(redListStateTerm.equalsIgnoreCase("-") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_KAT)) {
343
            return BfnXmlConstants.stateTermRLKatDiffMinus;
344
        }
345
		if(redListStateTerm.equalsIgnoreCase("=") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_KAT)) {
346
            return BfnXmlConstants.stateTermRLKatDiffEqual;
347
        }
348

    
349
		//Rl Akt
350
		if(redListStateTerm.equalsIgnoreCase("ex") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
351
            return BfnXmlConstants.stateTermRLKatAktEx;
352
        }
353
		if(redListStateTerm.equalsIgnoreCase("es") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
354
            return BfnXmlConstants.stateTermRLKatAktEs;
355
        }
356
		if(redListStateTerm.equalsIgnoreCase("ss") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
357
            return BfnXmlConstants.stateTermRLKatAktSs;
358
        }
359
		if(redListStateTerm.equalsIgnoreCase("s") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
360
            return BfnXmlConstants.stateTermRLKatAktS;
361
        }
362
		if(redListStateTerm.equalsIgnoreCase("mh") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
363
            return BfnXmlConstants.stateTermRLKatAktMh;
364
        }
365
		if(redListStateTerm.equalsIgnoreCase("h") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
366
            return BfnXmlConstants.stateTermRLKatAktH;
367
        }
368
		if(redListStateTerm.equalsIgnoreCase("sh") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
369
            return BfnXmlConstants.stateTermRLKatAktSh;
370
        }
371
		if(redListStateTerm.equalsIgnoreCase("?") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
372
            return BfnXmlConstants.stateTermRLKatAktQuest;
373
        }
374
		if(redListStateTerm.equalsIgnoreCase("nb") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
375
            return BfnXmlConstants.stateTermRLKatAktNb;
376
        }
377
		if(redListStateTerm.equalsIgnoreCase("kN") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_AKTUELLE_BESTANDSSTITUATION)) {
378
            return BfnXmlConstants.stateTermRLKatAktKn;
379
        }
380

    
381
		//RL Lang
382
		if(redListStateTerm.equalsIgnoreCase("<<<") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_LANGFRISTIGER_BESTANDSTREND)) {
383
            return BfnXmlConstants.stateTermRLKatLangLT3;
384
        }
385
		if(redListStateTerm.equalsIgnoreCase("<<") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_LANGFRISTIGER_BESTANDSTREND)) {
386
            return BfnXmlConstants.stateTermRLKatLangLT2;
387
        }
388
		if(redListStateTerm.equalsIgnoreCase("<") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_LANGFRISTIGER_BESTANDSTREND)) {
389
            return BfnXmlConstants.stateTermRLKatLangLT1;
390
        }
391
		if(redListStateTerm.equalsIgnoreCase("(<)") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_LANGFRISTIGER_BESTANDSTREND)) {
392
            return BfnXmlConstants.stateTermRLKatLangLT;
393
        }
394
		if(redListStateTerm.equalsIgnoreCase("=") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_LANGFRISTIGER_BESTANDSTREND)) {
395
            return BfnXmlConstants.stateTermRLKatLangEqual;
396
        }
397
		if(redListStateTerm.equalsIgnoreCase(">") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_LANGFRISTIGER_BESTANDSTREND)) {
398
            return BfnXmlConstants.stateTermRLKatLangGT;
399
        }
400
		if(redListStateTerm.equalsIgnoreCase("?") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_LANGFRISTIGER_BESTANDSTREND)) {
401
            return BfnXmlConstants.stateTermRLKatLangQuest;
402
        }
403

    
404
		//RL Kurz
405
		char c = 0x2193;
406
		char b = 0x2191;
407
		if(redListStateTerm.equalsIgnoreCase(String.valueOf(c)+String.valueOf(c)+String.valueOf(c)) && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_KURZFRISTIGER_BESTANDSTREND)) {
408
            return BfnXmlConstants.stateTermRLKatKurzDown3;
409
        }
410
		if(redListStateTerm.equalsIgnoreCase(String.valueOf(c)+String.valueOf(c)) && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_KURZFRISTIGER_BESTANDSTREND)) {
411
            return BfnXmlConstants.stateTermRLKatKurzDown2;
412
        }
413
		if(redListStateTerm.equalsIgnoreCase("("+String.valueOf(c)+")") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_KURZFRISTIGER_BESTANDSTREND)) {
414
            return BfnXmlConstants.stateTermRLKatKurzDown1;
415
        }
416
		if(redListStateTerm.equalsIgnoreCase("=") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_KURZFRISTIGER_BESTANDSTREND)) {
417
            return BfnXmlConstants.stateTermRLKatKurzEqual;
418
        }
419
		if(redListStateTerm.equalsIgnoreCase(String.valueOf(b)) && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_KURZFRISTIGER_BESTANDSTREND)) {
420
            return BfnXmlConstants.stateTermRLKatKurzUp;
421
        }
422
		if(redListStateTerm.equalsIgnoreCase("?") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_KURZFRISTIGER_BESTANDSTREND)) {
423
            return BfnXmlConstants.stateTermRLKatKurzQuest;
424
        }
425

    
426
		//RL Risk
427
		if(redListStateTerm.equalsIgnoreCase("-") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RISIKOFAKTOREN)) {
428
            return BfnXmlConstants.stateTermRLKatRiskMinus;
429
        }
430
		if(redListStateTerm.equalsIgnoreCase("=") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_RISIKOFAKTOREN)) {
431
            return BfnXmlConstants.stateTermRLKatRiskEqual;
432
        }
433

    
434
		//RL Resp
435
		if(redListStateTerm.equalsIgnoreCase("!!") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_VERANTWORTLICHKEIT)) {
436
            return BfnXmlConstants.stateTermRLKatRespBang2;
437
        }
438
		if(redListStateTerm.equalsIgnoreCase("!") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_VERANTWORTLICHKEIT)) {
439
            return BfnXmlConstants.stateTermRLKatRespBang1;
440
        }
441
		if(redListStateTerm.equalsIgnoreCase("(!)") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_VERANTWORTLICHKEIT)) {
442
            return BfnXmlConstants.stateTermRLKatRespBang;
443
        }
444
		if(redListStateTerm.equalsIgnoreCase("?") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_VERANTWORTLICHKEIT)) {
445
            return BfnXmlConstants.stateTermRLKatRespQuest;
446
        }
447
		if(redListStateTerm.equalsIgnoreCase("nb") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_VERANTWORTLICHKEIT)) {
448
            return BfnXmlConstants.stateTermRLKatRespNb;
449
        }
450

    
451
		//RL Kat Old
452
		if(redListStateTerm.equalsIgnoreCase("0") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
453
            return BfnXmlConstants.stateTermRLKatOld0;
454
        }
455
		if(redListStateTerm.equalsIgnoreCase("1") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
456
            return BfnXmlConstants.stateTermRLKatOld1;
457
        }
458
		if(redListStateTerm.equalsIgnoreCase("2") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
459
            return BfnXmlConstants.stateTermRLKatOld2;
460
        }
461
		if(redListStateTerm.equalsIgnoreCase("3") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
462
            return BfnXmlConstants.stateTermRLKatOld3;
463
        }
464
		if(redListStateTerm.equalsIgnoreCase("G") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
465
            return BfnXmlConstants.stateTermRLKatOldG;
466
        }
467
		if(redListStateTerm.equalsIgnoreCase("R") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
468
            return BfnXmlConstants.stateTermRLKatOldR;
469
        }
470
		if(redListStateTerm.equalsIgnoreCase("V") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
471
            return BfnXmlConstants.stateTermRLKatOldV;
472
        }
473
		if(redListStateTerm.equalsIgnoreCase("*") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
474
            return BfnXmlConstants.stateTermRLKatOldStar;
475
        }
476
		if(redListStateTerm.equalsIgnoreCase("**") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
477
            return BfnXmlConstants.stateTermRLKatOldStar2;
478
        }
479
		if(redListStateTerm.equalsIgnoreCase("D") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
480
            return BfnXmlConstants.stateTermRLKatOldD;
481
        }
482
		if(redListStateTerm.equalsIgnoreCase("nb") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
483
            return BfnXmlConstants.stateTermRLKatOldNb;
484
        }
485
		if(redListStateTerm.equalsIgnoreCase("kN") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_ALTE_RL_KAT)) {
486
            return BfnXmlConstants.stateTermRLKatOldKn;
487
        }
488

    
489
		//RL Neo
490
		if(redListStateTerm.equalsIgnoreCase("N") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_NEOBIOTA)) {
491
            return BfnXmlConstants.stateTermRLKatNeo;
492
        }
493

    
494
		//RL Special
495
		if(redListStateTerm.equalsIgnoreCase("S") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_SONDERFAELLE)) {
496
            return BfnXmlConstants.stateTermRLSpecialS;
497
        }
498
		if(redListStateTerm.equalsIgnoreCase("E") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_SONDERFAELLE)) {
499
            return BfnXmlConstants.stateTermRLSpecialE;
500
        }
501
		if(redListStateTerm.equalsIgnoreCase("D") && redListFeature.equalsIgnoreCase(BfnXmlConstants.VOC_SONDERFAELLE)) {
502
            return BfnXmlConstants.stateTermRLSpecialD;
503
        }
504

    
505

    
506

    
507
		//RL Empty
508
		if(StringUtils.isBlank(redListStateTerm) || redListStateTerm.equalsIgnoreCase("keine Angabe")) {
509
            return BfnXmlConstants.stateTermEmpty;
510
        } else {
511
            throw new UnknownCdmTypeException("Unknown State, could not match: " + redListStateTerm +"\n In Category: " + redListFeature);
512
        }
513

    
514
	}
515

    
516

    
517
	/**
518
	 * retrieve german federal States
519
	 *
520
	 * @param strGermanState
521
	 * @return
522
	 * @throws UnknownCdmTypeException
523
	 */
524
	public static UUID getGermanStateUUID(String strGermanState) throws UnknownCdmTypeException {
525

    
526
		if(strGermanState.equalsIgnoreCase("Deutschland")) {
527
            return UUID.fromString("a7f3855e-d4fa-4313-8fcf-da792ef848e7");
528
        }else if(strGermanState.equalsIgnoreCase("Baden-Württemberg")) {
529
            return UUID.fromString("00e64948-9ce9-4ebf-961b-133c56517b1c");
530
        }else if(strGermanState.equalsIgnoreCase("BW")) {
531
		    return UUID.fromString("00e64948-9ce9-4ebf-961b-133c56517b1c");
532
		}else if(strGermanState.equalsIgnoreCase("Bayern")) {
533
            return UUID.fromString("ba075265-368f-4ff0-8942-88546239c70a");
534
        }else if(strGermanState.equalsIgnoreCase("BY")) {
535
		    return UUID.fromString("ba075265-368f-4ff0-8942-88546239c70a");
536
		}else if(strGermanState.equalsIgnoreCase("Berlin")) {
537
            return UUID.fromString("d9339e12-7efa-45df-a008-3c934b9386bc");
538
        }else if(strGermanState.equalsIgnoreCase("BE")) {
539
		    return UUID.fromString("d9339e12-7efa-45df-a008-3c934b9386bc");
540
		}else if(strGermanState.equalsIgnoreCase("Bremen")) {
541
            return UUID.fromString("a6d2f97d-5dba-4b79-a073-25fb491b6320");
542
        }else if(strGermanState.equalsIgnoreCase("HB")) {
543
		    return UUID.fromString("a6d2f97d-5dba-4b79-a073-25fb491b6320");
544
		}else if(strGermanState.equalsIgnoreCase("Brandenburg")) {
545
            return UUID.fromString("dda9d8b8-8090-4667-953e-d8b1f7243926");
546
        }else if(strGermanState.equalsIgnoreCase("BB")) {
547
		    return UUID.fromString("dda9d8b8-8090-4667-953e-d8b1f7243926");
548
		}else if(strGermanState.equalsIgnoreCase("Hamburg")) {
549
            return UUID.fromString("f087a7d7-974f-4627-a414-df27c04f99dd");
550
        }else if(strGermanState.equalsIgnoreCase("HH")) {
551
		    return UUID.fromString("f087a7d7-974f-4627-a414-df27c04f99dd");
552
		}else if(strGermanState.equalsIgnoreCase("Hessen")) {
553
            return UUID.fromString("59de29e6-bf32-4677-89c7-a6834fcb5085");
554
        }else if(strGermanState.equalsIgnoreCase("HE")) {
555
		    return UUID.fromString("59de29e6-bf32-4677-89c7-a6834fcb5085");
556
		}else if(strGermanState.equalsIgnoreCase("Mecklenburg-Vorpommern")) {
557
            return UUID.fromString("06dccbd5-8d5a-4e4f-b56e-d1d74ab25c19");
558
        }else if(strGermanState.equalsIgnoreCase("MV")) {
559
		    return UUID.fromString("06dccbd5-8d5a-4e4f-b56e-d1d74ab25c19");
560
		}else if(strGermanState.equalsIgnoreCase("Niedersachsen") || strGermanState.equalsIgnoreCase("NI")) {
561
            return UUID.fromString("97f77fe8-07ab-4e14-8f8b-40e8caf7e653");
562
        }else if(strGermanState.equalsIgnoreCase("Nordrhein-Westfalen")||strGermanState.equalsIgnoreCase("NW")) {
563
            return UUID.fromString("46bf702e-1438-470c-9c77-04202c34ebf2");
564
        }else if(strGermanState.equalsIgnoreCase("Rheinland-Pfalz")||strGermanState.equalsIgnoreCase("RP")) {
565
            return UUID.fromString("dd3ddb29-b1ec-4937-99a9-4a94d383becf");
566
        }else if(strGermanState.equalsIgnoreCase("Saarland")||strGermanState.equalsIgnoreCase("SL")) {
567
            return UUID.fromString("26d3e85f-ce90-43ae-8ac0-42a60302b7b7");
568
        }else if(strGermanState.equalsIgnoreCase("Sachsen")||strGermanState.equalsIgnoreCase("SN")) {
569
            return UUID.fromString("ca3ef152-ee3a-45f2-8343-983cf0fdddbd");
570
        }else if(strGermanState.equalsIgnoreCase("Sachsen-Anhalt")|| strGermanState.equalsIgnoreCase("ST")) {
571
            return UUID.fromString("bb95b9a4-87ee-49bd-a542-4c30289e8d1f");
572
        }else if(strGermanState.equalsIgnoreCase("Schleswig-Holstein")||strGermanState.equalsIgnoreCase("SH")) {
573
            return UUID.fromString("863323a7-22fb-4070-ad94-ce317098a28a");
574
        }else if(strGermanState.equalsIgnoreCase("Thüringen")||strGermanState.equalsIgnoreCase("TH")) {
575
            return UUID.fromString("72e18526-6bf7-4300-8329-53cab5da2b51");
576
        } else {
577
            throw new UnknownCdmTypeException("Unknown State, could not match: " + strGermanState);
578
        }
579
	}
580

    
581
	public static UUID getGermanAbsenceTermUUID(String strGermanTerm) throws UnknownCdmTypeException {
582
	    if(strGermanTerm.equalsIgnoreCase("abwesend")) {return UUID.fromString("517c4c68-952e-4580-8379-66a4aa12c04b");}
583
	    else if(strGermanTerm.equalsIgnoreCase("abwesend - ausgestorben")) {return UUID.fromString("7a620705-7c0d-4c72-863f-f41d548a2cc5");}
584
	    else if(strGermanTerm.equalsIgnoreCase("abwesend - frühere Fehleingabe")) {return UUID.fromString("1009264c-197d-43d4-ba16-7a7f0a6fde0c");}
585
	    else if(strGermanTerm.equalsIgnoreCase("vorkommend")) {return UUID.fromString("b294e7db-919f-4da0-9ba4-c374e7876aff");}
586
	    else if(strGermanTerm.equalsIgnoreCase("vorkommend - in Einbürgerung befindlich")) {return UUID.fromString("ec2f4099-82f7-44de-8892-09651c76d255");}
587
	    else if(strGermanTerm.equalsIgnoreCase("vorkommend - etabliert")) {return UUID.fromString("c1954b3c-58b5-43f3-b122-c872b2708bba");}
588
	    else if(strGermanTerm.equalsIgnoreCase("vorkommend - kultiviert, domestiziert")) {return UUID.fromString("99ebdb24-fda0-4203-9455-30441cdee17b");}
589
	    else if(strGermanTerm.equalsIgnoreCase("vorkommend - unbeständig")) {return UUID.fromString("12566e82-cdc2-48e4-951d-2fb88f30c5fd");}
590
	    else if(strGermanTerm.equalsIgnoreCase("vorkommend - Vorkommen unsicher")) {return UUID.fromString("a84d2ddb-fe7b-483b-96ba-fc0884d77c81");}
591
	    else if(strGermanTerm.equalsIgnoreCase("vorkommend - unsicher")) {return UUID.fromString("0b144b76-dab6-40da-8511-898f8226a24a");
592
        } else {
593
            throw new UnknownCdmTypeException("Unknown State, could not match: " + strGermanTerm);
594
        }
595
	}
596
    public static UUID getGermanEstablishmentTermUUID(String strGermanTerm) throws UnknownCdmTypeException {
597
        if(strGermanTerm.equalsIgnoreCase("Archaeophyt")) {return UUID.fromString("2cd2bc48-9fcb-4ccd-b03d-bafc0d3dde8c");}
598
        else if(strGermanTerm.equalsIgnoreCase("Indigen")) {return UUID.fromString("20a99907-406a-45f1-aa3e-4768697488e4");}
599
        else if(strGermanTerm.equalsIgnoreCase("Kulturpflanze / domestiziertes Tier")) {return UUID.fromString("94aa6408-f950-4e2e-bded-e01a1be859f6");}
600
        else if(strGermanTerm.equalsIgnoreCase("Neophyt")) {return UUID.fromString("fdf6f1b7-c6ad-4b49-bc6b-b06398f8b1b5");}
601
        else if(strGermanTerm.equalsIgnoreCase("Kultuflüchtling")) {return UUID.fromString("411f9190-56b7-41dd-a31a-3f200619c5e0");
602
        } else {
603
            throw new UnknownCdmTypeException("Unknown State, could not match: " + strGermanTerm);
604
        }
605
    }
606

    
607

    
608
    /**
609
     * @param strDistributionValue
610
     * @return
611
     */
612
    public static UUID matchDistributionValue(String strDistributionValue) throws UnknownCdmTypeException {
613

    
614
        if(strDistributionValue.equalsIgnoreCase("*")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
615
        else if(strDistributionValue.equalsIgnoreCase("0")){return getGermanAbsenceTermUUID("abwesend - ausgestorben");}
616
        else if(strDistributionValue.equalsIgnoreCase("1")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
617
        else if(strDistributionValue.equalsIgnoreCase("2")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
618
        else if(strDistributionValue.equalsIgnoreCase("3")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
619
        else if(strDistributionValue.equalsIgnoreCase("G")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
620
        else if(strDistributionValue.equalsIgnoreCase("D")){return getGermanAbsenceTermUUID("vorkommend - Vorkommen unsicher");}
621
        else if(strDistributionValue.equalsIgnoreCase("R")){return getGermanAbsenceTermUUID("vorkommend - Vorkommen unsicher");}
622
        else if(strDistributionValue.equalsIgnoreCase("N")){return getGermanAbsenceTermUUID("vorkommend");}
623
        else if(strDistributionValue.equalsIgnoreCase("V")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
624
        else if(strDistributionValue.equalsIgnoreCase("nb")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
625
        else if(strDistributionValue.equalsIgnoreCase("*")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
626
        else if(strDistributionValue.equalsIgnoreCase("#dtpl_SynopseBL_STERN_DP#")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
627
        else if(strDistributionValue.equalsIgnoreCase("#dtpl_SynopseBL_STERN#")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
628
        else if(strDistributionValue.equalsIgnoreCase("#dtpl_SynopseBL_STERN##dtpl_SynopseBL_STERN#")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
629
        else if(strDistributionValue.equalsIgnoreCase("")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
630
        else if(strDistributionValue.equalsIgnoreCase(" ")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
631
        else if(strDistributionValue.equalsIgnoreCase("#dtpl_SynopseBL_NB#")){return getGermanAbsenceTermUUID("vorkommend - etabliert");}
632
        else if(strDistributionValue.equalsIgnoreCase("-")){return getGermanAbsenceTermUUID("vorkommend - Vorkommen unsicher");}
633
        else if(strDistributionValue.equalsIgnoreCase("#dtpl_SynopseBL_X_KLAMMER#")){return getGermanAbsenceTermUUID("vorkommend - Vorkommen unsicher");}
634
        else if(strDistributionValue.equalsIgnoreCase("#dtpl_SynopseBL_X#")){return getGermanAbsenceTermUUID("vorkommend - Vorkommen unsicher");}
635
        else if(strDistributionValue.equalsIgnoreCase("#dtpl_SynopseBL_STRICH#")){return getGermanAbsenceTermUUID("vorkommend - Vorkommen unsicher");}
636
        else if(strDistributionValue.equalsIgnoreCase("+")){return getGermanAbsenceTermUUID("vorkommend - Vorkommen unsicher");}
637
        else if(strDistributionValue.equalsIgnoreCase("°")){return getGermanAbsenceTermUUID("vorkommend - Vorkommen unsicher");}
638
        else if(strDistributionValue.equalsIgnoreCase("G/D")){return getGermanAbsenceTermUUID("vorkommend");}
639
        else if(strDistributionValue.equalsIgnoreCase("R/1")){return getGermanAbsenceTermUUID("vorkommend");}
640
        else if(strDistributionValue.equalsIgnoreCase("?")){return getGermanAbsenceTermUUID("vorkommend - Vorkommen unsicher");}
641
        else if(strDistributionValue.equalsIgnoreCase("#dtpl_SynopseBL_LEER#")){return getGermanAbsenceTermUUID("abwesend");}
642
        else {
643
            throw new UnknownCdmTypeException("Unknown State, could not match: " + strDistributionValue);
644
        }
645
    }
646
}
(9-9/9)