Project

General

Profile

Download (11 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2009 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
package eu.etaxonomy.cdm.persistence.dao.hibernate.description;
11

    
12
import java.io.FileNotFoundException;
13
import java.util.Map;
14
import java.util.UUID;
15

    
16
import org.apache.log4j.Logger;
17
import org.junit.Assert;
18
import org.junit.Before;
19
import org.junit.BeforeClass;
20
import org.junit.Test;
21
import org.unitils.dbunit.annotation.DataSet;
22
import org.unitils.dbunit.annotation.ExpectedDataSet;
23
import org.unitils.dbunit.datasetfactory.impl.MultiSchemaXmlDataSetFactory;
24
import org.unitils.spring.annotation.SpringBeanByType;
25

    
26
import eu.etaxonomy.cdm.model.common.DefinedTerm;
27
import eu.etaxonomy.cdm.model.common.Language;
28
import eu.etaxonomy.cdm.model.common.LanguageString;
29
import eu.etaxonomy.cdm.model.description.CategoricalData;
30
import eu.etaxonomy.cdm.model.description.Feature;
31
import eu.etaxonomy.cdm.model.description.State;
32
import eu.etaxonomy.cdm.model.description.StateData;
33
import eu.etaxonomy.cdm.model.description.TextData;
34
import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;
35
import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao;
36
import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionElementDao;
37
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;
38
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
39
import eu.etaxonomy.cdm.test.unitils.CleanSweepInsertLoadStrategy;
40

    
41
/**
42
 * @author a.mueller
43
 * @date 25.11.2010
44
 *
45
 */
46
public class DescriptionElementDaoHibernateImplTest extends CdmTransactionalIntegrationTest{
47
	private static final Logger logger = Logger.getLogger(DescriptionElementDaoHibernateImplTest.class);
48

    
49
	@SpringBeanByType
50
	IDescriptionElementDao descriptionElementDao;
51

    
52
	@SpringBeanByType
53
    IDescriptionDao descriptionDao;
54

    
55

    
56
	@SpringBeanByType
57
	IDefinedTermDao termDao;
58

    
59
	@SpringBeanByType
60
	ITaxonDao taxonDao;
61

    
62

    
63

    
64
	private final UUID uuidSingleTextData = UUID.fromString("31a0160a-51b2-4565-85cf-2be58cb561d6");
65
	private final UUID uuidDobuleTextData = UUID.fromString("50f6b799-3585-40a7-b69d-e7be77b2651a");
66

    
67
	private final boolean printDatasets = false;
68

    
69
	/**
70
	 * @throws java.lang.Exception
71
	 */
72
	@BeforeClass
73
	public static void setUpBeforeClass() throws Exception {
74
	}
75

    
76
	/**
77
	 * @throws java.lang.Exception
78
	 */
79
	@Before
80
	public void setUp() throws Exception {
81
	}
82

    
83
// ***************************** TESTS ************************************/
84

    
85

    
86

    
87
	/**
88
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#countMedia(eu.etaxonomy.cdm.model.description.DescriptionElementBase)}.
89
	 */
90
	@Test
91
	public void testCountMedia() {
92
		logger.warn("Not yet implemented");
93
	}
94

    
95

    
96
	/**
97
	 * See #2114
98
	 */
99
	@Test
100
	@DataSet // (value="DescriptionElementDaoHibernateImplTest.xml")
101
	public void testRetrieveMultiLanguageString(){
102
//		int count = descriptionElementDao.count(TextData.class);
103
//		Assert.assertTrue("There must exist TextData", count > 0);
104

    
105
		//test read
106
		TextData textDataTwo = (TextData)descriptionElementDao.findByUuid(uuidDobuleTextData);
107
		Assert.assertEquals("There should be exactly 2 languageText in the multilanguageText", 2, textDataTwo.size());
108
		Assert.assertTrue("One language should be English", textDataTwo.containsKey(Language.ENGLISH()));
109
		Language eng = Language.ENGLISH();
110
//		System.out.println("English: " + eng.getLabel() + "("+ eng.getId() + ", " + eng.getUuid() + ")");
111
//
112
//		for (Language lang: multiLangText.keySet()){
113
//			System.out.println(lang.getLabel() + "("+ lang.getId() + ", " + lang.getUuid() + ")");
114
//			boolean equal = lang.equals(eng);
115
//			System.out.println(equal);
116
//		}
117
//		boolean contains = multiLangText.keySet().contains(eng);
118
//		String et = doubleLanguageTextData.getText(eng);
119
		LanguageString englishText = textDataTwo.getLanguageText(eng);
120
		Assert.assertNotNull("English text should exist", englishText);
121
		Assert.assertEquals("The English text should be correct", "Praesent vitae turpis vitae sapien sodales sagittis.", englishText.getText());
122
		LanguageString czechText = textDataTwo.getLanguageText(Language.CZECH());
123
		Assert.assertNotNull("Czech", czechText);
124
		Assert.assertEquals("The Czech text should be correct", "A Czech translation for Praesent ...", czechText.getText());
125
	}
126

    
127
	/**
128
	 * See #2114
129
	 */
130
	@Test
131
	@DataSet //(value="DescriptionElementDaoHibernateImplTest.xml")
132
	@ExpectedDataSet
133
	public void testPersistMultiLanguageString(){
134

    
135
		//test write
136
		TextData singleLanguageTextData = (TextData)descriptionElementDao.findByUuid(uuidSingleTextData);
137
		Map<Language, LanguageString> multiLangText = singleLanguageTextData.getMultilanguageText();
138
		Assert.assertEquals("There should be exactly 1 languageText in the multilanguageText", 1, multiLangText.size());
139
		Assert.assertTrue("The language should be English", multiLangText.containsKey(Language.ENGLISH()));
140
		singleLanguageTextData.putText(Language.GERMAN(), "Ein test auf deutsch");
141
		Assert.assertEquals("There should be exactly 2 languageText in the multilanguageText", 2, singleLanguageTextData.size());
142
		String germanText = singleLanguageTextData.getText(Language.GERMAN());
143
		Assert.assertNotNull("German text should exist", germanText);
144

    
145
		LanguageString germanLanguageText = singleLanguageTextData.getLanguageText(Language.GERMAN());
146
		Assert.assertNotNull("German language text should exist", germanLanguageText);
147

    
148
		singleLanguageTextData.putText(Language.ENGLISH(), singleLanguageTextData.getText(Language.ENGLISH()));
149
		descriptionElementDao.saveOrUpdate(singleLanguageTextData);
150

    
151
		setComplete(); endTransaction();
152
		try {if (printDatasets){printDataSet(System.out, new String[]{"LanguageString", "DescriptionElementBase", "DESCRIPTIONELEMENTBASE_LANGUAGESTRING"});}
153
		} catch(Exception e) { logger.warn(e);}
154
	}
155

    
156
	/**
157
	 * See #2114
158
	 */
159
	@Test
160
	@DataSet //(value="DescriptionElementDaoHibernateImplTest.xml")
161
	@ExpectedDataSet
162
	public void testChangeLanguageString(){
163

    
164
		//test write
165
		TextData singleLanguageTextData = (TextData)descriptionElementDao.findByUuid(uuidSingleTextData);
166
		Map<Language, LanguageString> multiLangText = singleLanguageTextData.getMultilanguageText();
167
		Assert.assertEquals("There should be exactly 1 languageText in the multilanguageText", 1, multiLangText.size());
168
		Assert.assertTrue("The language should be English", multiLangText.containsKey(Language.ENGLISH()));
169

    
170
		singleLanguageTextData.putText(Language.ENGLISH(), "A new English text");
171
		descriptionElementDao.saveOrUpdate(singleLanguageTextData);
172

    
173
		setComplete(); endTransaction();
174
		try {if (printDatasets){printDataSet(System.out, new String[]{"LanguageString", "DescriptionElementBase", "DESCRIPTIONELEMENTBASE_LANGUAGESTRING"});}
175
		} catch(Exception e) { logger.warn(e);}
176
	}
177

    
178
	/**
179
	 * See #2114
180
	 */
181
	@Test
182
	@DataSet //(value="DescriptionElementDaoHibernateImplTest.xml")
183
	@ExpectedDataSet
184
	public void testRemoveLanguageString(){
185

    
186
		//test write
187
		TextData textDataTwo = (TextData)descriptionElementDao.findByUuid(uuidDobuleTextData);
188
		Assert.assertEquals("There should be exactly 2 languageText in the multilanguageText", 2, textDataTwo.size());
189

    
190
		Assert.assertTrue("The language should be English", textDataTwo.containsKey(Language.ENGLISH()));
191

    
192
		textDataTwo.removeText(Language.ENGLISH());
193
		Assert.assertEquals("There should be only 1 language left", 1, textDataTwo.size());
194
		descriptionElementDao.saveOrUpdate(textDataTwo);
195

    
196
		setComplete(); endTransaction();
197
		try {if (printDatasets){printDataSet(System.out, new String[]{"LanguageString", "DescriptionElementBase", "DESCRIPTIONELEMENTBASE_LANGUAGESTRING"});}
198
		} catch(Exception e) { logger.warn(e);}
199
	}
200

    
201
	/**
202
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#count(java.lang.Class, java.lang.String)}.
203
	 */
204
	@Test
205
	public void testCountClassOfQextendsDescriptionElementBaseString() {
206
		logger.warn("Not yet implemented");
207
	}
208

    
209
	/**
210
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#getMedia(eu.etaxonomy.cdm.model.description.DescriptionElementBase, java.lang.Integer, java.lang.Integer, java.util.List)}.
211
	 */
212
	@Test
213
	public void testGetMedia() {
214
		logger.warn("Not yet implemented");
215
	}
216

    
217
	/**
218
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)}.
219
	 */
220
	@Test
221
	public void testSearch() {
222
		logger.warn("Not yet implemented");
223
	}
224

    
225
	/**
226
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#purgeIndex()}.
227
	 */
228
	@Test
229
	public void testPurgeIndex() {
230
		logger.warn("Not yet implemented");
231
	}
232

    
233
	/**
234
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#rebuildIndex()}.
235
	 */
236
	@Test
237
	public void testRebuildIndex() {
238
		logger.warn("Not yet implemented");
239
	}
240

    
241
	/**
242
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#optimizeIndex()}.
243
	 */
244
	@Test
245
	public void testOptimizeIndex() {
246
		logger.warn("Not yet implemented");
247
	}
248

    
249
	/**
250
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#count(java.lang.String)}.
251
	 */
252
	@Test
253
	public void testCountString() {
254
		logger.warn("Not yet implemented");
255
	}
256

    
257
	/**
258
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#suggestQuery(java.lang.String)}.
259
	 */
260
	@Test
261
	public void testSuggestQuery() {
262
		logger.warn("Not yet implemented");
263
	}
264

    
265
	@Test  //test cascading for modifying text (and others)
266
	@DataSet( loadStrategy=CleanSweepInsertLoadStrategy.class)
267
	@ExpectedDataSet(factory=MultiSchemaXmlDataSetFactory.class)
268
	public void testSaveCategoricalData(){
269
		UUID uuidDummyState = UUID.fromString("881b9c80-626d-47a6-b308-a63ee5f4178f");
270
		State state = (State)termDao.findByUuid(uuidDummyState);
271
		CategoricalData categoricalData = CategoricalData.NewInstance();
272
		categoricalData.setUuid(UUID.fromString("5c3f2340-f675-4d50-af96-89a2a12993b8"));
273
		categoricalData.setFeature(Feature.DESCRIPTION());
274
		StateData stateData = StateData.NewInstance(state);
275
		stateData.setUuid(UUID.fromString("04b9190d-d4ab-4c3a-8dec-8293dc820ddc"));
276
		stateData.putModifyingText(Language.ENGLISH(), "test modifier");
277
		LanguageString langString = stateData.getModifyingText().get(Language.ENGLISH());
278
		langString.setUuid(UUID.fromString("53a91bd4-d758-47ec-a385-94799bdb9f32"));
279
		categoricalData.addStateData(stateData);
280
		DefinedTerm modifier = DefinedTerm.SEX_FEMALE();
281
		System.out.println(modifier.getId());
282
		stateData.addModifier(modifier);
283

    
284
		descriptionElementDao.save(categoricalData);
285
		commit();
286
//		commitAndStartNewTransaction(new String[]{"Hibernate_sequences","DescriptionElementBase","DescriptionElementBase_StateData","StateData_DefinedTermBase", "StateData", "StateData_LanguageString", "LanguageString"});
287
	}
288

    
289

    
290

    
291
    @Override
292
    public void createTestDataSet() throws FileNotFoundException {}
293

    
294
}
(2-2/4)