Project

General

Profile

Download (9.35 KB) Statistics
| Branch: | Tag: | 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.model.location;
11

    
12
import static org.junit.Assert.assertEquals;
13

    
14
import java.util.List;
15
import java.util.Set;
16
import java.util.TreeSet;
17
import java.util.UUID;
18

    
19
import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;
20
import org.junit.Assert;
21
import org.junit.Test;
22

    
23
import eu.etaxonomy.cdm.model.common.Language;
24
import eu.etaxonomy.cdm.model.term.DefaultTermInitializer;
25
import eu.etaxonomy.cdm.model.term.Representation;
26
import eu.etaxonomy.cdm.model.term.TermVocabulary;
27
import eu.etaxonomy.cdm.test.unit.EntityTestBase;
28

    
29
/**
30
 * @author a.mueller
31
 * @since 23.10.2008
32
 */
33
public class TdwgAreaTest extends EntityTestBase {
34

    
35
	@SuppressWarnings("unused")
36
	private static final Logger logger = LogManager.getLogger(TdwgAreaTest.class);
37

    
38
// ************** TESTS *************************************************
39

    
40
	@Test
41
	public void testGetAreaByTdwgAbbreviation() {
42
		Language.ENGLISH(); // to make sure Terms are already loaded
43
		NamedArea area = getAreaByTdwgAbbreviation("GER");
44
		Assert.assertEquals("Germany", area.getLabel(Language.ENGLISH()));
45
		Assert.assertNull(getAreaByTdwgAbbreviation("A1R"));
46
	}
47

    
48
	@Test
49
	public void testGetAreaByTdwgLabel() {
50
		Assert.assertEquals("Germany", getAreaByTdwgLabel("Germany").getLabel(Language.ENGLISH()));
51
		Assert.assertNull(getAreaByTdwgLabel("A1R"));
52
	}
53

    
54
	@Test
55
	public void testIsTdwgAreaLabel() {
56
		Assert.assertTrue(isTdwgAreaLabel("Germany"));
57
		Assert.assertFalse(isTdwgAreaLabel("sf2fe"));
58
	}
59

    
60
//	/**
61
//	 * Test method for {@link eu.etaxonomy.cdm.model.location.TdwgArea#addTdwgArea(eu.etaxonomy.cdm.model.location.NamedArea)}.
62
//	 */
63
//	@Test
64
//	public void testAddTdwgArea() {
65
//		String testAreaLabel = "TestArea";
66
//		Assert.assertFalse(isTdwgAreaLabel(testAreaLabel));
67
//		NamedArea area = NamedArea.NewInstance("", testAreaLabel, "");
68
//		TdwgArea.addTdwgArea(area);
69
//		Field labelMapField = null;
70
//		try {
71
//			labelMapField = TdwgArea.class.getDeclaredField("labelMap");
72
//			labelMapField.setAccessible(true);
73
//			Object obj = labelMapField.get(null);
74
//			Map<String, UUID> map = (Map<String, UUID>)obj;
75
//			UUID uuid = map.get(testAreaLabel.toLowerCase());
76
//			Assert.assertEquals(area.getUuid(), uuid);
77
//		} catch (Exception e) {
78
//			// TODO Auto-generated catch block
79
//			e.printStackTrace();
80
//		}
81
//	}
82

    
83
	@Test
84
	public void testLoadingOfPartOfRelationships() {
85
		NamedArea britain = getAreaByTdwgAbbreviation("GRB");
86
		NamedArea northernEurope = getAreaByTdwgAbbreviation("10");
87
		assert britain != null : "NamedArea must exist";
88
		assert northernEurope != null : "NamedArea must exist";
89

    
90
		Assert.assertTrue("Northern Europe should include Britain",northernEurope.getIncludes().contains(britain));
91
		assertEquals("Britain should be part of Northern Europe",britain.getPartOf(),northernEurope);
92
	}
93

    
94
	@Test
95
	public void testNamedAreaLevelAssignment() {
96
		NamedArea britain = getAreaByTdwgAbbreviation("GRB");
97
		NamedArea northernEurope = getAreaByTdwgAbbreviation("10");
98
		assert britain != null : "NamedArea must exist";
99
		assert northernEurope != null : "NamedArea must exist";
100

    
101
		assertEquals("Northern Europe should be TDWG Level 2",northernEurope.getLevel(),NamedAreaLevel.TDWG_LEVEL2());
102
		assertEquals("Britain should be TDWG Level 3",britain.getLevel(),NamedAreaLevel.TDWG_LEVEL3());
103
	}
104

    
105
	@Test
106
	public void testUtf8(){
107
		DefaultTermInitializer initializer = new DefaultTermInitializer();
108
		initializer.initialize();
109
		NamedArea saoTome = NamedArea.getTdwgTermByUuid(UUID.fromString("c64e07cc-0a58-44b3-ac91-c216d1b91c1f"));
110
		assertEquals("Utf8 error", "S\u00E3o Tom\u00E9", saoTome.getLabel());
111
	}
112

    
113
	@Test
114
	public void testCompare(){
115
		//test compare method for set functionality. TreeSet is used by OrderedTermVocabulary therefore
116
		//this needs to work correctly
117
		TermVocabulary voc = getAreaByTdwgAbbreviation("1").getVocabulary();
118

    
119
		Set<NamedArea> set = new TreeSet<>();
120
		NamedArea area3 = NamedArea.NewInstance();
121
		area3.addRepresentation(Representation.NewInstance("Spain", "Spain", "SPA", Language.DEFAULT()));
122
		NamedArea area4 = NamedArea.NewInstance();
123
		area4.addRepresentation(Representation.NewInstance("Spain6", "Spain6", "SPA-SP", Language.DEFAULT()));
124
		voc.addTerm(area3);
125
		voc.addTerm(area4);
126

    
127
		set.add(area3);
128
		set.add(area4);
129
		Assert.assertEquals("There must be 2 areas in the set", 2, set.size());
130
	}
131

    
132
//	@Test
133
//	public void getHirarchichalAreasTest(){
134
//		//NamedArea area0 = getAreaByTdwgLabel("Spain");
135
//		//System.out.println(area0.getLabel().toString());
136
//		//NamedArea partof = area0.getPartOf();
137
//		//System.out.println(partof.getLevel().getLabel());
138
////		NamedAreaLevel level = area0.getLevel();
139
////		System.out.println(level.getLabel().toString());
140
////		System.out.println(getAreaLabelForTDWGLevel(1, area0));
141
////		System.out.println(getAreaLabelForTDWGLevel(2, area0));
142
////		System.out.println(getAreaLabelForTDWGLevel(3, area0));
143
//
144
//		//creating levels to omit
145
//		Set<NamedAreaLevel> omitLevels = new HashSet<NamedAreaLevel>();
146
//		NamedAreaLevel level = NamedAreaLevel.TDWG_LEVEL2();
147
//		omitLevels.add(level);
148
//
149
//		//creating and filling the list
150
//		List<NamedArea> areaList = new ArrayList<NamedArea>();
151
//		NamedArea area1 = getAreaByTdwgLabel("Spain");
152
//		areaList.add(area1);
153
//		NamedArea area2 = getAreaByTdwgLabel("Germany");
154
//		areaList.add(area2);
155
//		NamedArea area3 = getAreaByTdwgLabel("France");
156
//		areaList.add(area3);
157
//		NamedArea area4 = getAreaByTdwgLabel("Italy");
158
//		areaList.add(area4);
159
//		NamedArea area5 = getAreaByTdwgLabel("Croatia");
160
//		areaList.add(area5);
161
//		NamedArea area6 = getAreaByTdwgLabel("Portugal");
162
//		areaList.add(area6);
163
//
164
//		//System.out.println(areaListToString(areaList));
165
//
166
//		NamedAreaTree tree = new NamedAreaTree();
167
//		tree.merge(areaList, omitLevels);
168
///*
169
//		for (NamedArea area : areaList) {
170
//			List<NamedArea> levelList = area.getAllLevelList();
171
//			tree.merge(levelList);
172
//			//System.out.println(areaListToString(levelList));
173
//		}
174
//*/
175
//		System.out.println(tree.toString());
176
//		tree.sortChildren();
177
//		System.out.println(tree.toString());
178
//
179
//		List<NamedArea> areaList2 = new ArrayList<NamedArea>();
180
//		NamedArea area7 = getAreaByTdwgLabel("Chita");
181
//		areaList2.add(area7);
182
//		NamedArea area8 = getAreaByTdwgLabel("Buryatiya");
183
//		areaList2.add(area8);
184
//		NamedArea area9 = getAreaByTdwgLabel("Philippines");
185
//		areaList2.add(area9);
186
//
187
//		tree.merge(areaList2, omitLevels);
188
//		tree.sortChildren();
189
//		System.out.println(tree.toString());
190
//
191
//		List<Distribution> distList = new ArrayList<Distribution>();
192
//		Distribution dist1 = Distribution.NewInstance(area1, null);
193
//		distList.add(dist1);
194
//		Distribution dist2 = Distribution.NewInstance(area2, null);
195
//		distList.add(dist2);
196
//		Distribution dist3 = Distribution.NewInstance(area3, null);
197
//		distList.add(dist3);
198
//		Distribution dist4 = Distribution.NewInstance(area4, null);
199
//		distList.add(dist4);
200
//		Distribution dist5 = Distribution.NewInstance(area5, null);
201
//		distList.add(dist5);
202
//		Distribution dist6 = Distribution.NewInstance(area6, null);
203
//		distList.add(dist6);
204
//
205
//		DistributionTree distTree = new DistributionTree();
206
//		distTree.merge(distList, omitLevels);
207
//
208
//		List<Distribution> distList2 = new ArrayList<Distribution>();
209
//		Distribution dist7 = Distribution.NewInstance(area7, null);
210
//		distList2.add(dist7);
211
//		Distribution dist8 = Distribution.NewInstance(area8, null);
212
//		distList2.add(dist8);
213
//		Distribution dist9 = Distribution.NewInstance(area9, null);
214
//		distList2.add(dist9);
215
//		distTree.merge(distList2, omitLevels);
216
//		distTree.sortChildren();
217
//		System.out.println("## DISTRIBUTION TREE ##");
218
//		System.out.println(distTree.toString());
219
//
220
//	}
221
//
222

    
223

    
224
/*
225
	private void print(NamedAreaNode result) {
226
		System.out.print("{" + (result == null? "" :result.toString()));
227
		for (LevelNode levelNode :  result.levelList){
228
			System.out.print("[" + levelNode.toString()  );
229
			for (NamedAreaNode area : levelNode.areaList){
230
				print(area);
231
			}
232
			System.out.print("]" );
233
		}
234
		System.out.print("}");
235
	}
236
*/
237
	public String areaListToString (List<NamedArea> list){
238
		String result = "";
239
		for (NamedArea namedArea : list) {
240
			result = result + " [" + namedArea.getLabel().toString() + ", " + namedArea.getLevel().getLabel().toString() + "]";
241
		}
242
		return result;
243
	}
244

    
245
	//PRE: in parameter tdwg can not be smaller than the current tdwglevel of the second parameter
246
	public static NamedArea getAreaLabelForTDWGLevel(Integer tdwgLevel, NamedArea area){
247
		NamedArea aux = area;
248
		while (aux.getLevel().getLabel().toString().compareTo("TDWG Level " + tdwgLevel.toString()) != 0) {
249
			aux = aux.getPartOf();
250
		}
251
		return aux;
252
	}
253

    
254
	private NamedArea getAreaByTdwgAbbreviation(String tdwgAbbrev){
255
		return NamedArea.getAreaByTdwgAbbreviation(tdwgAbbrev);
256
	}
257

    
258
	private NamedArea getAreaByTdwgLabel(String tdwgLabel){
259
		return NamedArea.getAreaByTdwgLabel(tdwgLabel);
260
	}
261

    
262
	private boolean isTdwgAreaLabel(String tdwgLabel){
263
		return NamedArea.isTdwgAreaLabel(tdwgLabel);
264
	}
265
}
(3-3/3)