Project

General

Profile

Download (22.6 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.Test;
28
import org.unitils.dbunit.annotation.DataSet;
29
import org.unitils.spring.annotation.SpringBeanByType;
30

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

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

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

    
54
    @SpringBeanByType
55
    IClassificationService service;
56

    
57
    @SpringBeanByType
58
    ITaxonService taxonService;
59

    
60
    @SpringBeanByType
61
    ITaxonNodeService taxonNodeService;
62

    
63
    @SpringBeanByType
64
    IClassificationService classificationService;
65

    
66
    @SpringBeanByType
67
    IClassificationDao classificationDao;
68

    
69
    @SpringBeanByType
70
    IReferenceDao referenceDao;
71

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

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

    
82
    private Comparator<? super TaxonNode> taxonNodeComparator;
83

    
84

    
85
    /**
86
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#setTaxonNodeComparator(eu.etaxonomy.cdm.model.taxon.ITaxonNodeComparator)}.
87
     */
88
//    @Test
89
    public final void testSetTaxonNodeComparator() {
90
//		fail("Not yet implemented");
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
//		fail("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
//		fail("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
    /**
155
     * 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)}.
156
     */
157
    @Test
158
    @DataSet
159
    public final void testListRankSpecificRootNodes(){
160
        Classification classification = service.find(UUID.fromString("6c2bc8d9-ee62-4222-be89-4a8e31770878"));
161

    
162
        // classification, see  createTestDataSet()
163

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

    
176
        List<TaxonNode> taxonNodes = service.listRankSpecificRootNodes(null, null, null, null, NODE_INIT_STRATEGY);
177
        Assert.assertEquals(2, taxonNodes.size());
178

    
179
        taxonNodes = service.listRankSpecificRootNodes(classification, null, null, null, NODE_INIT_STRATEGY);
180
        Assert.assertEquals(2, taxonNodes.size());
181

    
182
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SECTION_BOTANY(), null, null, NODE_INIT_STRATEGY);
183
        Assert.assertEquals(4, taxonNodes.size());
184

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

    
195
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SPECIES(), null, null, NODE_INIT_STRATEGY);
196
        Assert.assertEquals(3, taxonNodes.size());
197

    
198
        // also test if the pager works
199
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SPECIES(), 10, 0, NODE_INIT_STRATEGY);
200
        Assert.assertEquals(3, taxonNodes.size());
201
        taxonNodes = service.listRankSpecificRootNodes(classification, Rank.SPECIES(), 2, 1, NODE_INIT_STRATEGY);
202
        Assert.assertEquals(1, taxonNodes.size());
203

    
204

    
205
    }
206

    
207
    /**
208
     * 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)}.
209
     */
210
//    @Test
211
    public final void testLoadTreeBranch() {
212
//		fail("Not yet implemented");
213
    }
214

    
215
    /**
216
     * 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)}.
217
     */
218
//    @Test
219
    public final void testLoadTreeBranchToTaxon() {
220
//		fail("Not yet implemented");
221
    }
222

    
223
    /**
224
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#loadChildNodesOfTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)}.
225
     */
226
//    @Test
227
    public final void testLoadChildNodesOfTaxonNode() {
228
//		fail("Not yet implemented");
229
    }
230

    
231
    /**
232
     * 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)}.
233
     */
234
//    @Test
235
    public final void testLoadChildNodesOfTaxon() {
236
//		fail("Not yet implemented");
237
    }
238

    
239
    /**
240
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getTaxonNodeByUuid(java.util.UUID)}.
241
     */
242
//    @Test
243
    public final void testGetTaxonNodeByUuid() {
244
//		fail("Not yet implemented");
245
    }
246

    
247
    /**
248
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getTreeNodeByUuid(java.util.UUID)}.
249
     */
250
//    @Test
251
    public final void testGetTreeNodeByUuid() {
252
//		fail("Not yet implemented");
253
    }
254

    
255
    /**
256
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#listClassifications(java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)}.
257
     */
258
//    @Test
259
    public final void testListClassifications() {
260
//		fail("Not yet implemented");
261
    }
262

    
263
    /**
264
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getClassificationByUuid(java.util.UUID)}.
265
     */
266
//    @Test
267
    public final void testGetClassificationByUuid() {
268
//		fail("Not yet implemented");
269
    }
270

    
271
    /**
272
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#removeTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)}.
273
     */
