Project

General

Profile

Download (21 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 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 static org.junit.Assert.assertEquals;
13
import static org.junit.Assert.assertNull;
14

    
15
import java.io.FileNotFoundException;
16
import java.util.ArrayList;
17
import java.util.Arrays;
18
import java.util.Collections;
19
import java.util.Comparator;
20
import java.util.List;
21
import java.util.Set;
22
import java.util.UUID;
23

    
24
import org.apache.commons.lang.StringUtils;
25
import org.apache.log4j.Logger;
26
import org.junit.Assert;
27
import org.junit.Before;
28
import org.junit.Test;
29
import org.unitils.dbunit.annotation.DataSet;
30
import org.unitils.spring.annotation.SpringBeanByType;
31

    
32
import eu.etaxonomy.cdm.api.service.dto.GroupedTaxonDTO;
33
import eu.etaxonomy.cdm.model.name.IBotanicalName;
34
import eu.etaxonomy.cdm.model.name.Rank;
35
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
36
import eu.etaxonomy.cdm.model.reference.Reference;
37
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
38
import eu.etaxonomy.cdm.model.taxon.Classification;
39
import eu.etaxonomy.cdm.model.taxon.Taxon;
40
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
41
import eu.etaxonomy.cdm.model.taxon.TaxonNodeByNameComparator;
42
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
43
import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;
44
import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao;
45
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
46

    
47
/**
48
 * @author n.hoffmann
49
 * @since Sep 22, 2009
50
 */
51
public class ClassificationServiceImplTest extends CdmTransactionalIntegrationTest{
52

    
53
    private static final Logger logger = Logger.getLogger(ClassificationServiceImplTest.class);
54

    
55
    @SpringBeanByType
56
    private IClassificationService service;
57

    
58
    @SpringBeanByType
59
    private ITaxonService taxonService;
60

    
61
    @SpringBeanByType
62
    private ITaxonNodeService taxonNodeService;
63

    
64
    @SpringBeanByType
65
    private IClassificationService classificationService;
66

    
67
    @SpringBeanByType
68
    private IClassificationDao classificationDao;
69

    
70
    @SpringBeanByType
71
    private IReferenceDao referenceDao;
72

    
73
    private static final List<String> NODE_INIT_STRATEGY = Arrays.asList(new String[]{
74
            "childNodes",
75
            "childNodes.taxon",
76
            "childNodes.taxon.name",
77
            "taxon.sec",
78
            "taxon.name.*"
79
            });
80

    
81
    private static final UUID CLASSIFICATION_UUID = UUID.fromString("6c2bc8d9-ee62-4222-be89-4a8e31770878");
82

    
83
    private Comparator<? super TaxonNode> taxonNodeComparator;
84

    
85
    private boolean includeUnpublished;
86

    
87
    @Before
88
    public void setUp() {
89
        includeUnpublished = true;
90
    }
91

    
92

    
93
    /**
94
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadTaxonNodeByTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.UUID, java.util.List)}.
95
     */
96
    @Test
97
    public final void testLoadTaxonNodeByTaxon() {
98
		logger.warn("testLoadTaxonNodeByTaxon not yet implemented");
99
    }
100

    
101
    /**
102
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)}.
103
     */
104
    @Test
105
    public final void testLoadTaxonNode() {
106
		logger.warn("testLoadTaxonNode not yet implemented");
107
    }
108

    
109

    
110
    @Test
111
    @DataSet
112
    public final void testTaxonNodeByNameComparator() {
113
        taxonNodeComparator = new TaxonNodeByNameComparator();
114

    
115
        List<TaxonNode> nodes = service.getAllNodes();
116
        Collections.sort(nodes, taxonNodeComparator);
117

    
118
//        logger.setLevel(Level.DEBUG);
119
        if(logger.isDebugEnabled()){
120
            logger.debug("-------------");
121
	        for (TaxonNode node: nodes){
122
	        	if (node!= null && node.getTaxon() != null && node.getTaxon().getName()!= null){
123
	                logger.debug(node.getTaxon().getName().getTitleCache() + " [" + node.getTaxon().getName().getRank() + "]");
124
	        	}
125
	        }
126
        }
127

    
128
        Assert.assertEquals("Acacia N.Jacobsen, Bastm. & Yuji Sasaki", nodes.get(1).getTaxon().getName().getTitleCache());
129
        Assert.assertEquals("Acacia subgen. Aculeiferum Pedley", nodes.get(2).getTaxon().getName().getTitleCache());
130
        Assert.assertEquals("Acacia sect. Botrycephalae Yuji Sasaki", nodes.get(3).getTaxon().getName().getTitleCache());
131
        Assert.assertEquals("Acacia subgen. Phyllodineae N.Jacobsen, Bastm. & Yuji Sasaki", nodes.get(4).getTaxon().getName().getTitleCache());
132
        Assert.assertEquals("Acacia acicularis Willd.", nodes.get(5).getTaxon().getName().getTitleCache());
133
        Assert.assertEquals("×Acacia acicularis Willd. subsp. acicularis", nodes.get(6).getTaxon().getName().getTitleCache());
134
        Assert.assertEquals("Acacia cuspidifolia Maslin", nodes.get(7).getTaxon().getName().getTitleCache());
135
        Assert.assertEquals("Acacia mearnsii Benth", nodes.get(8).getTaxon().getName().getTitleCache());
136

    
137
        /*
138
        ((TaxonNodeByNameComparator)taxonNodeComparator).setSortInfraGenericFirst(false);
139
        Collections.sort(taxonNodes, taxonNodeComparator);
140

    
141
        Assert.assertEquals("Acacia cuspidifolia Maslin", taxonNodes.get(0).getTaxon().getName().getTitleCache());
142
        System.err.println();
143
        for (TaxonNode node: taxonNodes){
144
            System.err.println(node.getTaxon().getName().getTitleCache() );
145
            /*for (TaxonNode child : node.getChildNodes()){
146
                System.err.println(child.getTaxon().getName().getTitleCache());
147
            }
148
        }*/
149
//		fail("Not yet implemented");
150

    
151
    }
152

    
153

    
154
    @Test
155
    @DataSet
156
    public final void testListRankSpecificRootNodes(){
157
        Classification classification = service.find(UUID.fromString("6c2bc8d9-ee62-4222-be89-4a8e31770878"));
158

    
159
        // classification, see  createTestDataSet()
160

    
161
        // ClassificationRoot
162
        // |- Acacia N.Jacobsen, Bastm. & Yuji Sasaki                          [Genus]
163
        // |  |-- Acacia subg. Aculeiferum Pedley                              [Subgenus]
164
        // |  |-- Acacia subg. Phyllodineae N.Jacobsen, Bastm. & Yuji Sasaki   [Subgenus]
165
        // |  |  |-- Acacia sect. Botrycephalae Yuji Sasaki                    [Section (Botany)]
166
        // |  |------- Acacia cuspidifolia Maslin                              [Species]
167
        // |  |------- Acacia mearnsii Benth                                   [Species]
168
        // |---------- Acacia acicularis Willd.                                [Species]
169
        //             |-- ×Acacia acicularis Willd. subsp. acicularis         [Subspecies]
170
        //
171
        // for more historic Acacia taxonomy see http://lexikon.freenet.de/Akazien
172

    
173
        List<TaxonNode> taxonNodes = service.listRankSpecificRootNodes(null, null, null, includeUnpublished, null, null, NODE_INIT_STRATEGY);
174
        Assert.assertEquals(2, taxonNodes.size());
175

    
176
        taxonNodes = service.listRankSpecificRootNodes(classification, null, null, includeUnpublished, null, null, NODE_INIT_STRATEGY);
177
        Assert.assertEquals(2, taxonNodes.size());
178

    
179
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SECTION_BOTANY(), includeUnpublished, null, null, NODE_INIT_STRATEGY);
180
        Assert.assertEquals(4, taxonNodes.size());
181

    
182
        // also test if the pager works
183
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SECTION_BOTANY(), includeUnpublished, 10, 0, NODE_INIT_STRATEGY);
184
        Assert.assertEquals(4, taxonNodes.size());
185
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SECTION_BOTANY(), includeUnpublished, 2, 0, NODE_INIT_STRATEGY);
186
        Assert.assertEquals(2, taxonNodes.size());
