Project

General

Profile

Download (6.81 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.DefinedTermBase;
28
import eu.etaxonomy.cdm.model.common.Language;
29
import eu.etaxonomy.cdm.model.common.LanguageString;
30
import eu.etaxonomy.cdm.model.description.DescriptionBase;
31
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
32
import eu.etaxonomy.cdm.model.description.Feature;
33
import eu.etaxonomy.cdm.model.description.TaxonDescription;
34
import eu.etaxonomy.cdm.model.description.TextData;
35
import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
36

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

    
49
	@SpringBeanByType
50
	private ITermService termService;
51

    
52
	
53

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

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