Project

General

Profile

Download (17.1 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2016 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
package eu.etaxonomy.cdm.ext.geo;
11

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

    
16
import org.junit.Assert;
17
import org.junit.Before;
18
import org.junit.BeforeClass;
19
import org.junit.Test;
20

    
21
import eu.etaxonomy.cdm.api.service.dto.CondensedDistribution;
22
import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
23
import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
24
import eu.etaxonomy.cdm.model.common.TermType;
25
import eu.etaxonomy.cdm.model.common.TermVocabulary;
26
import eu.etaxonomy.cdm.model.description.Distribution;
27
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
28
import eu.etaxonomy.cdm.model.location.NamedArea;
29

    
30
/**
31
 * Tests for {@link FloraCubaCondensedDistributionComposerOld}
32
 * @author a.mueller
33
 * @date 07.04.2016
34
 *
35
 */
36
public class FloraCubaCondensedDistributionComposerTest {
37

    
38
    private static OrderedTermVocabulary<PresenceAbsenceTerm> statusVoc;
39
    private static OrderedTermVocabulary<NamedArea> cubaAreasVocabualary;
40
    private static NamedArea cuba;
41
    private static NamedArea westernCuba;
42
    private static NamedArea eastCuba;
43
    private static NamedArea centralCuba;
44
    private static NamedArea pinarDelRio;
45
    private static NamedArea artemisa;
46
    private static NamedArea habana;
47
    private static NamedArea mayabeque;
48
    private static NamedArea matanzas;
49
    private static NamedArea isla_juventud;
50

    
51
    private static NamedArea holguin;
52
    private static NamedArea guantanamo;
53

    
54
    private static NamedArea bahamas;
55
    private static NamedArea oldWorld;
56

    
57
    private static UUID uuidStatusOccasionallyCultivated = UUID.fromString("936c3f9a-6099-4322-9792-0a72c6c2ce25");
58
    private static UUID uuidStatusNotNativButNaturalised = UUID.fromString("a1e26234-831e-4190-9fe3-011aca09ddba");
59
    private static UUID uuidStatusDoubtfullyNativeError = UUID.fromString("71b72e24-c2b6-44a5-bdab-39f083bf0f06");
60

    
61

    
62
    /**
63
     * @throws java.lang.Exception
64
     */
65
    @SuppressWarnings("unchecked")
66
    @BeforeClass
67
    public static void setUpBeforeClass() throws Exception {
68
        DefaultTermInitializer initializer = new DefaultTermInitializer();
69
        initializer.initialize();
70

    
71
        defineSymbolsForExistingTerms();
72
        statusVoc = OrderedTermVocabulary.NewInstance(TermType.PresenceAbsenceTerm);
73
        statusVoc.addTerm(makeStatusTerm("occasionally cultivated","oc","(c)",false, uuidStatusOccasionallyCultivated));
74
        statusVoc.addTerm(makeStatusTerm("not native but possibly naturalised","p","p", false,uuidStatusNotNativButNaturalised));
75
        statusVoc.addTerm(makeStatusTerm("doubtfully native: reported in error","df","-d",false,uuidStatusDoubtfullyNativeError));
76

    
77
        makeAreas();
78
    }
79

    
80

    
81
    /**
82
     *
83
     */
84
    private static void defineSymbolsForExistingTerms() {
85
        PresenceAbsenceTerm.ENDEMIC_FOR_THE_RELEVANT_AREA().setSymbol("\u25CF");
86
        PresenceAbsenceTerm.NATIVE().setSymbol("");
87
        PresenceAbsenceTerm.NATIVE_PRESENCE_QUESTIONABLE().setSymbol("?");
88
        PresenceAbsenceTerm.PRESENT_DOUBTFULLY().setSymbol("?");
89
        PresenceAbsenceTerm.NATIVE_DOUBTFULLY_NATIVE().setSymbol("d");
90
        PresenceAbsenceTerm.NATIVE_REPORTED_IN_ERROR().setSymbol("-");
91
        PresenceAbsenceTerm.REPORTED_IN_ERROR().setSymbol("-");
92
        PresenceAbsenceTerm.INTRODUCED_ADVENTITIOUS().setSymbol("a");
93
        PresenceAbsenceTerm.CULTIVATED().setSymbol("c");
94
        PresenceAbsenceTerm.NATURALISED().setSymbol("n");
95
        PresenceAbsenceTerm.CULTIVATED_PRESENCE_QUESTIONABLE().setSymbol("?c");
96
        PresenceAbsenceTerm.CULTIVATED_REPORTED_IN_ERROR().setSymbol("-c");
97
        PresenceAbsenceTerm.NATIVE().setSymbol("");
98
        //Cuba specific
99
//      statusSymbols.put(UUID.fromString("936c3f9a-6099-4322-9792-0a72c6c2ce25"), "(c)");
100
//      //endemic, doubtfully present
101
//      statusSymbols.put(UUID.fromString("5f954f08-267a-4928-b073-12328f74c187"), "?e");
102
//      //non-native and doubtfully naturalised
103
//      statusSymbols.put(UUID.fromString("a1e26234-831e-4190-9fe3-011aca09ddba"), "p");
104
//      //rare casual
105
//      statusSymbols.put(UUID.fromString("8914ce0d-7d31-4c88-8317-985f2b3a493b"), "(a)");
106
//      //?non-native and doubtfully naturalised
107
//      statusSymbols.put(UUID.fromString("9e0b413b-5a68-4e5b-91f2-227b4f832466"), "?p");
108
//      //?adventive (casual) alien
109
//      statusSymbols.put(UUID.fromString("c42ca644-1773-4230-a2ee-328a5d4a21ab"), "?a");
110
//      //endemic, reported in error
111
//      statusSymbols.put(UUID.fromString("679b215d-c231-4ee2-ae12-3ffc3dd528ad"), "-e");
112
//      //naturalised, reported in error
113
//      statusSymbols.put(UUID.fromString("8d918a37-3add-4e1c-a233-c37dbee209aa"), "-n");
114
//      //non-native and doubtfully naturalised, reported in error
115
//      statusSymbols.put(UUID.fromString("b9153d90-9e31-465a-a28c-79077a8ed4c2"), "-p");
116
//      //adventive alien , reported in error
117
//      statusSymbols.put(UUID.fromString("9b910b7b-43e3-4260-961c-6063b11cb7dc"), "-a");
118
//      //doubtfully native: reported in error
119
//      statusSymbols.put(UUID.fromString("71b72e24-c2b6-44a5-bdab-39f083bf0f06"), "-d");
120
    }
121

    
122

    
123
    /**
124
     * @throws java.lang.Exception
125
     */
126
    @Before
127
    public void setUp() throws Exception {
128

    
129
    }
130

    
131
// ********************* TESTS ******************************/
132

    
133
    /**
134
     * Test method for {@link eu.etaxonomy.cdm.ext.geo.FloraCubaCondensedDistributionComposerOld#createCondensedDistribution(java.util.Collection, java.util.List)}.
135
     */
136
    @Test
137
    public void testCreateCondensedDistribution() {
138
        FloraCubaCondensedDistributionComposer composer = new FloraCubaCondensedDistributionComposer();
139
        composer.setAreaPreTag("<b>");
140
        composer.setAreaPostTag("</b>");
141

    
142
        Set<Distribution> filteredDistributions = new HashSet<Distribution>();
143
        filteredDistributions.add(Distribution.NewInstance(cuba, PresenceAbsenceTerm.NATURALISED()));
144
        filteredDistributions.add(Distribution.NewInstance(eastCuba, statusVoc.findTermByUuid(uuidStatusOccasionallyCultivated)));
145
        filteredDistributions.add(Distribution.NewInstance(westernCuba, statusVoc.findTermByUuid(uuidStatusDoubtfullyNativeError)));
146
        filteredDistributions.add(Distribution.NewInstance(pinarDelRio, PresenceAbsenceTerm.CULTIVATED_REPORTED_IN_ERROR()));
147
        filteredDistributions.add(Distribution.NewInstance(holguin, PresenceAbsenceTerm.NATURALISED()));
148
        filteredDistributions.add(Distribution.NewInstance(bahamas, PresenceAbsenceTerm.NATIVE()));
149
        filteredDistributions.add(Distribution.NewInstance(oldWorld, PresenceAbsenceTerm.NATIVE_PRESENCE_QUESTIONABLE()));
150

    
151
        CondensedDistribution condensedDistribution = composer.createCondensedDistribution(filteredDistributions, null);
152
        String condensedString = condensedDistribution.toString();
153

    
154
        Assert.assertEquals("Condensed string for Cuba differs", "n<b>Cu</b>(-d<b>CuW</b>(-c<b>PR*</b>) (c)<b>CuE</b>(n<b>Ho</b>)) " + composer.getInternalAreaSeparator() + "<b>Bah</b> ?<b>VM</b> ", condensedString);
155

    
156

    
157
        //TODO work in progress
158
    }
159

    
160
    @Test
161
    public void testCreateCondensedDistributionOrderSubAreas() {
162
        FloraCubaCondensedDistributionComposer composer = new FloraCubaCondensedDistributionComposer();
163
        composer.setAreaPreTag("");
164
        composer.setAreaPostTag("");
165

    
166
        Set<Distribution> filteredDistributions = new HashSet<Distribution>();
167
        filteredDistributions.add(Distribution.NewInstance(cuba, PresenceAbsenceTerm.NATURALISED()));
168
        filteredDistributions.add(Distribution.NewInstance(eastCuba, statusVoc.findTermByUuid(uuidStatusOccasionallyCultivated)));
169
        filteredDistributions.add(Distribution.NewInstance(westernCuba, statusVoc.findTermByUuid(uuidStatusDoubtfullyNativeError)));
170

    
171
        //pinarDelRio, artemisa, habana, mayabeque, matanzas, isla_juventud
172
        filteredDistributions.add(Distribution.NewInstance(matanzas, PresenceAbsenceTerm.NATIVE()));
173
        filteredDistributions.add(Distribution.NewInstance(artemisa, PresenceAbsenceTerm.NATIVE()));
174
        filteredDistributions.add(Distribution.NewInstance(pinarDelRio, PresenceAbsenceTerm.NATIVE()));
175
        filteredDistributions.add(Distribution.NewInstance(isla_juventud, PresenceAbsenceTerm.NATIVE()));
176
        filteredDistributions.add(Distribution.NewInstance(mayabeque, PresenceAbsenceTerm.NATIVE()));
177
        filteredDistributions.add(Distribution.NewInstance(habana, PresenceAbsenceTerm.NATIVE()));
178

    
179
        filteredDistributions.add(Distribution.NewInstance(guantanamo, PresenceAbsenceTerm.CULTIVATED_REPORTED_IN_ERROR()));
180
        filteredDistributions.add(Distribution.NewInstance(holguin, PresenceAbsenceTerm.NATURALISED()));
181
        filteredDistributions.add(Distribution.NewInstance(bahamas, PresenceAbsenceTerm.NATIVE()));
182
        filteredDistributions.add(Distribution.NewInstance(oldWorld, PresenceAbsenceTerm.NATIVE_PRESENCE_QUESTIONABLE()));
183

    
184
        CondensedDistribution condensedDistribution = composer.createCondensedDistribution(filteredDistributions, null);
185
        String condensedString = condensedDistribution.toString();
186

    
187
        Assert.assertEquals("Condensed string for Cuba differs", "nCu(-dCuW(-cPR*) (c)CuE(nHo)) " + composer.getInternalAreaSeparator() + "<b>Bah</b> ?<b>VM</b> ", condensedString);
188

    
189

    
190
        //TODO work in progress
191
    }
192

    
193

    
194

    
195
    private static boolean makeAreas(){
196

    
197
        //vocabulary
198
        UUID cubaAreasVocabularyUuid = UUID.fromString("c81e3c7b-3c01-47d1-87cf-388de4b1908c");
199
        String label = "Cuba Areas";
200
        String abbrev = null;
201
        cubaAreasVocabualary = OrderedTermVocabulary.NewInstance(TermType.NamedArea, label, label, abbrev, null);
202
        cubaAreasVocabualary.setUuid(cubaAreasVocabularyUuid);
203

    
204
        //Cuba
205
        label = "Cuba";
206
        abbrev = "Cu";
207
        UUID uuid = UUID.fromString("d0144a6e-0e17-4a1d-bce5-d464a2aa7229");
208
        cuba = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
209

    
210
        //Western Cuba
211
        label = "Western Cuba";
212
        abbrev = "CuW";
213
        uuid = UUID.randomUUID();
214
        westernCuba = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
215
//        cuba.addIncludes(westernCuba);
216

    
217
        //Central Cuba
218
        label = "Central Cuba";
219
        abbrev = "CuC";
220
        uuid = UUID.randomUUID();
221
        centralCuba = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
222
        cuba.addIncludes(centralCuba);
223

    
224
        //East Cuba
225
        label = "East Cuba";
226
        abbrev = "CuE";
227
        uuid = UUID.randomUUID();
228
        eastCuba = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
229
        cuba.addIncludes(eastCuba);
230

    
231
        cuba.addIncludes(westernCuba);
232

    
233
        //Pinar del Río PR
234
        label = "Pinar del Río";
235
        abbrev = "PR*";
236
        uuid = UUID.randomUUID();
237
        pinarDelRio = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
238
        westernCuba.addIncludes(pinarDelRio);
239

    
240
        //Artemisa
241
        label = "Artemisa";
242
        abbrev = "Art";
243
        uuid = UUID.randomUUID();
244
        artemisa = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
245
        westernCuba.addIncludes(artemisa);
246

    
247
        //Ciudad de la Habana
248
        label = "Ciudad de la Habana";
249
        abbrev = "Hab*";
250
        uuid = UUID.randomUUID();
251
        habana = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
252
        westernCuba.addIncludes(habana);
253

    
254
        //Ciudad de la Habana
255
        label = "Mayabeque";
256
        abbrev = "May";
257
        uuid = UUID.randomUUID();
258
        mayabeque = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
259
        westernCuba.addIncludes(mayabeque);
260

    
261
        //Matanzas Mat
262
        label = "Matanzas";
263
        abbrev = "Mat";
264
        uuid = UUID.randomUUID();
265
        matanzas = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
266
        westernCuba.addIncludes(matanzas);
267

    
268
        //Isla de la Juventud IJ
269
        label = "Isla de la Juventud";
270
        abbrev = "IJ";
271
        uuid = UUID.randomUUID();
272
        isla_juventud = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
273
        westernCuba.addIncludes(isla_juventud);
274

    
275
        //Provinces - Central
276
        //Villa Clara VC
277
        label = "Villa Clara";
278
        abbrev = "VC";
279
        uuid = UUID.randomUUID();
280
        NamedArea area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
281
        centralCuba.addIncludes(area);
282

    
283
        //Cienfuegos Ci VC
284
        label = "Cienfuegos";
285
        abbrev = "Ci";
286
        uuid = UUID.randomUUID();
287
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
288
        centralCuba.addIncludes(area);
289

    
290
        //Sancti Spiritus SS
291
        label = "Sancti Spíritus";
292
        abbrev = "SS";
293
        uuid = UUID.randomUUID();
294
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
295
        centralCuba.addIncludes(area);
296

    
297
        //Ciego de Ávila CA
298
        label = "Ciego de Ávila";
299
        abbrev = "CA";
300
        uuid = UUID.randomUUID();
301
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
302
        centralCuba.addIncludes(area);
303

    
304
        //Camagüey Cam
305
        label = "Camagüey";
306
        abbrev = "Cam";
307
        uuid = UUID.randomUUID();
308
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
309
        centralCuba.addIncludes(area);
310

    
311
        //Las Tunas LT
312
        label = "Las Tunas";
313
        abbrev = "LT";
314
        uuid = UUID.randomUUID();
315
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
316
        centralCuba.addIncludes(area);
317

    
318
        //Provinces - East
319
        //Granma Gr
320
        label = "Granma";
321
        abbrev = "Gr";
322
        uuid = UUID.randomUUID();
323
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
324
        eastCuba.addIncludes(area);
325

    
326
        //Holguín Ho
327
        label = "Holguín";
328
        abbrev = "Ho";
329
        uuid = UUID.randomUUID();
330
        holguin = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
331
        eastCuba.addIncludes(holguin);
332

    
333
        //Santiago de Cuba SC
334
        label = "Santiago de Cuba";
335
        abbrev = "SC";
336
        uuid = UUID.randomUUID();
337
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
338
        eastCuba.addIncludes(area);
339

    
340
        //Guantánamo Gu
341
        label = "Guantánamo";
342
        abbrev = "Gu";
343
        uuid = UUID.randomUUID();
344
        guantanamo = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
345
        eastCuba.addIncludes(guantanamo);
346

    
347
        //other Greater Antilles (Cuba, Española, Jamaica, Puerto Rico)
348
        //Española Esp (=Haiti + Dominican Republic)
349
        label = "Española";
350
        abbrev = "Esp";
351
        uuid = UUID.randomUUID();
352
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
353

    
354
        //Jamaica Ja
355
        label = "Jamaica";
356
        abbrev = "Ja";
357
        uuid = UUID.randomUUID();
358
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
359

    
360
        //Puerto Rico PR
361
        label = "Puerto Rico";
362
        abbrev = "PRc";
363
        uuid = UUID.randomUUID();
364
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
365

    
366
        //Lesser Antilles Men
367
        label = "Lesser Antilles";
368
        abbrev = "Men";
369
        uuid = UUID.randomUUID();
370
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
371

    
372
        //Bahamas
373
        label = "Bahamas";
374
        abbrev = "Bah";
375
        uuid = UUID.randomUUID();
376
        bahamas = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
377

    
378
        //Cayman Islands
379
        label = "Cayman Islands"; //[Trinidad, Tobago, Curaçao, Margarita, ABC Isl. => S. America];
380
        abbrev = "Cay";
381
        uuid = UUID.randomUUID();
382
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
383

    
384
        //World
385
        //N America
386
        label = "N America"; //(incl. Mexico)
387
        abbrev = "AmN";
388
        uuid = UUID.randomUUID();
389
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
390

    
391
        //Central America
392
        label = "Central America";
393
        abbrev = "AmC";
394
        uuid = UUID.randomUUID();
395
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
396

    
397

    
398
        //S America
399
        label = "S America";
400
        abbrev = "AmS";
401
        uuid = UUID.randomUUID();
402
        area = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
403

    
404
        //Old World
405
        label = "Old World ";
406
        abbrev = "VM";
407
        uuid = UUID.randomUUID();
408
        oldWorld = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
409

    
410
        return true;
411
    }
412

    
413
    private static NamedArea getNamedArea(UUID uuid, String label, String abbrev, TermVocabulary<NamedArea> vocabulary) {
414
        NamedArea result = NamedArea.NewInstance(label, label, abbrev);
415
        result.setUuid(uuid);
416
        vocabulary.addTerm(result);
417
        result.setIdInVocabulary(abbrev);
418
        return result;
419

    
420
    }
421

    
422

    
423
    private static PresenceAbsenceTerm makeStatusTerm(String desc, String abbrev, String symbol, boolean absent, UUID uuid) {
424
        PresenceAbsenceTerm result = PresenceAbsenceTerm.NewPresenceInstance(desc, desc, abbrev);
425
        result.setAbsenceTerm(absent);
426
        result.setUuid(uuid);
427
        result.setSymbol(symbol);
428
        return result;
429
    }
430

    
431

    
432
}
(3-3/4)