Project

General

Profile

Download (19.7 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2018 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.taxonGraph;
10

    
11
import java.io.FileNotFoundException;
12
import java.util.ArrayList;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import org.apache.logging.log4j.LogManager;
17
import org.apache.logging.log4j.Logger;
18
import org.hibernate.Session;
19
import org.junit.Assert;
20
import org.junit.Test;
21
import org.unitils.dbunit.annotation.DataSet;
22
import org.unitils.dbunit.annotation.DataSets;
23
import org.unitils.spring.annotation.SpringBeanByType;
24

    
25
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
26
import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
27
import eu.etaxonomy.cdm.model.name.Rank;
28
import eu.etaxonomy.cdm.model.name.TaxonName;
29
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
30
import eu.etaxonomy.cdm.model.reference.Reference;
31
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
32
import eu.etaxonomy.cdm.model.taxon.Taxon;
33
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
34
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
35
import eu.etaxonomy.cdm.persistence.dao.common.IPreferenceDao;
36
import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao;
37
import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;
38
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;
39
import eu.etaxonomy.cdm.persistence.dao.taxonGraph.ITaxonGraphDao;
40
import eu.etaxonomy.cdm.persistence.dao.taxonGraph.TaxonGraphException;
41
import eu.etaxonomy.cdm.persistence.dto.TaxonGraphEdgeDTO;
42
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
43
import eu.etaxonomy.cdm.test.unitils.CleanSweepInsertLoadStrategy;
44

    
45
/**
46
 * @author a.kohlbecker
47
 * @since Sep 27, 2018
48
 */
49
public class TaxonGraphTest extends CdmTransactionalIntegrationTest {
50

    
51
    @SuppressWarnings("unused")
52
    private static final Logger logger = LogManager.getLogger(TaxonGraphTest.class);
53

    
54
    enum EventType{
55
        INSERT, UPDATE;
56
    }
57

    
58
    @SpringBeanByType
59
    private ITaxonGraphDao taxonGraphDao;
60

    
61
    @SpringBeanByType
62
    private IReferenceDao referenceDao;
63

    
64
    @SpringBeanByType
65
    private ITaxonNameDao nameDao;
66

    
67
    @SpringBeanByType
68
    private ITaxonDao taxonDao;
69

    
70
    @SpringBeanByType
71
    private IPreferenceDao prefDao;
72

    
73
    protected static UUID uuid_secRef = UUID.fromString("34e1ff99-63c4-4296-81b6-b20afb98902e");
74

    
75
    protected static UUID uuid_n_euglenophyceae = UUID.fromString("9928147d-4499-4ce9-bcf3-e4eaa13e509e");
76
    protected static UUID uuid_n_euglena = UUID.fromString("ab59d853-dd4f-4f80-bd7b-cf53bfd42d39");
77
    protected static UUID uuid_n_trachelomonas = UUID.fromString("5e3d015c-0a5c-4975-a3b0-334b4b47ff79");
78
    protected static UUID uuid_n_trachelomonas_a  = UUID.fromString("a798721a-e305-420d-aec1-e915ad1971e4");
79
    protected static UUID uuid_n_trachelomonas_o  = UUID.fromString("a2e7eeff-b844-4b3d-ab75-2a113b44573e");
80
    protected static UUID uuid_n_trachelomonas_o_var_d  = UUID.fromString("d8a0e3ad-2a4d-45ed-b874-f96616015f91");
81
    protected static UUID uuid_n_trachelomonas_s  = UUID.fromString("5b90bd58-7f76-45c4-9966-7f65e7bf0bb0");
82
    protected static UUID uuid_n_trachelomonas_s_var_a = UUID.fromString("192ad8a1-55ca-4379-87a1-3bbd04e8b880");
83
    protected static UUID uuid_n_trachelomonas_r_s = UUID.fromString("2d6e68bf-aba7-433d-8325-ea15f3e567f4");
84
    protected static UUID uuid_n_phacus_s = UUID.fromString("d59b8715-1b98-4da4-a42d-efcbe85b323c");
85

    
86
    protected static UUID uuid_t_euglenophyceae = UUID.fromString("4ea17d7a-17a3-41f0-8de6-e924494ecbae");
87
    protected static UUID uuid_t_euglena = UUID.fromString("1c69afd4-ae58-4913-8706-5c89729d38f4");
88
    protected static UUID uuid_t_trachelomonas = UUID.fromString("52b9a8e0-9133-4ee0-ba9f-84ca6e28d033");
89
    protected static UUID uuid_t_trachelomonas_a  = UUID.fromString("04443b64-f2e5-48c5-9069-9354f43ded9f");
90
    protected static UUID uuid_t_trachelomonas_o  = UUID.fromString("bdf75350-8361-4e33-a614-a4214cc3e90a");
91
    protected static UUID uuid_t_trachelomonas_o_var_d  = UUID.fromString("f54ad8cf-fe87-499d-826a-2c5a71551fcf");
92
    protected static UUID uuid_t_trachelomonas_s  = UUID.fromString("5dce8a09-c809-4027-a9ce-b70901e7b820");
93
    protected static UUID uuid_t_trachelomonas_s_var_a = UUID.fromString("3f14c528-e191-4a6f-b2a9-36c9a3fc7eee");
94

    
95
    public AbstractHibernateTaxonGraphProcessor taxonGraphProcessor(){
96
        AbstractHibernateTaxonGraphProcessor processor = new AbstractHibernateTaxonGraphProcessor(prefDao) {
97
            @Override
98
            public Session getSession() {
99
                return nameDao.getSession();
100
            }
101
        };
102
        return processor;
103
    }
104

    
105
    protected void setUuidPref() {
106
        PrefKey key = TaxonGraphDaoHibernateImpl.CDM_PREF_KEY_SEC_REF_UUID;
107
        prefDao.set(new CdmPreference(key.getSubject(), key.getPredicate(), TaxonGraphTest.uuid_secRef.toString()));
108
        commitAndStartNewTransaction();
109
    }
110

    
111
    @Test
112
    @DataSets({
113
        @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="/eu/etaxonomy/cdm/database/ClearDBDataSet.xml"),
114
        @DataSet
115
    })
116
    public void testNewTaxonName() throws TaxonGraphException{
117

    
118
        setUuidPref();
119

    
120
        Reference refX = ReferenceFactory.newBook();
121
        refX.setTitleCache("Ref-X", true);
122

    
123
        TaxonName n_t_argentinensis = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES(), "Trachelomonas", null, "argentinensis", null, null, refX, null, null);
124
        n_t_argentinensis = nameDao.save(n_t_argentinensis);
125
        AbstractHibernateTaxonGraphProcessor processor = taxonGraphProcessor();
126
        Taxon singleTaxon = processor.assureSingleTaxon(n_t_argentinensis);
127
        processor.updateEdges(singleTaxon);
128
        commitAndStartNewTransaction();
129

    
130
         // printDataSet(System.err,"TaxonRelationship");
131
        Assert.assertTrue("a taxon should have been created", n_t_argentinensis.getTaxa().size() > 0);
132

    
133
        List<TaxonGraphEdgeDTO> edges = taxonGraphDao.edges(n_t_argentinensis, nameDao.load(uuid_n_trachelomonas), true);
134
        Assert.assertEquals(1, edges.size());
135
        Assert.assertEquals(refX.getUuid(), edges.get(0).getCitationUuid());
136
    }