187
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SECTION_BOTANY(), includeUnpublished, 2, 1, NODE_INIT_STRATEGY);
188
        Assert.assertEquals(2, taxonNodes.size());
189
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SECTION_BOTANY(), includeUnpublished, 2, 2, NODE_INIT_STRATEGY);
190
        Assert.assertEquals(0, taxonNodes.size());
191

    
192
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SPECIES(), includeUnpublished, null, null, NODE_INIT_STRATEGY);
193
        Assert.assertEquals(3, taxonNodes.size());
194

    
195
        // also test if the pager works
196
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SPECIES(), includeUnpublished, 10, 0, NODE_INIT_STRATEGY);
197
        Assert.assertEquals(3, taxonNodes.size());
198
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SPECIES(), includeUnpublished, 2, 1, NODE_INIT_STRATEGY);
199
        Assert.assertEquals(1, taxonNodes.size());
200

    
201

    
202
    }
203

    
204
    @Test
205
    @DataSet
206
    public final void testListRankSpecificRootNodes_withSubtree(){
207
        Classification classification = service.find(UUID.fromString("6c2bc8d9-ee62-4222-be89-4a8e31770878"));
208
        // classification, see  createTestDataSet()
209
        // ClassificationRoot
210
        // |- Acacia N.Jacobsen, Bastm. & Yuji Sasaki                          [Genus]
211
        // |  |-- Acacia subg. Aculeiferum Pedley                              [Subgenus]
212
        // |  |-- Acacia subg. Phyllodineae N.Jacobsen, Bastm. & Yuji Sasaki   [Subgenus]
213
        // |  |  |-- Acacia sect. Botrycephalae Yuji Sasaki                    [Section (Botany)]
214
        // |  |------- Acacia cuspidifolia Maslin                              [Species]
215
        // |  |------- Acacia mearnsii Benth                                   [Species]
216
        // |---------- Acacia acicularis Willd.                                [Species]
217
        //             |-- ×Acacia acicularis Willd. subsp. acicularis         [Subspecies]
218
        //
219
        // for more historic Acacia taxonomy see http://lexikon.freenet.de/Akazien
220

    
221
        TaxonNode subtree = taxonNodeService.find(UUID.fromString("bcdf945f-1f02-423e-883d-fe89e0af93e4"));
222

    
223

    
224
        List<TaxonNode> taxonNodes = service.listRankSpecificRootNodes(null, subtree, null, includeUnpublished, null, null, NODE_INIT_STRATEGY);
225
        Assert.assertEquals(2, taxonNodes.size());
226

    
227
        taxonNodes = service.listRankSpecificRootNodes(classification, null, null, includeUnpublished, null, null, NODE_INIT_STRATEGY);
228
        Assert.assertEquals(2, taxonNodes.size());
229

    
230
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SECTION_BOTANY(), includeUnpublished, null, null, NODE_INIT_STRATEGY);
231
        Assert.assertEquals(4, taxonNodes.size());
