Project

General

Profile

Download (21 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2007 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

    
11
package eu.etaxonomy.cdm.api.service;
12

    
13
import java.io.FileNotFoundException;
14
import java.util.ArrayList;
15
import java.util.Arrays;
16
import java.util.Collections;
17
import java.util.Comparator;
18
import java.util.List;
19
import java.util.UUID;
20

    
21
import org.apache.commons.lang.StringUtils;
22
import org.apache.log4j.Logger;
23
import org.junit.Assert;
24
import org.junit.Test;
25
import org.unitils.dbunit.annotation.DataSet;
26
import org.unitils.spring.annotation.SpringBeanByType;
27

    
28
import eu.etaxonomy.cdm.api.service.dto.GroupedTaxonDTO;
29
import eu.etaxonomy.cdm.model.name.BotanicalName;
30
import eu.etaxonomy.cdm.model.name.Rank;
31
import eu.etaxonomy.cdm.model.reference.Reference;
32
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
33
import eu.etaxonomy.cdm.model.taxon.Classification;
34
import eu.etaxonomy.cdm.model.taxon.Taxon;
35
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
36
import eu.etaxonomy.cdm.model.taxon.TaxonNodeByNameComparator;
37
import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;
38
import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao;
39
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
40

    
41
/**
42
 * @author n.hoffmann
43
 * @created Sep 22, 2009
44
 */
45
public class ClassificationServiceImplTest extends CdmTransactionalIntegrationTest{
46

    
47
    private static final Logger logger = Logger.getLogger(ClassificationServiceImplTest.class);
48

    
49
    @SpringBeanByType
50
    IClassificationService service;
51

    
52
    @SpringBeanByType
53
    ITaxonNodeService taxonNodeService;
54

    
55
    @SpringBeanByType
56
    IClassificationDao classificationDao;
57

    
58
    @SpringBeanByType
59
    IReferenceDao referenceDao;
60

    
61
    private static final List<String> NODE_INIT_STRATEGY = Arrays.asList(new String[]{
62
            "childNodes",
63
            "childNodes.taxon",
64
            "childNodes.taxon.name",
65
            "taxon.sec",
66
            "taxon.name.*"
67
            });
68

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

    
71
    private Comparator<? super TaxonNode> taxonNodeComparator;
72

    
73

    
74
    /**
75
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#setTaxonNodeComparator(eu.etaxonomy.cdm.model.taxon.ITaxonNodeComparator)}.
76
     */
77
//    @Test
78
    public final void testSetTaxonNodeComparator() {
79
//		fail("Not yet implemented");
80
    }
81

    
82
    /**
83
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadTaxonNodeByTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.UUID, java.util.List)}.
84
     */
85
//    @Test
86
    public final void testLoadTaxonNodeByTaxon() {
87
//		fail("Not yet implemented");
88
    }
89

    
90
    /**
91
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)}.
92
     */
93
    @Test
94
    public final void testLoadTaxonNode() {
95
//		fail("Not yet implemented");
96
    }
97

    
98

    
99
    @Test
100
    @DataSet
101
    public final void testTaxonNodeByNameComparator() {
102
        taxonNodeComparator = new TaxonNodeByNameComparator();
103

    
104
        List<TaxonNode> nodes = service.getAllNodes();
105
        Collections.sort(nodes, taxonNodeComparator);
106

    
107
//        logger.setLevel(Level.DEBUG);
108
        if(logger.isDebugEnabled()){
109
            logger.debug("-------------");
110
	        for (TaxonNode node: nodes){
111
	        	if (node!= null && node.getTaxon() != null && node.getTaxon().getName()!= null){
112
	                logger.debug(node.getTaxon().getName().getTitleCache() + " [" + node.getTaxon().getName().getRank() + "]");
113
	        	}
114
	        }
115
        }
116

    
117
        Assert.assertEquals("Acacia N.Jacobsen, Bastm. & Yuji Sasaki", nodes.get(1).getTaxon().getName().getTitleCache());
118
        Assert.assertEquals("Acacia subgen. Aculeiferum Pedley", nodes.get(2).getTaxon().getName().getTitleCache());
119
        Assert.assertEquals("Acacia sect. Botrycephalae Yuji Sasaki", nodes.get(3).getTaxon().getName().getTitleCache());
120
        Assert.assertEquals("Acacia subgen. Phyllodineae N.Jacobsen, Bastm. & Yuji Sasaki", nodes.get(4).getTaxon().getName().getTitleCache());
121
        Assert.assertEquals("Acacia acicularis Willd.", nodes.get(5).getTaxon().getName().getTitleCache());
122
        Assert.assertEquals("×Acacia acicularis Willd. subsp. acicularis", nodes.get(6).getTaxon().getName().getTitleCache());
123
        Assert.assertEquals("Acacia cuspidifolia Maslin", nodes.get(7).getTaxon().getName().getTitleCache());
124
        Assert.assertEquals("Acacia mearnsii Benth", nodes.get(8).getTaxon().getName().getTitleCache());
125

    
126
        /*
127
        ((TaxonNodeByNameComparator)taxonNodeComparator).setSortInfraGenericFirst(false);
128
        Collections.sort(taxonNodes, taxonNodeComparator);
129

    
130
        Assert.assertEquals("Acacia cuspidifolia Maslin", taxonNodes.get(0).getTaxon().getName().getTitleCache());
131
        System.err.println();
132
        for (TaxonNode node: taxonNodes){
133
            System.err.println(node.getTaxon().getName().getTitleCache() );
134
            /*for (TaxonNode child : node.getChildNodes()){
135
                System.err.println(child.getTaxon().getName().getTitleCache());
136
            }
137
        }*/
138
//		fail("Not yet implemented");
139

    
140
    }
141

    
142

    
143
    /**
144
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.util.List)}.
145
     */
146
    @Test
147
    @DataSet
148
    public final void testListRankSpecificRootNodes(){
149
        Classification classification = service.find(UUID.fromString("6c2bc8d9-ee62-4222-be89-4a8e31770878"));
150

    
151
        // classification, see  createTestDataSet()
152

    
153
        // ClassificationRoot
154
        // |- Acacia N.Jacobsen, Bastm. & Yuji Sasaki                          [Genus]
155
        // |  |-- Acacia subg. Aculeiferum Pedley                              [Subgenus]
156
        // |  |-- Acacia subg. Phyllodineae N.Jacobsen, Bastm. & Yuji Sasaki   [Subgenus]
157
        // |  |  |-- Acacia sect. Botrycephalae Yuji Sasaki                    [Section (Botany)]
158
        // |  |------- Acacia cuspidifolia Maslin                              [Species]
159
        // |  |------- Acacia mearnsii Benth                                   [Species]
160
        // |---------- Acacia acicularis Willd.                                [Species]
161
        //             |-- ×Acacia acicularis Willd. subsp. acicularis         [Subspecies]
162
        //
163
        // for more historic Acacia taxonomy see http://lexikon.freenet.de/Akazien
164

    
165
        List<TaxonNode> taxonNodes = service.listRankSpecificRootNodes(null, null, null, null, NODE_INIT_STRATEGY);
166
        Assert.assertEquals(2, taxonNodes.size());
167

    
168
        taxonNodes = service.listRankSpecificRootNodes(classification, null, null, null, NODE_INIT_STRATEGY);
169
        Assert.assertEquals(2, taxonNodes.size());
170

    
171
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SECTION_BOTANY(), null, null, NODE_INIT_STRATEGY);
172
        Assert.assertEquals(4, taxonNodes.size());
173

    
174
        // also test if the pager works
175
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SECTION_BOTANY(), 10, 0, NODE_INIT_STRATEGY);
176
        Assert.assertEquals(4, taxonNodes.size());
177
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SECTION_BOTANY(), 2, 0, NODE_INIT_STRATEGY);
178
        Assert.assertEquals(2, taxonNodes.size());