137

    
138
    @Test
139
    @DataSets({
140
        @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="/eu/etaxonomy/cdm/database/ClearDBDataSet.xml"),
141
        @DataSet
142
    })
143
    public void testChangeNomRef() throws TaxonGraphException{
144

    
145
        setUuidPref();
146

    
147
        Reference refX = ReferenceFactory.newBook();
148
        refX.setTitleCache("Ref-X", true);
149

    
150
        TaxonName n_trachelomonas_a = nameDao.load(uuid_n_trachelomonas_a);
151
        Reference oldNomReference = n_trachelomonas_a.getNomenclaturalReference();
152
        n_trachelomonas_a.setNomenclaturalReference(refX);
153
        nameDao.saveOrUpdate(n_trachelomonas_a);
154
        AbstractHibernateTaxonGraphProcessor processor = taxonGraphProcessor();
155
        Taxon singleTaxon = processor.assureSingleTaxon(n_trachelomonas_a);
156
        processor.updateReferenceInEdges(singleTaxon, refX, oldNomReference);
157

    
158
//      LogUtils.setLevel("org.hibernate.SQL", Level.TRACE);
159
        commitAndStartNewTransaction();
160

    
161
        // printDataSet(System.err,"TaxonRelationship");
162
        List<TaxonGraphEdgeDTO> edges = taxonGraphDao.edges(n_trachelomonas_a, nameDao.load(uuid_n_trachelomonas), true);
163
        Assert.assertEquals(1, edges.size());
164
        Assert.assertEquals(refX.getUuid(), edges.get(0).getCitationUuid());
165
    }