274
//    @Test
275
    public final void testRemoveTaxonNode() {
276
//		fail("Not yet implemented");
277
    }
278

    
279
    /**
280
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#removeTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)}.
281
     */
282
//    @Test
283
    public final void testRemoveTreeNode() {
284
//		fail("Not yet implemented");
285
    }
286

    
287
    /**
288
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#saveTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)}.
289
     */
290
//    @Test
291
    public final void testSaveTaxonNode() {
292
//		fail("Not yet implemented");
293
    }
294

    
295
    /**
296
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#saveTaxonNodeAll(java.util.Collection)}.
297
     */
298
//    @Test
299
    public final void testSaveTaxonNodeAll() {
300
//		fail("Not yet implemented");
301
    }
302

    
303
    /**
304
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#saveTreeNode(eu.etaxonomy.cdm.model.taxon.ITreeNode)}.
305
     */
306
//    @Test
307
    public final void testSaveTreeNode() {
308
//		fail("Not yet implemented");
309
    }
310

    
311
    /**
312
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(eu.etaxonomy.cdm.model.taxon.Classification)}.
313
     */
314
//    @Test
315
    public final void testGetTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification() {
316
//		fail("Not yet implemented");
317
    }
318

    
319
    /**
320
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#getUuidAndTitleCache()}.
321
     */
322
//    @Test
323
    public final void testGetUuidAndTitleCache() {
324
//		fail("Not yet implemented");
325
    }
326

    
327
    /**
328
     * 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[])}.
329
     */
330
//    @Test
331
    public final void testGetAllMediaForChildNodesTaxonNodeListOfStringIntIntIntStringArray() {
332
//		fail("Not yet implemented");
333
    }
334

    
335
    /**
336
     * 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[])}.
337
     */
338
//    @Test
339
    public final void testGetAllMediaForChildNodesTaxonClassificationListOfStringIntIntIntStringArray() {
340
//		fail("Not yet implemented");
341
    }
342

    
343
    /**
344
     * Test method for {@link eu.etaxonomy.cdm.api.service.ClassificationServiceImpl#setDao(eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao)}.
345
     */
346
    @Test
347
    public final void testSetDaoIClassificationDao() {
348
        Assert.assertNotNull(service);
349
    }
350

    
351
    @Test
352
    @DataSet
353
    public final void testGroupTaxaByHigherTaxon(){
354

    
355
        Rank minRank = Rank.GENUS();
356
        Rank maxRank = Rank.KINGDOM();
357
        List<UUID> taxonUuids = new ArrayList<>();
358
        taxonUuids.add(acacia_acicularis_uuid);
359
        taxonUuids.add(acacia_cuspidifolia_uuid);
360
        taxonUuids.add(acacia_sect_botrycephalae_uuid);
361

    
362
        List<GroupedTaxonDTO> result = this.service.groupTaxaByHigherTaxon(taxonUuids, CLASSIFICATION_UUID, minRank, maxRank);
363
        System.out.println(result);
364
        Assert.assertEquals(3, result.size());
365
        //acacia_acicularis_uuid  //is a root taxon with no parents
366
        Assert.assertEquals(acacia_acicularis_uuid, result.get(0).getTaxonUuid());
367
        Assert.assertNull(result.get(0).getGroupTaxonUuid());
368
        Assert.assertTrue(StringUtils.isBlank(result.get(0).getGroupTaxonName()));
369
        //acacia_cuspidifolia_uuid
370
        Assert.assertEquals(acacia_cuspidifolia_uuid, result.get(1).getTaxonUuid());
371
        Assert.assertNotNull(result.get(1).getGroupTaxonUuid());
372
        Assert.assertFalse(StringUtils.isBlank(result.get(1).getGroupTaxonName()));
373
        //acacia_sect_botrycephalae_uuid
374
        Assert.assertEquals(acacia_sect_botrycephalae_uuid, result.get(2).getTaxonUuid());
375
        Assert.assertNotNull(result.get(2).getGroupTaxonUuid());
376
        Assert.assertFalse(StringUtils.isBlank(result.get(2).getGroupTaxonName()));
377
    }
378

    
379

    
380
    @Test
381
    @DataSet