179
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SECTION_BOTANY(), 2, 1, NODE_INIT_STRATEGY);
180
        Assert.assertEquals(2, taxonNodes.size());
181
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SECTION_BOTANY(), 2, 2, NODE_INIT_STRATEGY);
182
        Assert.assertEquals(0, taxonNodes.size());
183

    
184
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SPECIES(), null, null, NODE_INIT_STRATEGY);
185
        Assert.assertEquals(3, taxonNodes.size());
186

    
187
        // also test if the pager works
188
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SPECIES(), 10, 0, NODE_INIT_STRATEGY);
189
        Assert.assertEquals(3, taxonNodes.size());
190
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SPECIES(), 2, 1, NODE_INIT_STRATEGY);
191
        Assert.assertEquals(1, taxonNodes.size());
192

    
193

    
194
    }
195

    
196
    /**
197
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadTreeBranch(eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.name.Rank, java.util.List)}.
198
     */
199
//    @Test
200
    public final void testLoadTreeBranch() {
201
//		fail("Not yet implemented");
202
    }
203

    
204
    /**
205
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadTreeBranchToTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.util.List)}.
206
     */
207
//    @Test
208
    public final void testLoadTreeBranchToTaxon() {
209
//		fail("Not yet implemented");
210
    }
211

    
212
    /**
213
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadChildNodesOfTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)}.
214
     */
