Project

General

Profile

Download (11 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
package eu.etaxonomy.cdm.persistence.dao.hibernate.description;
10

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

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

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

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

    
48
	@SpringBeanByType
49
	IDescriptionElementDao descriptionElementDao;
50

    
51
	@SpringBeanByType
52
    IDescriptionDao descriptionDao;
53

    
54

    
55
	@SpringBeanByType
56
	IDefinedTermDao termDao;
57

    
58
	@SpringBeanByType
59
	ITaxonDao taxonDao;
60

    
61

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

    
65
	private final boolean printDatasets = false;
66

    
67
	@BeforeClass
68
	public static void setUpBeforeClass() throws Exception {}
69

    
70
	@Before
71
	public void setUp() throws Exception {}
72

    
73
// ***************************** TESTS ************************************/
74

    
75
	/**
76
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#countMedia(eu.etaxonomy.cdm.model.description.DescriptionElementBase)}.
77
	 */
78
	@Test
79
	public void testCountMedia() {
80
		logger.warn("Not yet implemented");
81
	}
82

    
83

    
84
	/**
85
	 * See #2114
86
	 */
87
	@Test
88
	@DataSet // (value="DescriptionElementDaoHibernateImplTest.xml")
89
	public void testRetrieveMultiLanguageString(){
90
//		int count = descriptionElementDao.count(TextData.class);
91
//		Assert.assertTrue("There must exist TextData", count > 0);
92

    
93
		//test read
94
		TextData textDataTwo = (TextData)descriptionElementDao.findByUuid(uuidDobuleTextData);
95
		Assert.assertEquals("There should be exactly 2 languageText in the multilanguageText", 2, textDataTwo.size());
96
		Assert.assertTrue("One language should be English", textDataTwo.containsKey(Language.ENGLISH()));
97
		Language eng = Language.ENGLISH();
98
//		System.out.println("English: " + eng.getLabel() + "("+ eng.getId() + ", " + eng.getUuid() + ")");
99
//
100
//		for (Language lang: multiLangText.keySet()){
101
//			System.out.println(lang.getLabel() + "("+ lang.getId() + ", " + lang.getUuid() + ")");
102
//			boolean equal = lang.equals(eng);
103
//			System.out.println(equal);
104
//		}
105
//		boolean contains = multiLangText.keySet().contains(eng);
106
//		String et = doubleLanguageTextData.getText(eng);
107
		LanguageString englishText = textDataTwo.getLanguageText(eng);
108
		Assert.assertNotNull("English text should exist", englishText);
109
		Assert.assertEquals("The English text should be correct", "Praesent vitae turpis vitae sapien sodales sagittis.", englishText.getText());
110
		LanguageString czechText = textDataTwo.getLanguageText(Language.CZECH());
111
		Assert.assertNotNull("Czech", czechText);
112
		Assert.assertEquals("The Czech text should be correct", "A Czech translation for Praesent ...", czechText.getText());
113
	}
114

    
115
	/**
116
	 * See #2114
117
	 */
118
	@Test
119
	@DataSet //(value="DescriptionElementDaoHibernateImplTest.xml")
120
	@ExpectedDataSet
121
	public void testPersistMultiLanguageString(){
122

    
123
		//test write
124
		TextData singleLanguageTextData = (TextData)descriptionElementDao.findByUuid(uuidSingleTextData);
125
		Map<Language, LanguageString> multiLangText = singleLanguageTextData.getMultilanguageText();
126
		Assert.assertEquals("There should be exactly 1 languageText in the multilanguageText", 1, multiLangText.size());
127
		Assert.assertTrue("The language should be English", multiLangText.containsKey(Language.ENGLISH()));
128
		singleLanguageTextData.putText(Language.GERMAN(), "Ein test auf deutsch");
129
		Assert.assertEquals("There should be exactly 2 languageText in the multilanguageText", 2, singleLanguageTextData.size());
130
		String germanText = singleLanguageTextData.getText(Language.GERMAN());
131
		Assert.assertNotNull("German text should exist", germanText);
132

    
133
		LanguageString germanLanguageText = singleLanguageTextData.getLanguageText(Language.GERMAN());
134
		Assert.assertNotNull("German language text should exist", germanLanguageText);
135

    
136
		singleLanguageTextData.putText(Language.ENGLISH(), singleLanguageTextData.getText(Language.ENGLISH()));
137
		descriptionElementDao.saveOrUpdate(singleLanguageTextData);
138

    
139
		setComplete(); endTransaction();
140
		try {if (printDatasets){printDataSet(System.out, new String[]{"LanguageString", "DescriptionElementBase", "DESCRIPTIONELEMENTBASE_LANGUAGESTRING"});}
141
		} catch(Exception e) { logger.warn(e);}
142
	}
143

    
144
	/**
145
	 * See #2114
146
	 */
147
	@Test
148
	@DataSet //(value="DescriptionElementDaoHibernateImplTest.xml")
149
	@ExpectedDataSet
150
	public void testChangeLanguageString(){
151

    
152
		//test write
153
		TextData singleLanguageTextData = (TextData)descriptionElementDao.findByUuid(uuidSingleTextData);
154
		Map<Language, LanguageString> multiLangText = singleLanguageTextData.getMultilanguageText();
155
		Assert.assertEquals("There should be exactly 1 languageText in the multilanguageText", 1, multiLangText.size());
156
		Assert.assertTrue("The language should be English", multiLangText.containsKey(Language.ENGLISH()));
157

    
158
		singleLanguageTextData.putText(Language.ENGLISH(), "A new English text");
159
		descriptionElementDao.saveOrUpdate(singleLanguageTextData);
160

    
161
		setComplete(); endTransaction();
162
		try {if (printDatasets){printDataSet(System.out, new String[]{"LanguageString", "DescriptionElementBase", "DESCRIPTIONELEMENTBASE_LANGUAGESTRING"});}
163
		} catch(Exception e) { logger.warn(e);}
164
	}
165

    
166
	/**
167
	 * See #2114
168
	 */
169
	@Test
170
	@DataSet //(value="DescriptionElementDaoHibernateImplTest.xml")
171
	@ExpectedDataSet
172
	public void testRemoveLanguageString(){
173

    
174
		//test write
175
		TextData textDataTwo = (TextData)descriptionElementDao.findByUuid(uuidDobuleTextData);
176
		Assert.assertEquals("There should be exactly 2 languageText in the multilanguageText", 2, textDataTwo.size());
177

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

    
180
		textDataTwo.removeText(Language.ENGLISH());
181
		Assert.assertEquals("There should be only 1 language left", 1, textDataTwo.size());
182
		descriptionElementDao.saveOrUpdate(textDataTwo);
183

    
184
		setComplete(); endTransaction();
185
		try {if (printDatasets){printDataSet(System.out, new String[]{"LanguageString", "DescriptionElementBase", "DESCRIPTIONELEMENTBASE_LANGUAGESTRING"});}
186
		} catch(Exception e) { logger.warn(e);}
187
	}
188

    
189
	/**
190
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#count(java.lang.Class, java.lang.String)}.
191
	 */
192
	@Test
193
	public void testCountClassOfQextendsDescriptionElementBaseString() {
194
		logger.warn("Not yet implemented");
195
	}
196

    
197
	/**
198
	 * 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)}.
199
	 */
200
	@Test
201
	public void testGetMedia() {
202
		logger.warn("Not yet implemented");
203
	}
204

    
205
	/**
206
	 * 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)}.
207
	 */
208
	@Test
209
	public void testSearch() {
210
		logger.warn("Not yet implemented");
211
	}
212

    
213
	/**
214
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#purgeIndex()}.
215
	 */
216
	@Test
217
	public void testPurgeIndex() {
218
		logger.warn("Not yet implemented");
219
	}
220

    
221
	/**
222
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#rebuildIndex()}.
223
	 */
224
	@Test
225
	public void testRebuildIndex() {
226
		logger.warn("Not yet implemented");
227
	}
228

    
229
	/**
230
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#optimizeIndex()}.
231
	 */
232
	@Test
233
	public void testOptimizeIndex() {
234
		logger.warn("Not yet implemented");
235
	}
236

    
237
	/**
238
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#count(java.lang.String)}.
239
	 */
240
	@Test
241
	public void testCountString() {
242
		logger.warn("Not yet implemented");
243
	}
244

    
245
	/**
246
	 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.description.DescriptionElementDaoImpl#suggestQuery(java.lang.String)}.
247
	 */
248
	@Test
249
	public void testSuggestQuery() {
250
		logger.warn("Not yet implemented");
251
	}
252

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

    
272
		descriptionElementDao.save(categoricalData);
273
		commit();
274
//		commitAndStartNewTransaction(new String[]{"Hibernate_sequences","DescriptionElementBase","DescriptionElementBase_StateData","StateData_DefinedTermBase", "StateData", "StateData_LanguageString", "LanguageString"});
275
	}
276

    
277

    
278

    
279
    @Override
280
    public void createTestDataSet() throws FileNotFoundException {}
281

    
282
}
(2-2/4)