382
    public final void testCloneClassification(){
383
    	Classification classification = classificationDao.load(CLASSIFICATION_UUID);
384
    	Reference sec = ReferenceFactory.newGeneric();
385
    	sec.setTitle("cloned sec");
386
    	Classification clone = (Classification) classificationService.cloneClassification(CLASSIFICATION_UUID, "Cloned classification", sec, TaxonRelationshipType.CONGRUENT_TO()).getCdmEntity();
387

    
388
    	List<TaxonNode> childNodes = classification.getChildNodes();
389
    	for (TaxonNode taxonNode : childNodes) {
390
			System.out.println(taxonNode.getTaxon().getTitleCache());
391
		}
392
    	childNodes = clone.getChildNodes();
393
    	for (TaxonNode taxonNode : childNodes) {
394
    		System.out.println(taxonNode.getTaxon().getTitleCache());
395
    	}
396
    	Set<TaxonNode> allNodes = classification.getAllNodes();
397
    	assertEquals("# of direct children does not match", classification.getChildNodes().size(), clone.getChildNodes().size());
398
		assertEquals("# of all nodes does not match", allNodes.size(), clone.getAllNodes().size());
399

    
400
    	//check that original taxon does not appear in cloned classification
401
		for (TaxonNode taxonNode : allNodes) {
402
    		assertNull(clone.getNode(taxonNode.getTaxon()));
403
    	}
404
    }
405

    
406

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

    
411

    
412
    /**
413
     * {@inheritDoc}
414
     */
415
    @Override
