Project

General

Profile

Download (6.62 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
		TextData element2 = TextData.NewInstance();
109
		element2.setFeature(commonNameFeature);
110
		sourceDescription.addElement(element2);
111
		Collection<DescriptionElementBase> sourceCollection = new HashSet<DescriptionElementBase>();
112
		sourceCollection.addAll(sourceDescription.getElements());
113
		TextData element3 = TextData.NewInstance();
114
		element3.setFeature(commonNameFeature);
115
		
116
		sourceDescription.addElement(element3);
117

    
118
		Assert.assertEquals(3, sourceDescription.getElements().size());
119
		
120
		TaxonDescription targetDescription = TaxonDescription.NewInstance();
121
		this.service.save(sourceDescription);
122
		this.service.save(targetDescription);
123
		
124
		service.moveDescriptionElementsToDescription(sourceCollection, targetDescription, false);
125
		
126
		Assert.assertEquals("Source descirption should have 1 element left", 1, sourceDescription.getElements().size());
127
		Assert.assertEquals("Target descriptoin should have 2 new elements", 2, targetDescription.getElements().size());
128
		Assert.assertTrue("The moved element should be in the new description", targetDescription.getElements().contains(element));
129
		Assert.assertTrue("The moved element2 should be in the new description", targetDescription.getElements().contains(element2));
130
		Assert.assertFalse("Element3 should not be in the new description", targetDescription.getElements().contains(element3));
131
		Assert.assertTrue("Element3 should remain in the old description", targetDescription.getElements().contains(element));
132
		this.service.save(sourceDescription);
133
		this.service.save(targetDescription);
134
		
135
		try {
136
			service.moveDescriptionElementsToDescription(targetDescription.getElements(), sourceDescription, false);
137
		} catch (Exception e) {
138
			//asserting that no ConcurrentModificationException is thrown when the elements collection is passed as a parameter
139
			Assert.fail();
140
		}
141
		
142
		Assert.assertEquals("Source descirption should have 3 elements again", 3, sourceDescription.getElements().size());
143
		Assert.assertEquals("Destination descirption should have no elements again", 0, targetDescription.getElements().size());
144
		this.service.save(sourceDescription);
145
		this.service.save(targetDescription);
146
		
147
		//test paste
148
		sourceCollection.add(sourceDescription.getElements().iterator().next());
149
		service.moveDescriptionElementsToDescription(sourceCollection, targetDescription, true);
150

    
151
		Assert.assertEquals("Source descirption should still have 3 elements", 3, sourceDescription.getElements().size());
152
		Assert.assertEquals("Destination descirption should have 1 element again", 1, targetDescription.getElements().size());
153
		for (DescriptionElementBase targetElement : targetDescription.getElements()){
154
			Assert.assertFalse("Target elements may not be in sourced description as they are only clones (but not same).", sourceDescription.getElements().contains(targetElement));
155
		}
156
		this.service.save(targetDescription);
157
		this.service.save(sourceDescription);
158
		
159

    
160
	}
161
}
(3-3/14)