232

    
233
        // also test if the pager works
234
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SECTION_BOTANY(), includeUnpublished, 10, 0, NODE_INIT_STRATEGY);
235
        Assert.assertEquals(4, taxonNodes.size());
236
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SECTION_BOTANY(), includeUnpublished, 2, 0, NODE_INIT_STRATEGY);
237
        Assert.assertEquals(2, taxonNodes.size());
238
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SECTION_BOTANY(), includeUnpublished, 2, 1, NODE_INIT_STRATEGY);
239
        Assert.assertEquals(2, taxonNodes.size());
240
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SECTION_BOTANY(), includeUnpublished, 2, 2, NODE_INIT_STRATEGY);
241
        Assert.assertEquals(0, taxonNodes.size());
242

    
243
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SPECIES(), includeUnpublished, null, null, NODE_INIT_STRATEGY);
244
        Assert.assertEquals(3, taxonNodes.size());
245

    
246
        // also test if the pager works
247
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SPECIES(), includeUnpublished, 10, 0, NODE_INIT_STRATEGY);
248
        Assert.assertEquals(3, taxonNodes.size());
249
        taxonNodes = service.listRankSpecificRootNodes(classification, null, Rank.SPECIES(), includeUnpublished, 2, 1, NODE_INIT_STRATEGY);
