1f0183d6c131604709efe5216e2e46b8cede3fa7
[cdmlib.git] / cdmlib-ext / src / test / java / eu / etaxonomy / cdm / ext / geo / EditGeoServiceTest.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.cdm.ext.geo;
12
13 import static org.junit.Assert.assertTrue;
14
15 import java.awt.Color;
16 import java.util.ArrayList;
17 import java.util.HashMap;
18 import java.util.HashSet;
19 import java.util.List;
20 import java.util.Map;
21 import java.util.Set;
22 import java.util.UUID;
23
24 import org.apache.log4j.Logger;
25 import org.junit.After;
26 import org.junit.AfterClass;
27 import org.junit.Before;
28 import org.junit.BeforeClass;
29 import org.junit.Test;
30
31 import eu.etaxonomy.cdm.common.CdmUtils;
32 import eu.etaxonomy.cdm.ext.geo.EditGeoServiceUtilities;
33 import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
34 import eu.etaxonomy.cdm.model.common.Language;
35 import eu.etaxonomy.cdm.model.common.TermVocabulary;
36 import eu.etaxonomy.cdm.model.description.AbsenceTerm;
37 import eu.etaxonomy.cdm.model.description.Distribution;
38 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
39 import eu.etaxonomy.cdm.model.description.PresenceTerm;
40 import eu.etaxonomy.cdm.model.location.NamedArea;
41 import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
42 import eu.etaxonomy.cdm.model.location.NamedAreaType;
43 import eu.etaxonomy.cdm.model.location.TdwgArea;
44
45 /**
46 * @author a.mueller
47 * @created 08.10.2008
48 * @version 1.0
49 */
50 public class EditGeoServiceTest {
51 @SuppressWarnings("unused")
52 private static final Logger logger = Logger.getLogger(EditGeoServiceTest.class);
53
54 /**
55 * @throws java.lang.Exception
56 */
57 @BeforeClass
58 public static void setUpBeforeClass() throws Exception {
59 DefaultTermInitializer initializer = new DefaultTermInitializer();
60 initializer.initialize();
61 }
62
63 /**
64 * @throws java.lang.Exception
65 */
66 @AfterClass
67 public static void tearDownAfterClass() throws Exception {
68 }
69
70 /**
71 * @throws java.lang.Exception
72 */
73 @Before
74 public void setUp() throws Exception {
75 }
76
77 /**
78 * @throws java.lang.Exception
79 */
80 @After
81 public void tearDown() throws Exception {
82 }
83
84 //******************************************** TESTS**************
85 @Test
86 public void testGetWebServiceUrlTdwg() {
87 //String webServiceUrl = "http://www.test.de/webservice";
88 Set<Distribution> distributions = new HashSet<Distribution>();
89 distributions.add(Distribution.NewInstance(TdwgArea.getAreaByTdwgAbbreviation("SPA"), PresenceTerm.PRESENT()));
90 distributions.add(Distribution.NewInstance(TdwgArea.getAreaByTdwgAbbreviation("GER"), PresenceTerm.INTRODUCED()));
91 distributions.add(Distribution.NewInstance(TdwgArea.getAreaByTdwgAbbreviation("14"), PresenceTerm.CULTIVATED()));
92 distributions.add(Distribution.NewInstance(TdwgArea.getAreaByTdwgAbbreviation("BGM"), AbsenceTerm.ABSENT()));
93 distributions.add(Distribution.NewInstance(TdwgArea.getAreaByTdwgAbbreviation("FRA"), AbsenceTerm.ABSENT()));
94 distributions.add(Distribution.NewInstance(TdwgArea.getAreaByTdwgAbbreviation("IND-AP"), PresenceTerm.PRESENT()));
95
96 Map<PresenceAbsenceTermBase<?>, Color> presenceAbsenceColorMap = new HashMap<PresenceAbsenceTermBase<?>, Color>();
97 presenceAbsenceColorMap.put(PresenceTerm.PRESENT(), Color.BLUE);
98 presenceAbsenceColorMap.put(PresenceTerm.INTRODUCED(), Color.BLACK);
99 presenceAbsenceColorMap.put(PresenceTerm.CULTIVATED(), Color.YELLOW);
100 presenceAbsenceColorMap.put(AbsenceTerm.ABSENT(), Color.DARK_GRAY);
101 String backLayer ="";
102 presenceAbsenceColorMap = null;
103 String bbox="-20,0,120,70";
104 List<Language> languages = new ArrayList<Language>();
105
106 String result = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(distributions, presenceAbsenceColorMap, 600, 300, bbox,backLayer, languages );
107 //TODO Set semantics is not determined
108 //String expected = "http://www.test.de/webservice?l=tdwg3&ad=tdwg3:a:GER|b:OKL|c:BGM|b:SPA|d:FRA&as=a:005500|b:00FF00|c:FFFFFF|d:001100&bbox=-20,40,40,40&ms=400x300";
109 System.out.println(result);
110 assertTrue(result.startsWith("l="));
111 assertTrue(result.endsWith("&ms=600,300"));
112 assertTrue(result.matches(".*ad=tdwg[1-4].*"));
113 assertTrue(result.matches(".*tdwg2:[a-d]:14[\\|&].*") );
114 assertTrue(result.matches(".*[a-d]:FRA,BGM[\\|&].*") || result.matches(".*[a-d]:BGM,FRA[\\|&].*") );
115 assertTrue(result.matches(".*[a-d]:GER[\\|&].*") );
116 assertTrue(result.matches(".*[a-d]:SPA[\\|&].*") );
117 assertTrue(result.matches(".*tdwg4:[a-d]:INDAP[\\|&].*") );
118 //assertTrue(result.matches("0000ff"));
119 //TODO continue
120 }
121
122 @Test
123 public void testGetWebServiceUrlCyprus() {
124 makeCyprusAreas();
125 Set<Distribution> distributions = new HashSet<Distribution>();
126 distributions.add(Distribution.NewInstance(divisions.get("1"), PresenceTerm.PRESENT()));
127 distributions.add(Distribution.NewInstance(divisions.get("2"), PresenceTerm.INTRODUCED()));
128 distributions.add(Distribution.NewInstance(divisions.get("3"), PresenceTerm.CULTIVATED()));
129 distributions.add(Distribution.NewInstance(divisions.get("4"), AbsenceTerm.ABSENT()));
130 distributions.add(Distribution.NewInstance(divisions.get("5"), AbsenceTerm.ABSENT()));
131 distributions.add(Distribution.NewInstance(divisions.get("6"), PresenceTerm.PRESENT()));
132
133 Map<PresenceAbsenceTermBase<?>, Color> presenceAbsenceColorMap = new HashMap<PresenceAbsenceTermBase<?>, Color>();
134 presenceAbsenceColorMap.put(PresenceTerm.PRESENT(), Color.BLUE);
135 presenceAbsenceColorMap.put(PresenceTerm.INTRODUCED(), Color.BLACK);
136 presenceAbsenceColorMap.put(PresenceTerm.CULTIVATED(), Color.YELLOW);
137 presenceAbsenceColorMap.put(AbsenceTerm.ABSENT(), Color.DARK_GRAY);
138 String backLayer ="";
139 presenceAbsenceColorMap = null;
140 String bbox="-20,0,120,70";
141 List<Language> languages = new ArrayList<Language>();
142
143 String result = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(distributions, presenceAbsenceColorMap, 600, 300, bbox,backLayer, languages );
144 //TODO Set semantics is not determined
145 //String expected = "http://www.test.de/webservice?l=tdwg3&ad=tdwg3:a:GER|b:OKL|c:BGM|b:SPA|d:FRA&as=a:005500|b:00FF00|c:FFFFFF|d:001100&bbox=-20,40,40,40&ms=400x300";
146 System.out.println(result);
147 assertTrue(result.startsWith("l="));
148 assertTrue(result.endsWith("&ms=600,300"));
149 assertTrue(result.matches(".*ad=cyprusdivs:bdcode:.*"));
150 assertTrue(result.matches(".*[a-d]:5,4[\\|&].*") || result.matches(".*[a-d]:4,5[\\|&].*") );
151 assertTrue(result.matches(".*[a-d]:1,6[\\|&].*") || result.matches(".*[a-d]:6,1[\\|&].*") );
152 assertTrue(result.matches(".*[a-d]:2[\\|&].*") );
153 assertTrue(result.matches(".*[a-d]:3[\\|&].*") );
154 }
155
156 public static final UUID uuidCyprusDivisionsVocabulary = UUID.fromString("2119f610-1f93-4d87-af28-40aeefaca100");
157 private Map<String, NamedArea> divisions = new HashMap<String, NamedArea>();
158
159 private boolean makeCyprusAreas() {
160 //divisions
161
162
163 NamedAreaType areaType = NamedAreaType.NATURAL_AREA();
164 NamedAreaLevel areaLevel = NamedAreaLevel.NewInstance("Cyprus Division", "Cyprus Division", null);
165
166 TermVocabulary areaVocabulary = TermVocabulary.NewInstance("Cyprus devisions", "Cyprus divisions", null, null);
167 areaVocabulary.setUuid(uuidCyprusDivisionsVocabulary);
168
169 for(int i = 1; i <= 8; i++){
170 UUID divisionUuid = getNamedAreaUuid(String.valueOf(i));
171 NamedArea division = this.getNamedArea(divisionUuid, "Division " + i, "Cyprus: Division " + i, String.valueOf(i), areaType, areaLevel, areaVocabulary);
172 divisions.put(String.valueOf(i), division);
173 }
174
175 // indigenousStatus = (PresenceTerm)getTermService().find(CyprusTransformer.indigenousUuid);
176 // casualStatus = (PresenceTerm)getTermService().find(CyprusTransformer.casualUuid);
177 // nonInvasiveStatus = (PresenceTerm)getTermService().find(CyprusTransformer.nonInvasiveUuid);
178 // invasiveStatus = (PresenceTerm)getTermService().find(CyprusTransformer.invasiveUuid);
179 // questionableStatus = (PresenceTerm)getTermService().find(CyprusTransformer.questionableUuid);
180
181 return true;
182
183
184 }
185
186 public static final UUID uuidDivision1 = UUID.fromString("ab17eee9-1abb-4ce9-a9a2-563f840cdbfc");
187 public static final UUID uuidDivision2 = UUID.fromString("c3606165-efb7-4224-a168-63e009eb4aa5");
188 public static final UUID uuidDivision3 = UUID.fromString("750d4e07-e34b-491f-a7b7-09723afdc960");
189 public static final UUID uuidDivision4 = UUID.fromString("8a858922-e8e5-4791-ad53-906e50633ec7");
190 public static final UUID uuidDivision5 = UUID.fromString("16057133-d541-4ebd-81d4-cb92265ec54c");
191 public static final UUID uuidDivision6 = UUID.fromString("fbf21230-4a42-4f4c-9af8-5da52123c264");
192 public static final UUID uuidDivision7 = UUID.fromString("d31dd96a-36ea-4428-871c-d8552a9565ca");
193 public static final UUID uuidDivision8 = UUID.fromString("236ea447-c3ab-486d-9e06-cc5907861acc");
194
195
196 public UUID getNamedAreaUuid(String key) {
197 if (CdmUtils.isEmpty(key)){return null;
198 }else if (key.equalsIgnoreCase("1")){return uuidDivision1;
199 }else if (key.equalsIgnoreCase("2")){return uuidDivision2;
200 }else if (key.equalsIgnoreCase("3")){return uuidDivision3;
201 }else if (key.equalsIgnoreCase("4")){return uuidDivision4;
202 }else if (key.equalsIgnoreCase("5")){return uuidDivision5;
203 }else if (key.equalsIgnoreCase("6")){return uuidDivision6;
204 }else if (key.equalsIgnoreCase("7")){return uuidDivision7;
205 }else if (key.equalsIgnoreCase("8")){return uuidDivision8;
206 }else{
207 return null;
208 }
209 }
210
211 protected NamedArea getNamedArea(UUID uuid, String label, String text, String labelAbbrev, NamedAreaType areaType, NamedAreaLevel level, TermVocabulary voc){
212 NamedArea namedArea = NamedArea.NewInstance(text, label, labelAbbrev);
213 voc.addTerm(namedArea);
214 namedArea.setType(areaType);
215 namedArea.setLevel(level);
216 namedArea.setUuid(uuid);
217 return namedArea;
218 }
219 }