166

    
167
    @Test
168
    @DataSets({
169
        @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="/eu/etaxonomy/cdm/database/ClearDBDataSet.xml"),
170
        @DataSet
171
    })
172
    public void testChangeRank() throws TaxonGraphException{
173

    
174
        setUuidPref();
175

    
176
        TaxonName n_trachelomonas_o_var_d = nameDao.load(uuid_n_trachelomonas_o_var_d);
177

    
178
        List<TaxonGraphEdgeDTO> edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_trachelomonas), true);
179
        Assert.assertEquals("One edge from 'Trachelomonas oviformis var. duplex' to 'Trachelomonas' expected", 1, edges.size());
180

    
181
        n_trachelomonas_o_var_d.setRank(Rank.SPECIES());
182
        nameDao.saveOrUpdate(n_trachelomonas_o_var_d);
183
        AbstractHibernateTaxonGraphProcessor processor = taxonGraphProcessor();
184
        Taxon singleTaxon = processor.assureSingleTaxon(n_trachelomonas_o_var_d);
185
        processor.updateEdges(singleTaxon);
186
        commitAndStartNewTransaction();
187

    
188
        // printDataSet(System.err,"TaxonRelationship");
189
        edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_trachelomonas), true);
190
        Assert.assertEquals("The edge to Trachelomonas should still exist", 1, edges.size());
191
        edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_trachelomonas_o), true);
192
        Assert.assertEquals("The edge to Trachelomonas oviformis should have been deleted", 0, edges.size());
193
    }
194

    
195
    @Test
196
    @DataSets({
197
        @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="/eu/etaxonomy/cdm/database/ClearDBDataSet.xml"),
198
        @DataSet
199
    })
200
    public void testChangeGenus() throws TaxonGraphException{
201

    
202
        setUuidPref();
203

    
204
        TaxonName n_trachelomonas_o_var_d = nameDao.load(uuid_n_trachelomonas_o_var_d);
205

    
206
        List<TaxonGraphEdgeDTO> edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_trachelomonas), true);
207
        Assert.assertEquals("One edge from 'Trachelomonas oviformis var. duplex' to 'Trachelomonas' expected", 1, edges.size());
208
        edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_trachelomonas_o), true);
209
        Assert.assertEquals("One edge from 'Trachelomonas oviformis var. duplex' to 'Trachelomonas oviformis' expected", 1, edges.size());
210
        edges = taxonGraphDao.edges(null, nameDao.load(uuid_n_euglena), true);
211
        Assert.assertEquals("No edges to 'Euglena' expected", 0, edges.size());
212

    
213
        n_trachelomonas_o_var_d.setGenusOrUninomial("Euglena");
214
        nameDao.saveOrUpdate(n_trachelomonas_o_var_d);