250
        Assert.assertEquals(1, taxonNodes.size());
251
    }
252

    
253
    /**
254
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#setDao(eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao)}.
255
     */
256
    @Test
257
    public final void testSetDaoIClassificationDao() {
258
        Assert.assertNotNull(service);
259
    }
260

    
261
    @Test
262
    @DataSet
263
    public final void testGroupTaxaByHigherTaxon(){
264

    
265
        Rank minRank = Rank.GENUS();
266
        Rank maxRank = Rank.KINGDOM();
267
        List<UUID> taxonUuids = new ArrayList<>();
268
        taxonUuids.add(acacia_acicularis_uuid);
269
        taxonUuids.add(acacia_cuspidifolia_uuid);
270
        taxonUuids.add(acacia_sect_botrycephalae_uuid);
271

    
272
        List<GroupedTaxonDTO> result = this.service.groupTaxaByHigherTaxon(taxonUuids, CLASSIFICATION_UUID, minRank, maxRank);
273
        System.out.println(result);
274
        Assert.assertEquals(3, result.size());
275
        //acacia_acicularis_uuid  //is a root taxon with no parents
276
        Assert.assertEquals(acacia_acicularis_uuid, result.get(0).getTaxonUuid());
277
        Assert.assertNull(result.get(0).getGroupTaxonUuid());
278
        Assert.assertTrue(StringUtils.isBlank(result.get(0).getGroupTaxonName()));
279
        //acacia_cuspidifolia_uuid
280
        Assert.assertEquals(acacia_cuspidifolia_uuid, result.get(1).getTaxonUuid());
281
        Assert.assertNotNull(result.get(1).getGroupTaxonUuid());
282
        Assert.assertFalse(StringUtils.isBlank(result.get(1).getGroupTaxonName()));
283
        //acacia_sect_botrycephalae_uuid
284
        Assert.assertEquals(acacia_sect_botrycephalae_uuid, result.get(2).getTaxonUuid());
285
        Assert.assertNotNull(result.get(2).getGroupTaxonUuid());
286
        Assert.assertFalse(StringUtils.isBlank(result.get(2).getGroupTaxonName()));
287
    }
288

    
289

    
290
    @Test
291
    @DataSet
292
    public final void testCloneClassification(){
293
    	Classification classification = classificationDao.load(CLASSIFICATION_UUID);
294
    	Reference sec = ReferenceFactory.newGeneric();
295
    	sec.setTitle("cloned sec");
296
    	Classification clone = (Classification) classificationService.cloneClassification(CLASSIFICATION_UUID, "Cloned classification", sec, TaxonRelationshipType.CONGRUENT_TO()).getCdmEntity();
297

    
298
    	List<TaxonNode> childNodes = classification.getChildNodes();
299
    	for (TaxonNode taxonNode : childNodes) {
300
			System.out.println(taxonNode.getTaxon().getTitleCache());
301
		}
302
    	childNodes = clone.getChildNodes();
303
    	for (TaxonNode taxonNode : childNodes) {
304
    		System.out.println(taxonNode.getTaxon().getTitleCache());
305
    	}
306
    	Set<TaxonNode> allNodes = classification.getAllNodes();
307
    	assertEquals("# of direct children does not match", classification.getChildNodes().size(), clone.getChildNodes().size());
308
		assertEquals("# of all nodes does not match", allNodes.size(), clone.getAllNodes().size());
309

    
310
    	//check that original taxon does not appear in cloned classification
311
		for (TaxonNode taxonNode : allNodes) {
312
    		assertNull(clone.getNode(taxonNode.getTaxon()));
313
    	}
314
    }
