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
|
}
|