215
        AbstractHibernateTaxonGraphProcessor processor = taxonGraphProcessor();
216
        Taxon singleTaxon = processor.assureSingleTaxon(n_trachelomonas_o_var_d);
217
        processor.updateEdges(singleTaxon);
218
        commitAndStartNewTransaction();
219

    
220
        // printDataSet(System.err,"TaxonRelationship");
221
        edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_trachelomonas), true);
222
        Assert.assertEquals("The edge to Trachelomonas should have been deleted", 0, edges.size());
223
        edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_trachelomonas_o), true);
224
        Assert.assertEquals("The edge to 'Trachelomonas oviformis' should have been deleted", 0, edges.size());
225
        edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_euglena), true);
226
        Assert.assertEquals("The edge to 'Euglena' should have been created", 1, edges.size());
227
    }
228

    
229
    @Test
230
    @DataSets({
231
        @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="/eu/etaxonomy/cdm/database/ClearDBDataSet.xml"),
232
        @DataSet
233
    })
234
    public void testChangeSpecificEpithet_of_InfraSpecific() throws TaxonGraphException{
235

    
236
        setUuidPref();
237

    
238
        TaxonName n_trachelomonas_o_var_d = nameDao.load(uuid_n_trachelomonas_o_var_d);
239
        TaxonName n_trachelomonas = nameDao.load(uuid_n_trachelomonas);
240
        List<TaxonGraphEdgeDTO> edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, n_trachelomonas, true);
241
        Assert.assertEquals("One edge from 'Trachelomonas oviformis var. duplex' to 'Trachelomonas' expected", 1, edges.size());
242
        edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_trachelomonas_o), true);
243
        Assert.assertEquals("One edge from 'Trachelomonas oviformis var. duplex' to 'Trachelomonas oviformis' expected", 1, edges.size());
244

    
245
        n_trachelomonas_o_var_d.setSpecificEpithet("alabamensis");
246
        nameDao.saveOrUpdate(n_trachelomonas_o_var_d);
247
        AbstractHibernateTaxonGraphProcessor processor = taxonGraphProcessor();
248
        Taxon singleTaxon = processor.assureSingleTaxon(n_trachelomonas_o_var_d);
249
        processor.updateEdges(singleTaxon);
250
        commitAndStartNewTransaction();
251

    
252
        // printDataSet(System.err,"TaxonRelationship");
253
        edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_trachelomonas), true);
254
        Assert.assertEquals("The edge to Trachelomonas should still exist", 1, edges.size());
255
        edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_trachelomonas_o), true);
256
        Assert.assertEquals("The edge to Trachelomonas oviformis should have been deleted", 0, edges.size());
257
        edges = taxonGraphDao.edges(n_trachelomonas_o_var_d, nameDao.load(uuid_n_trachelomonas_a), true);
258
        Assert.assertEquals("The edge to Trachelomonas alabamensis should have been created", 1, edges.size());
259
    }
260

    
261

    
262
    @Override