416
//    @Test
417
    public void createTestDataSet() throws FileNotFoundException {
418

    
419
        // ClassificationRoot
420
        // |- Acacia N.Jacobsen, Bastm. & Yuji Sasaki                          [Genus]
421
        // |  |-- Acacia subg. Aculeiferum Pedley                              [Subgenus]
422
        // |  |-- Acacia subg. Phyllodineae N.Jacobsen, Bastm. & Yuji Sasaki   [Subgenus]
423
        // |  |  |-- Acacia sect. Botrycephalae Yuji Sasaki                    [Section (Botany)]
424
        // |  |------- Acacia cuspidifolia Maslin                              [Species]
425
        // |  |------- Acacia mearnsii Benth                                   [Species]
426
        // |---------- Acacia acicularis Willd.                                [Species]
427
        //             |-- ×Acacia acicularis Willd. subsp. acicularis         [Subspecies]
428
        //
429
        // for more historic Acacia taxonomy see http://lexikon.freenet.de/Akazien
430

    
431
        // 1. create the entities   and save them
432
        Classification classification = Classification.NewInstance("Acacia Classification");
433
        classification.setUuid(CLASSIFICATION_UUID);
434
        classificationDao.save(classification);
435

    
436
        Reference sec = ReferenceFactory.newBook();
437
        sec.setTitleCache("Sp. Pl.", true);
438
        referenceDao.save(sec);
439

    
440
        BotanicalName acacia_n = TaxonNameBase.NewBotanicalInstance(Rank.GENUS(), "Acacia", null, null, null, null, sec, null, null);
441
        acacia_n.setAuthorshipCache("N.Jacobsen, Bastm. & Yuji Sasaki", true);
442
        Taxon acacia_t = Taxon.NewInstance(acacia_n, sec);
443
        acacia_t.setUuid(UUID.fromString("2fc779ee-7a9d-4586-92ba-1cd774ac77f0"));
444

    
445
        BotanicalName acacia_subg_aculeiferum_n = TaxonNameBase.NewBotanicalInstance(Rank.SUBGENUS(), "Acacia", "Aculeiferum", null, null, null, sec, null, null);
446
        acacia_subg_aculeiferum_n.setAuthorshipCache("Pedley", true);
447
        Taxon acacia_subg_aculeiferum_t = Taxon.NewInstance(acacia_subg_aculeiferum_n, sec);
448
        acacia_subg_aculeiferum_t.setUuid(UUID.fromString("169fea08-6b7a-4315-b111-a774c7fafe30"));
449

    
450
        BotanicalName acacia_subg_phyllodineae_n = TaxonNameBase.NewBotanicalInstance(Rank.SUBGENUS(), "Acacia", "Phyllodineae", null, null, null, sec, null, null);
451
        acacia_subg_phyllodineae_n.setAuthorshipCache("N.Jacobsen, Bastm. & Yuji Sasaki", true);
452
        Taxon acacia_subg_phyllodineae_t = Taxon.NewInstance(acacia_subg_phyllodineae_n, sec);
453
        acacia_subg_phyllodineae_t.setUuid(UUID.fromString("a9da5d43-517e-4ca5-a490-b6a5cd637e9e"));
454

    
455
        BotanicalName acacia_setc_botrycephalae_n = TaxonNameBase.NewBotanicalInstance(Rank.SECTION_BOTANY(), "Acacia", "Botrycephalae", null, null, null, sec, null, null);
456
        acacia_setc_botrycephalae_n.setAuthorshipCache("Yuji Sasaki", true);
457
        Taxon acacia_sect_botrycephalae_t = Taxon.NewInstance(acacia_setc_botrycephalae_n, sec);
458
        acacia_sect_botrycephalae_t.setUuid(acacia_sect_botrycephalae_uuid);
459

    
460
        BotanicalName acacia_cuspidifolia_n = TaxonNameBase.NewBotanicalInstance(Rank.SPECIES(), "Acacia", null,"cuspidifolia", null, null, sec, null, null);
461
        acacia_cuspidifolia_n.setAuthorshipCache("Maslin", true);
462
        Taxon acacia_cuspidifolia_t = Taxon.NewInstance(acacia_cuspidifolia_n, sec);
463
        acacia_cuspidifolia_t.setUuid(acacia_cuspidifolia_uuid);
464

    
465
        BotanicalName acacia_mearnsii_n = TaxonNameBase.NewBotanicalInstance(Rank.SPECIES(), "Acacia", null,"mearnsii", null, null, sec, null, null);
466
        acacia_mearnsii_n.setAuthorshipCache("Benth", true);
467
        Taxon acacia_mearnsii_t = Taxon.NewInstance(acacia_mearnsii_n, sec);
468
        acacia_mearnsii_t.setUuid(UUID.fromString("2e55dc01-71f5-4d42-9bb0-a2448e46dd18"));
469

    
470
        BotanicalName acacia_acicularis_n = TaxonNameBase.NewBotanicalInstance(Rank.SPECIES(), "Acacia", null,"acicularis", null, null, sec, null, null);
471
        acacia_acicularis_n.setAuthorshipCache("Willd.", true);
472
        Taxon acacia_acicularis_t = Taxon.NewInstance(acacia_acicularis_n, sec);
473
        acacia_acicularis_t.setUuid(acacia_acicularis_uuid);
474

    
475
        BotanicalName xacacia_acicularis_n = TaxonNameBase.NewBotanicalInstance(Rank.SUBSPECIES(), "Acacia", null,"acicularis", "acicularis", null, sec, null, null);
476
        xacacia_acicularis_n.setAuthorshipCache("Willd.", true);
477
        xacacia_acicularis_n.setMonomHybrid(true);
478
        System.out.println(xacacia_acicularis_n.getTitleCache());
479
        Taxon xacacia_acicularis_t = Taxon.NewInstance(xacacia_acicularis_n, sec);
480
        xacacia_acicularis_t.setUuid(UUID.fromString("04d125a6-6adf-4900-97ff-82729618086a"));
481

    
482
        TaxonNode acacia_tn = classification.addChildTaxon(acacia_t, sec, null);
483
        TaxonNode acacia_subg_phyllodineae_tn = acacia_tn.addChildTaxon(acacia_subg_phyllodineae_t, sec, null);
484
        acacia_subg_phyllodineae_tn.addChildTaxon(acacia_sect_botrycephalae_t, sec, null);
485
        acacia_tn.addChildTaxon(acacia_subg_aculeiferum_t, sec, null);
486
        acacia_tn.addChildTaxon(acacia_mearnsii_t, sec, null).addChildTaxon(xacacia_acicularis_t, sec, null);
487
        acacia_tn.addChildTaxon(acacia_cuspidifolia_t, sec, null);
488
        classification.addChildTaxon(acacia_acicularis_t, sec, null);
489

    
490
        classificationDao.save(classification);
491

    
492
        // 2. end the transaction so that all data is actually written to the db
493
        setComplete();
494
        endTransaction();
495

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

    
501
        // 3.
502
        writeDbUnitDataSetFile(new String[] {
503
            "TAXONBASE", "TAXONNAMEBASE",
504
            "REFERENCE",
505
            "CLASSIFICATION", "TAXONNODE",
506
            "LANGUAGESTRING", "HOMOTYPICALGROUP",
507
            "HIBERNATE_SEQUENCES" // IMPORTANT!!!
508
            },
509
            fileNameAppendix );
510

    
511
    }
512
}
(4-4/33)