215
//    @Test
216
    public final void testLoadChildNodesOfTaxonNode() {
217
//		fail("Not yet implemented");
218
    }
219

    
220
    /**
221
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadChildNodesOfTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List)}.
222
     */
223
//    @Test
224
    public final void testLoadChildNodesOfTaxon() {
225
//		fail("Not yet implemented");
226
    }
227

    
228
    /**
229
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getTaxonNodeByUuid(java.util.UUID)}.
230
     */
231
//    @Test
232
    public final void testGetTaxonNodeByUuid() {
233
//		fail("Not yet implemented");
234
    }
235

    
236
    /**
237
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getTreeNodeByUuid(java.util.UUID)}.
238
     */
239
//    @Test
240
    public final void testGetTreeNodeByUuid() {
241
//		fail("Not yet implemented");
242
    }
243

    
244
    /**
245
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#listClassifications(java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)}.
246
     */
247
//    @Test
248
    public final void testListClassifications() {
249
//		fail("Not yet implemented");
250
    }
251

    
252
    /**
253
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getClassificationByUuid(java.util.UUID)}.
254
     */
255
//    @Test
256
    public final void testGetClassificationByUuid() {
257
//		fail("Not yet implemented");
258
    }
259

    
260
    /**
261
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#removeTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)}.
262
     */
263
//    @Test
264
    public final void testRemoveTaxonNode() {
265
//		fail("Not yet implemented");
266
    }
267

    
268
    /**
269
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#removeTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)}.
270
     */
271
//    @Test
272
    public final void testRemoveTreeNode() {
273
//		fail("Not yet implemented");
274
    }
275

    
276
    /**
277
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#saveTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)}.
278
     */
279
//    @Test
280
    public final void testSaveTaxonNode() {
281
//		fail("Not yet implemented");
282
    }
283

    
284
    /**
285
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#saveTaxonNodeAll(java.util.Collection)}.
286
     */
287
//    @Test
288
    public final void testSaveTaxonNodeAll() {
289
//		fail("Not yet implemented");
290
    }
291

    
292
    /**
293
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#saveTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)}.
294
     */
295
//    @Test
296
    public final void testSaveTreeNode() {
297
//		fail("Not yet implemented");
298
    }
299

    
300
    /**
301
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(eu.etaxonomy.cdm.model.taxon.Classification)}.
302
     */
303
//    @Test
304
    public final void testGetTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification() {
305
//		fail("Not yet implemented");
306
    }
307

    
308
    /**
309
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getUuidAndTitleCache()}.
310
     */
311
//    @Test
312
    public final void testGetUuidAndTitleCache() {
313
//		fail("Not yet implemented");
314
    }
315

    
316
    /**
317
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List, int, int, int, java.lang.String[])}.
318
     */
319
//    @Test
320
    public final void testGetAllMediaForChildNodesTaxonNodeListOfStringIntIntIntStringArray() {
321
//		fail("Not yet implemented");
322
    }
323

    
324
    /**
325
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List, int, int, int, java.lang.String[])}.
326
     */
327
//    @Test
328
    public final void testGetAllMediaForChildNodesTaxonClassificationListOfStringIntIntIntStringArray() {
329
//		fail("Not yet implemented");
330
    }
331

    
332
    /**
333
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#setDao(eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao)}.
334
     */
335
    @Test
336
    public final void testSetDaoIClassificationDao() {
337
        Assert.assertNotNull(service);
338
    }
339

    
340

    
341
    @Test
342
    @DataSet
