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;import org.apache.logging.log4j.Logger;
17
import org.hibernate.Session;
18
import org.junit.Assert;
19
import org.junit.Test;
20
import org.unitils.dbunit.annotation.DataSet;
21
import org.unitils.dbunit.annotation.DataSets;
22
import org.unitils.spring.annotation.SpringBeanByType;
23

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

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

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

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

    
57
    @SpringBeanByType
58
    private ITaxonGraphDao taxonGraphDao;
59

    
60
    @SpringBeanByType
61
    private IReferenceDao referenceDao;
62

    
63
    @SpringBeanByType
64
    private ITaxonNameDao nameDao;
65

    
66
    @SpringBeanByType
67
    private ITaxonDao taxonDao;
68

    
69
    @SpringBeanByType
70
    private IPreferenceDao prefDao;
71

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

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

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

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

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

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

    
117
        setUuidPref();
118

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

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

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

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

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

    
144
        setUuidPref();
145

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

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

    
157
//        Logger.getLogger("org.hibernate.SQL").setLevel(Level.TRACE);
158
        commitAndStartNewTransaction();
159

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

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

    
173
        setUuidPref();
174

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

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

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

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

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

    
201
        setUuidPref();
202

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

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

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

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

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

    
235
        setUuidPref();
236

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

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

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

    
260

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

    
264
        TaxonRelationshipType relType = TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN();
265

    
266
        Session session = referenceDao.getSession();
267

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

    
278

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

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

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

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

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

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

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

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

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

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

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

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

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

    
369
        commitAndStartNewTransaction();
370

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