Project

General

Profile

Download (6.75 KB) Statistics
| Branch: | Tag: | 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.api.service;
11

    
12
import java.util.Collection;
13
import java.util.HashSet;
14
import java.util.Iterator;
15
import java.util.Map.Entry;
16
import java.util.Set;
17
import java.util.UUID;
18

    
19
import junit.framework.Assert;
20

    
21
import org.apache.log4j.Logger;
22
import org.junit.Test;
23
import org.unitils.dbunit.annotation.DataSet;
24
import org.unitils.spring.annotation.SpringBeanByType;
25

    
26
import eu.etaxonomy.cdm.api.service.pager.Pager;
27
import eu.etaxonomy.cdm.model.common.Language;
28
import eu.etaxonomy.cdm.model.common.LanguageString;
29
import eu.etaxonomy.cdm.model.description.DescriptionBase;
30
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
31
import eu.etaxonomy.cdm.model.description.Feature;
32
import eu.etaxonomy.cdm.model.description.TaxonDescription;
33
import eu.etaxonomy.cdm.model.description.TextData;
34
import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
35

    
36
/**
37
 * @author a.babadshanjan
38
 * @created 09.02.2009
39
 * @version 1.0
40
 */
41
public class DescriptionServiceImplTest extends CdmIntegrationTest {
42
	@SuppressWarnings("unused")
43
	private static Logger logger = Logger.getLogger(DescriptionServiceImplTest.class);
44
	
45
	@SpringBeanByType
46
	private IDescriptionService service;
47

    
48
	@SpringBeanByType
49
	private ITermService termService;
50

    
51
	
52

    
53
	@Test
54
	public void testGetDefaultFeatureVocabulary() {
55
		
56
		service.getDefaultFeatureVocabulary();
57
	}
58
	
59
	@Test
60
	@DataSet("CommonServiceImplTest.xml")
61
	public void testChangeDescriptionElement(){
62
		DescriptionBase descBase = service.find(UUID.fromString("eb17b80a-9be6-4642-a6a8-b19a318925e6"));
63
		Set<DescriptionElementBase> elements = descBase.getElements();
64
		Iterator iterator = elements.iterator();
65
		while (iterator.hasNext()){
66
			DescriptionElementBase base = (DescriptionElementBase) iterator.next();
67
			if (base instanceof TextData){
68
				TextData textdata = (TextData) base;
69
				Set <Entry<Language,LanguageString>> entries = textdata.getMultilanguageText().entrySet();
70
				Iterator entryIterator = entries.iterator();
71
				while (entryIterator.hasNext()){
72
					Entry <Language, LanguageString> entry = (Entry<Language, LanguageString>) entryIterator.next();
73
					LanguageString langString = entry.getValue();
74
//					System.out.println(langString);
75
					langString.setText("blablubber");
76
				}
77
			}
78
			
79
		}
80
		service.saveOrUpdate(descBase);
81
		Pager<DescriptionElementBase> allElements = service.getDescriptionElements(null, null, null, null, null, null);
82
		Assert.assertEquals(1, allElements.getCount().intValue());
83
		DescriptionElementBase test = allElements.getRecords().get(0);
84
		if (test instanceof TextData){
85
		
86
			Set <Entry<Language,LanguageString>> entries = ((TextData) test).getMultilanguageText().entrySet();
87
			Iterator entryIterator = entries.iterator();
88
			while (entryIterator.hasNext()){
89
				Entry <Language, LanguageString> entry = (Entry<Language, LanguageString>) entryIterator.next();
90
				LanguageString langString = entry.getValue();
91
//				System.out.println(langString);
92
			}
93
		}
94
	}
95
	
96
	@Test
97
	public void testMoveDescriptionElementsToTaxon(){
98
		UUID commonNameFeatureUuid = Feature.COMMON_NAME().getUuid();
99
		
100
		Feature commonNameFeature = (Feature)termService.find(commonNameFeatureUuid);
101
		
102
		TaxonDescription sourceDescription = TaxonDescription.NewInstance();
103
		
104
		TextData element = TextData.NewInstance();
105
		element.setFeature(commonNameFeature);
106
		sourceDescription.addElement(element);
107
		
108
		TextData element2 = TextData.NewInstance();
109
		element2.setFeature(commonNameFeature);
110
		sourceDescription.addElement(element2);
111
		
112
		Collection<DescriptionElementBase> sourceCollection = new HashSet<DescriptionElementBase>();
113
		sourceCollection.addAll(sourceDescription.getElements());
114
		TextData element3 = TextData.NewInstance();
115
		element3.setFeature(commonNameFeature);
116
		
117
		sourceDescription.addElement(element3);
118

    
119
		Assert.assertEquals(3, sourceDescription.getElements().size());
120
		
121
		TaxonDescription targetDescription = TaxonDescription.NewInstance();
122
		this.service.save(sourceDescription);
123
		this.service.save(targetDescription);
124
		
125
		service.moveDescriptionElementsToDescription(sourceCollection, targetDescription, false);
126
		
127
		Assert.assertEquals("Source descirption should have 1 element left", 1, sourceDescription.getElements().size());
128
		Assert.assertEquals("Target descriptoin should have 2 new elements", 2, targetDescription.getElements().size());
129
//the following tests are not valid anymore as elements are cloned now even if isCopy is false
130
//		Assert.assertTrue("The moved element should be in the new description", targetDescription.getElements().contains(element));
131
//		Assert.assertTrue("The moved element2 should be in the new description", targetDescription.getElements().contains(element2));
132
//		Assert.assertFalse("Element3 should not be in the new description", targetDescription.getElements().contains(element3));
133
		Assert.assertTrue("Element3 should remain in the old description", sourceDescription.getElements().contains(element3));
134
		this.service.save(sourceDescription);
135
		this.service.save(targetDescription);
136
		
137
		try {
138
			service.moveDescriptionElementsToDescription(targetDescription.getElements(), sourceDescription, false);
139
		} catch (Exception e) {
140
			//asserting that no ConcurrentModificationException is thrown when the elements collection is passed as a parameter
141
			e.printStackTrace();
142
			Assert.fail();
143
		}
144
		
145
		Assert.assertEquals("Source description should have 3 elements again", 3, sourceDescription.getElements().size());
146
		Assert.assertEquals("Destination description should have no elements again", 0, targetDescription.getElements().size());
147
		this.service.save(sourceDescription);
148
		this.service.save(targetDescription);
149
		
150
		//test copy
151
		sourceCollection.clear();
152
		sourceCollection.add(sourceDescription.getElements().iterator().next());
153
		service.moveDescriptionElementsToDescription(sourceCollection, targetDescription, true);
154
		
155
		Assert.assertEquals("Source description should still have 3 elements", 3, sourceDescription.getElements().size());
156
		int size = targetDescription.getElements().size();
157
		Assert.assertEquals("Destination descirption should have 1 element again", 1, size);
158
		for (DescriptionElementBase targetElement : targetDescription.getElements()){
159
			Assert.assertFalse("Target elements may not be in sourced description as they are only clones (but not same).", sourceDescription.getElements().contains(targetElement));
160
		}
161
		this.service.save(targetDescription);
162
		this.service.save(sourceDescription);
163
		
164
		
165
	}
166
}
(3-3/13)