315

    
316

    
317
    private UUID acacia_acicularis_uuid  = UUID.fromString("90ad2d8f-19a9-4a10-bab3-7d1de5ce1968");
318
    private UUID acacia_cuspidifolia_uuid = UUID.fromString("94123e4d-da49-4ed0-9d59-f52a9f7a3618");
319
    private UUID acacia_sect_botrycephalae_uuid = UUID.fromString("2c73a166-35d1-483d-b8e8-209214cb6193");
320

    
321

    
322
    /**
323
     * {@inheritDoc}
324
     */
325
    @Override
326
//    @Test
327
    public void createTestDataSet() throws FileNotFoundException {
328

    
329
        // ClassificationRoot
330
        // |- Acacia N.Jacobsen, Bastm. & Yuji Sasaki                          [Genus]
331
        // |  |-- Acacia subg. Aculeiferum Pedley                              [Subgenus]
332
        // |  |-- Acacia subg. Phyllodineae N.Jacobsen, Bastm. & Yuji Sasaki   [Subgenus]
333
        // |  |  |-- Acacia sect. Botrycephalae Yuji Sasaki                    [Section (Botany)]
334
        // |  |------- Acacia cuspidifolia Maslin                              [Species]
335
        // |  |------- Acacia mearnsii Benth                                   [Species]
336
        // |---------- Acacia acicularis Willd.                                [Species]
337
        //             |-- ×Acacia acicularis Willd. subsp. acicularis         [Subspecies]
338
        //
339
        // for more historic Acacia taxonomy see http://lexikon.freenet.de/Akazien
340

    
341
        // 1. create the entities   and save them
342
        Classification classification = Classification.NewInstance("Acacia Classification");
343
        classification.setUuid(CLASSIFICATION_UUID);
344
        classificationDao.save(classification);
345

    
346
        Reference sec = ReferenceFactory.newBook();
347
        sec.setTitleCache("Sp. Pl.", true);
348
        referenceDao.save(sec);
349

    
350
        IBotanicalName acacia_n = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS(), "Acacia", null, null, null, null, sec, null, null);
351
        acacia_n.setAuthorshipCache("N.Jacobsen, Bastm. & Yuji Sasaki", true);
352
        Taxon acacia_t = Taxon.NewInstance(acacia_n, sec);
353
        acacia_t.setUuid(UUID.fromString("2fc779ee-7a9d-4586-92ba-1cd774ac77f0"));
354

    
355
        IBotanicalName acacia_subg_aculeiferum_n = TaxonNameFactory.NewBotanicalInstance(Rank.SUBGENUS(), "Acacia", "Aculeiferum", null, null, null, sec, null, null);
356
        acacia_subg_aculeiferum_n.setAuthorshipCache("Pedley", true);
357
        Taxon acacia_subg_aculeiferum_t = Taxon.NewInstance(acacia_subg_aculeiferum_n, sec);
358
        acacia_subg_aculeiferum_t.setUuid(UUID.fromString("169fea08-6b7a-4315-b111-a774c7fafe30"));
359

    
360
        IBotanicalName acacia_subg_phyllodineae_n = TaxonNameFactory.NewBotanicalInstance(Rank.SUBGENUS(), "Acacia", "Phyllodineae", null, null, null, sec, null, null);
361
        acacia_subg_phyllodineae_n.setAuthorshipCache("N.Jacobsen, Bastm. & Yuji Sasaki", true);
362
        Taxon acacia_subg_phyllodineae_t = Taxon.NewInstance(acacia_subg_phyllodineae_n, sec);
363
        acacia_subg_phyllodineae_t.setUuid(UUID.fromString("a9da5d43-517e-4ca5-a490-b6a5cd637e9e"));
364

    
365
        IBotanicalName acacia_setc_botrycephalae_n = TaxonNameFactory.NewBotanicalInstance(Rank.SECTION_BOTANY(), "Acacia", "Botrycephalae", null, null, null, sec, null, null);
366
        acacia_setc_botrycephalae_n.setAuthorshipCache("Yuji Sasaki", true);