263
    public void createTestDataSet() throws FileNotFoundException {
264

    
265
        TaxonRelationshipType relType = TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN();
266

    
267
        Session session = referenceDao.getSession();
268

    
269
        // graph:
270
        //
271
        // - Euglenophyceae Ref-A
272
        //   +-- Trachelomonas Ref-B
273
        //       +-- Trachelomonas alabamensis Ref-C
274
        //       +-- Trachelomonas oviformis Ref-D in Ref-C
275
        //       +-- +-- Trachelomonas oviformis var. duplex Ref-D in Ref-C
276
        //       +-- Trachelomonas sydneyensis Ref-E
277
        //       +-- +-- Trachelomonas sydneyensis var. acuminata Ref-F
278

    
279

    
280
        Reference secRef = ReferenceFactory.newDatabase();
281
        secRef.setTitleCache("secRef", true);
282

    
283
        Reference otherSecRef = ReferenceFactory.newDatabase();
284
        otherSecRef.setTitleCache("Other sec ref", true);
285

    
286
        secRef.setUuid(uuid_secRef);
287
        Reference refA = ReferenceFactory.newBook();
288
        refA.setTitleCache("Ref-A", true);
289
        Reference refB = ReferenceFactory.newBook();
290
        refB.setTitleCache("Ref-B", true);
291
        Reference refC = ReferenceFactory.newArticle();
292
        refC.setTitleCache("Ref-C", true);
293
        Reference refD = ReferenceFactory.newSection();
294
        refD.setTitleCache("Ref-D in Ref-C", true);
295
        refD.setInReference(refC);
296
        Reference refE = ReferenceFactory.newBook();
297
        refE.setTitleCache("Ref-E", true);
298
        Reference refF = ReferenceFactory.newBook();
299
        refF.setTitleCache("Ref-F", true);
300
        Reference refG = ReferenceFactory.newBook();
301
        refG.setTitleCache("Ref-G", true);
302

    
303
        TaxonName n_euglenophyceae = TaxonNameFactory.NewBotanicalInstance(Rank.FAMILY(), "Euglenophyceae", null, null, null, null, refA, null, null);
304
        n_euglenophyceae.setUuid(uuid_n_euglenophyceae);
305
        TaxonName n_euglena = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS(), "Euglena", null, null, null, null, refA, null, null);
306
        n_euglena.setUuid(uuid_n_euglena);
307
        TaxonName n_trachelomonas = TaxonNameFactory.NewBotanicalInstance(Rank.GENUS(), "Trachelomonas", null, null, null, null, refB, null, null);
308
        n_trachelomonas.setUuid(uuid_n_trachelomonas);
309
        TaxonName n_trachelomonas_a = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES(), "Trachelomonas", null, "alabamensis",  null, null, refC, null, null);
310
        n_trachelomonas_a.setUuid(uuid_n_trachelomonas_a);
311
        TaxonName n_trachelomonas_o = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES(), "Trachelomonas", null, "oviformis", null, null, refD, null, null);
312
        n_trachelomonas_o.setUuid(uuid_n_trachelomonas_o);
313
        TaxonName n_trachelomonas_o_var_d = TaxonNameFactory.NewBotanicalInstance(Rank.VARIETY(), "Trachelomonas", null, "oviformis", "duplex", null, refD, null, null);
314
        n_trachelomonas_o_var_d.setUuid(uuid_n_trachelomonas_o_var_d);
315
        TaxonName n_trachelomonas_s = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES(), "Trachelomonas", null, "sydneyensis",  null, null, refE, null, null);
316
        n_trachelomonas_s.setUuid(uuid_n_trachelomonas_s);
317
        TaxonName n_trachelomonas_s_var_a = TaxonNameFactory.NewBotanicalInstance(Rank.VARIETY(), "Trachelomonas", null, "sydneyensis",  "acuminata", null, refG, null, null);
318
        n_trachelomonas_s_var_a.setUuid(uuid_n_trachelomonas_s_var_a);
319
        TaxonName n_trachelomonas_r_s = TaxonNameFactory.NewBotanicalInstance(Rank.VARIETY(), "Trachelomonas", null, "robusta", "sparsiornata", null, refG, null, null);
320
        n_trachelomonas_r_s.setUuid(uuid_n_trachelomonas_r_s);
321
        TaxonName n_phacus_s = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES(), "Phacus", null, "smulkowskianus", null, null, refG, null, null);
322
        n_phacus_s.setUuid(uuid_n_phacus_s);
323

    
324
        Taxon t_euglenophyceae = Taxon.NewInstance(n_euglenophyceae, secRef);
325
        t_euglenophyceae.setUuid(uuid_t_euglenophyceae);
326
        Taxon t_euglena = Taxon.NewInstance(n_euglena, secRef);
327
        t_euglena.setUuid(uuid_t_euglena);
328
        Taxon t_trachelomonas = Taxon.NewInstance(n_trachelomonas, secRef);