343
    public final void testGroupTaxaByHigherTaxon(){
344

    
345
        Rank minRank = Rank.GENUS();
346
        Rank maxRank = Rank.KINGDOM();
347
        List<UUID> taxonUuids = new ArrayList<>();
348
        taxonUuids.add(acacia_acicularis_uuid);
349
        taxonUuids.add(acacia_cuspidifolia_uuid);
350
        taxonUuids.add(acacia_sect_botrycephalae_uuid);
351

    
352
        List<GroupedTaxonDTO> result = this.service.groupTaxaByHigherTaxon(taxonUuids, CLASSIFICATION_UUID, minRank, maxRank);
353
        System.out.println(result);
354
        Assert.assertEquals(3, result.size());
355
        //acacia_acicularis_uuid  //is a root taxon with no parents
356
        Assert.assertEquals(acacia_acicularis_uuid, result.get(0).getTaxonUuid());
357
        Assert.assertNull(result.get(0).getGroupTaxonUuid());
358
        Assert.assertTrue(StringUtils.isBlank(result.get(0).getGroupTaxonName()));
359
        //acacia_cuspidifolia_uuid
360
        Assert.assertEquals(acacia_cuspidifolia_uuid, result.get(1).getTaxonUuid());
361
        Assert.assertNotNull(result.get(1).getGroupTaxonUuid());
362
        Assert.assertFalse(StringUtils.isBlank(result.get(1).getGroupTaxonName()));
363
        //acacia_sect_botrycephalae_uuid
364
        Assert.assertEquals(acacia_sect_botrycephalae_uuid, result.get(2).getTaxonUuid());
365
        Assert.assertNotNull(result.get(2).getGroupTaxonUuid());
366
        Assert.assertFalse(StringUtils.isBlank(result.get(2).getGroupTaxonName()));
367
    }
368

    
369

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

    
374

    
375
    /**
376
     * {@inheritDoc}
377
     */
378
    @Override