367
        Taxon acacia_sect_botrycephalae_t = Taxon.NewInstance(acacia_setc_botrycephalae_n, sec);
368
        acacia_sect_botrycephalae_t.setUuid(acacia_sect_botrycephalae_uuid);
369

    
370
        IBotanicalName acacia_cuspidifolia_n = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES(), "Acacia", null,"cuspidifolia", null, null, sec, null, null);
371
        acacia_cuspidifolia_n.setAuthorshipCache("Maslin", true);
372
        Taxon acacia_cuspidifolia_t = Taxon.NewInstance(acacia_cuspidifolia_n, sec);
373
        acacia_cuspidifolia_t.setUuid(acacia_cuspidifolia_uuid);
374

    
375
        IBotanicalName acacia_mearnsii_n = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES(), "Acacia", null,"mearnsii", null, null, sec, null, null);
376
        acacia_mearnsii_n.setAuthorshipCache("Benth", true);
377
        Taxon acacia_mearnsii_t = Taxon.NewInstance(acacia_mearnsii_n, sec);
378
        acacia_mearnsii_t.setUuid(UUID.fromString("2e55dc01-71f5-4d42-9bb0-a2448e46dd18"));
379

    
380
        IBotanicalName acacia_acicularis_n = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES(), "Acacia", null,"acicularis", null, null, sec, null, null);
381
        acacia_acicularis_n.setAuthorshipCache("Willd.", true);
382
        Taxon acacia_acicularis_t = Taxon.NewInstance(acacia_acicularis_n, sec);
383
        acacia_acicularis_t.setUuid(acacia_acicularis_uuid);
384

    
385
        IBotanicalName xacacia_acicularis_n = TaxonNameFactory.NewBotanicalInstance(Rank.SUBSPECIES(), "Acacia", null,"acicularis", "acicularis", null, sec, null, null);
386
        xacacia_acicularis_n.setAuthorshipCache("Willd.", true);
387
        xacacia_acicularis_n.setMonomHybrid(true);
388
        System.out.println(xacacia_acicularis_n.getTitleCache());
389
        Taxon xacacia_acicularis_t = Taxon.NewInstance(xacacia_acicularis_n, sec);
390
        xacacia_acicularis_t.setUuid(UUID.fromString("04d125a6-6adf-4900-97ff-82729618086a"));
391

    
392
        TaxonNode acacia_tn = classification.addChildTaxon(acacia_t, sec, null);
393
        TaxonNode acacia_subg_phyllodineae_tn = acacia_tn.addChildTaxon(acacia_subg_phyllodineae_t, sec, null);
394
        acacia_subg_phyllodineae_tn.addChildTaxon(acacia_sect_botrycephalae_t, sec, null);
395
        acacia_tn.addChildTaxon(acacia_subg_aculeiferum_t, sec, null);
396
        acacia_tn.addChildTaxon(acacia_mearnsii_t, sec, null).addChildTaxon(xacacia_acicularis_t, sec, null);
397
        acacia_tn.addChildTaxon(acacia_cuspidifolia_t, sec, null);
398
        classification.addChildTaxon(acacia_acicularis_t, sec, null);
399

    
400
        classificationDao.save(classification);
401

    
402
        // 2. end the transaction so that all data is actually written to the db
403
        setComplete();
404
        endTransaction();
405

    
406
        // use the fileNameAppendix if you are creating a data set file which need to be named differently
407
        // from the standard name. For example if a single test method needs different data then the other
408
        // methods the test class you may want to set the fileNameAppendix when creating the data for this method.
409
        String fileNameAppendix = null;
410

    
411
        // 3.
412
        writeDbUnitDataSetFile(new String[] {
413
            "TAXONBASE", "TAXONNAME",
414
            "REFERENCE",
415
            "CLASSIFICATION", "TAXONNODE",
416
            "LANGUAGESTRING", "HOMOTYPICALGROUP",
417
            "HIBERNATE_SEQUENCES" // IMPORTANT!!!
418
            },
419
            fileNameAppendix, true );
420

    
421
    }
422
}
(4-4/36)