329
        Taxon other_t_trachelomonas = Taxon.NewInstance(n_trachelomonas, otherSecRef);
330
        t_trachelomonas.setUuid(uuid_t_trachelomonas);
331
        Taxon t_trachelomonas_a = Taxon.NewInstance(n_trachelomonas_a, secRef);
332
        t_trachelomonas_a.setUuid(uuid_t_trachelomonas_a);
333
        Taxon t_trachelomonas_o = Taxon.NewInstance(n_trachelomonas_o, secRef);
334
        t_trachelomonas_o.setUuid(uuid_t_trachelomonas_o);
335
        Taxon t_trachelomonas_o_var_d = Taxon.NewInstance(n_trachelomonas_o_var_d, secRef);
336
        t_trachelomonas_o_var_d.setUuid(uuid_t_trachelomonas_o_var_d);
337
        Taxon t_trachelomonas_s = Taxon.NewInstance(n_trachelomonas_s, secRef);
338
        t_trachelomonas_s.setUuid(uuid_t_trachelomonas_s);
339
        Taxon t_trachelomonas_s_var_a = Taxon.NewInstance(n_trachelomonas_s_var_a, secRef);
340
        t_trachelomonas_s_var_a.setUuid(uuid_t_trachelomonas_s_var_a);
341

    
342
        for(Object cdm : new Object[]{
343
                // refs:
344
                secRef, refA, refB, refC, refD, refE, refF,
345
                // names without taxa
346
                n_phacus_s, n_trachelomonas_r_s,
347
                // taxa:
348
                t_euglenophyceae, t_euglena, t_trachelomonas, other_t_trachelomonas, t_trachelomonas_a, t_trachelomonas_o, t_trachelomonas_o_var_d,
349
                t_trachelomonas_s, t_trachelomonas_s_var_a}) {
350
            session.save(cdm);
351
        }
352

    
353
        List<TaxonRelationship> taxonRels = new ArrayList<>();
354

    
355
        taxonRels.add(t_trachelomonas_o_var_d.addTaxonRelation(t_trachelomonas, relType, refC, null));
356
        taxonRels.add(t_trachelomonas_o_var_d.addTaxonRelation(t_trachelomonas_o, relType, refC, null));
357

    
358
        taxonRels.add(t_trachelomonas_o.addTaxonRelation(t_trachelomonas, relType, refC, null));
359

    
360
        taxonRels.add(t_trachelomonas_s_var_a.addTaxonRelation(t_trachelomonas, relType, n_trachelomonas_s_var_a.getNomenclaturalReference(), null));
361
        taxonRels.add(t_trachelomonas_s_var_a.addTaxonRelation(t_trachelomonas_s, relType, n_trachelomonas_s_var_a.getNomenclaturalReference(), null));
362

    
363
        taxonRels.add(t_trachelomonas_s.addTaxonRelation(t_trachelomonas, relType, n_trachelomonas_s.getNomenclaturalReference(), null));
364

    
365
        taxonRels.add(t_trachelomonas_a.addTaxonRelation(t_trachelomonas, relType, n_trachelomonas_a.getNomenclaturalReference(), null));
366

    
367
        taxonRels.add(t_trachelomonas.addTaxonRelation(t_euglenophyceae, relType, n_trachelomonas.getNomenclaturalReference(), null));
368
        taxonRels.add(t_euglena.addTaxonRelation(t_euglenophyceae, relType, n_euglena.getNomenclaturalReference(), null));
369

    
370
        commitAndStartNewTransaction();
371

    
372
        String fileNameAppendix = null;
373
        writeDbUnitDataSetFile(new String[] {
374
            "TAXONBASE", "TAXONNAME", "HomotypicalGroup", "Reference",
375
            "TaxonRelationship",
376
            "LANGUAGESTRING",
377
            "HIBERNATE_SEQUENCES", // IMPORTANT!!!
378
            },
379
            fileNameAppendix, false );
380
    }
381
}
    (1-1/1)