379
//    @Test
380
    public void createTestDataSet() throws FileNotFoundException {
381

    
382
        // ClassificationRoot
383
        // |- Acacia N.Jacobsen, Bastm. & Yuji Sasaki                          [Genus]
384
        // |  |-- Acacia subg. Aculeiferum Pedley                              [Subgenus]
385
        // |  |-- Acacia subg. Phyllodineae N.Jacobsen, Bastm. & Yuji Sasaki   [Subgenus]
386
        // |  |  |-- Acacia sect. Botrycephalae Yuji Sasaki                    [Section (Botany)]
387
        // |  |------- Acacia cuspidifolia Maslin                              [Species]
388
        // |  |------- Acacia mearnsii Benth                                   [Species]
389
        // |---------- Acacia acicularis Willd.                                [Species]
390
        //             |-- ×Acacia acicularis Willd. subsp. acicularis         [Subspecies]
391
        //
392
        // for more historic Acacia taxonomy see http://lexikon.freenet.de/Akazien
393

    
394
        // 1. create the entities   and save them
395
        Classification classification = Classification.NewInstance("Acacia Classification");
396
        classification.setUuid(CLASSIFICATION_UUID);
397
        classificationDao.save(classification);
398

    
399
        Reference sec = ReferenceFactory.newBook();
400
        sec.setTitleCache("Sp. Pl.", true);
401
        referenceDao.save(sec);
402

    
403
        BotanicalName acacia_n = BotanicalName.NewInstance(Rank.GENUS(), "Acacia", null, null, null, null, sec, null, null);
404
        acacia_n.setAuthorshipCache("N.Jacobsen, Bastm. & Yuji Sasaki", true);
405
        Taxon acacia_t = Taxon.NewInstance(acacia_n, sec);
406
        acacia_t.setUuid(UUID.fromString("2fc779ee-7a9d-4586-92ba-1cd774ac77f0"));
407

    
408
        BotanicalName acacia_subg_aculeiferum_n = BotanicalName.NewInstance(Rank.SUBGENUS(), "Acacia", "Aculeiferum", null, null, null, sec, null, null);
409
        acacia_subg_aculeiferum_n.setAuthorshipCache("Pedley", true);
410
        Taxon acacia_subg_aculeiferum_t = Taxon.NewInstance(acacia_subg_aculeiferum_n, sec);
411
        acacia_subg_aculeiferum_t.setUuid(UUID.fromString("169fea08-6b7a-4315-b111-a774c7fafe30"));
412

    
413
        BotanicalName acacia_subg_phyllodineae_n = BotanicalName.NewInstance(Rank.SUBGENUS(), "Acacia", "Phyllodineae", null, null, null, sec, null, null);
414
        acacia_subg_phyllodineae_n.setAuthorshipCache("N.Jacobsen, Bastm. & Yuji Sasaki", true);
415
        Taxon acacia_subg_phyllodineae_t = Taxon.NewInstance(acacia_subg_phyllodineae_n, sec);
416
        acacia_subg_phyllodineae_t.setUuid(UUID.fromString("a9da5d43-517e-4ca5-a490-b6a5cd637e9e"));
417

    
418
        BotanicalName acacia_setc_botrycephalae_n = BotanicalName.NewInstance(Rank.SECTION_BOTANY(), "Acacia", "Botrycephalae", null, null, null, sec, null, null);
419
        acacia_setc_botrycephalae_n.setAuthorshipCache("Yuji Sasaki", true);
420
        Taxon acacia_sect_botrycephalae_t = Taxon.NewInstance(acacia_setc_botrycephalae_n, sec);
421
        acacia_sect_botrycephalae_t.setUuid(acacia_sect_botrycephalae_uuid);
422

    
423
        BotanicalName acacia_cuspidifolia_n = BotanicalName.NewInstance(Rank.SPECIES(), "Acacia", null,"cuspidifolia", null, null, sec, null, null);
424
        acacia_cuspidifolia_n.setAuthorshipCache("Maslin", true);
425
        Taxon acacia_cuspidifolia_t = Taxon.NewInstance(acacia_cuspidifolia_n, sec);
426
        acacia_cuspidifolia_t.setUuid(acacia_cuspidifolia_uuid);
427

    
428
        BotanicalName acacia_mearnsii_n = BotanicalName.NewInstance(Rank.SPECIES(), "Acacia", null,"mearnsii", null, null, sec, null, null);
429
        acacia_mearnsii_n.setAuthorshipCache("Benth", true);
430
        Taxon acacia_mearnsii_t = Taxon.NewInstance(acacia_mearnsii_n, sec);
431
        acacia_mearnsii_t.setUuid(UUID.fromString("2e55dc01-71f5-4d42-9bb0-a2448e46dd18"));
432

    
433
        BotanicalName acacia_acicularis_n = BotanicalName.NewInstance(Rank.SPECIES(), "Acacia", null,"acicularis", null, null, sec, null, null);
434
        acacia_acicularis_n.setAuthorshipCache("Willd.", true);
435
        Taxon acacia_acicularis_t = Taxon.NewInstance(acacia_acicularis_n, sec);
436
        acacia_acicularis_t.setUuid(acacia_acicularis_uuid);
437

    
438
        BotanicalName xacacia_acicularis_n = BotanicalName.NewInstance(Rank.SUBSPECIES(), "Acacia", null,"acicularis", "acicularis", null, sec, null, null);
439
        xacacia_acicularis_n.setAuthorshipCache("Willd.", true);
440
        xacacia_acicularis_n.setMonomHybrid(true);
441
        System.out.println(xacacia_acicularis_n.getTitleCache());
442
        Taxon xacacia_acicularis_t = Taxon.NewInstance(xacacia_acicularis_n, sec);
443
        xacacia_acicularis_t.setUuid(UUID.fromString("04d125a6-6adf-4900-97ff-82729618086a"));
444

    
445
        TaxonNode acacia_tn = classification.addChildTaxon(acacia_t, sec, null);
446
        TaxonNode acacia_subg_phyllodineae_tn = acacia_tn.addChildTaxon(acacia_subg_phyllodineae_t, sec, null);
447
        acacia_subg_phyllodineae_tn.addChildTaxon(acacia_sect_botrycephalae_t, sec, null);
448
        acacia_tn.addChildTaxon(acacia_subg_aculeiferum_t, sec, null);
449
        acacia_tn.addChildTaxon(acacia_mearnsii_t, sec, null).addChildTaxon(xacacia_acicularis_t, sec, null);
450
        acacia_tn.addChildTaxon(acacia_cuspidifolia_t, sec, null);
451
        classification.addChildTaxon(acacia_acicularis_t, sec, null);
452

    
453
        classificationDao.save(classification);
454

    
455
        // 2. end the transaction so that all data is actually written to the db
456
        setComplete();
457
        endTransaction();
458

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

    
464
        // 3.
465
        writeDbUnitDataSetFile(new String[] {
466
            "TAXONBASE", "TAXONNAMEBASE",
467
            "REFERENCE",
468
            "CLASSIFICATION", "TAXONNODE",
469
            "LANGUAGESTRING", "HOMOTYPICALGROUP",
470
            "HIBERNATE_SEQUENCES" // IMPORTANT!!!
471
            },
472
            fileNameAppendix );
473

    
474
    }
475
}
(4-4/32)