Project

General

Profile

Download (10.8 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2015 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.taxeditor.operation;
10

    
11
import java.util.ArrayList;
12
import java.util.Iterator;
13
import java.util.List;
14
import java.util.Set;
15
import java.util.UUID;
16

    
17
import org.apache.log4j.Logger;
18
import org.eclipse.core.commands.ExecutionException;
19
import org.junit.Assert;
20
import org.junit.Ignore;
21
import org.junit.Test;
22
import org.unitils.dbunit.annotation.DataSet;
23

    
24
import eu.etaxonomy.cdm.api.service.IClassificationService;
25
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
26
import eu.etaxonomy.cdm.api.service.ITaxonService;
27
import eu.etaxonomy.cdm.model.common.Annotation;
28
import eu.etaxonomy.cdm.model.common.Language;
29
import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
30
import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
31
import eu.etaxonomy.cdm.model.description.Feature;
32
import eu.etaxonomy.cdm.model.description.TaxonDescription;
33
import eu.etaxonomy.cdm.model.description.TextData;
34
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
35
import eu.etaxonomy.cdm.model.name.INonViralName;
36
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
37
import eu.etaxonomy.cdm.model.name.TaxonName;
38
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
39
import eu.etaxonomy.cdm.model.taxon.Synonym;
40
import eu.etaxonomy.cdm.model.taxon.Taxon;
41
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
42
import eu.etaxonomy.taxeditor.editor.name.operation.CreateSynonymInExistingHomotypicalGroupOperation;
43
import eu.etaxonomy.taxeditor.store.CdmStore;
44

    
45
/**
46
 * @author cmathew
47
 * @date 3 Feb 2015
48
 *
49
 */
50

    
51
@DataSet
52
public class TaxonNameEditorTest extends BaseOperationTest {
53

    
54
    @SuppressWarnings("unused")
55
	private static final Logger logger = Logger.getLogger(TaxonNameEditorTest.class);
56

    
57
    ITaxonNodeService taxonNodeService = getRemoteApplicationController().getTaxonNodeService();
58
    ITaxonService taxonService = getRemoteApplicationController().getTaxonService();
59
    IClassificationService classificationService = getRemoteApplicationController().getClassificationService();
60

    
61
    Language english = Language.getLanguageFromUuid(Language.uuidEnglish);
62

    
63

    
64
    @Test
65
    public void testAddHomotypicSynonym() throws ExecutionException {
66
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
67

    
68
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
69
        Taxon taxon = taxonNode.getTaxon();
70
        HomotypicalGroup group = taxon.getHomotypicGroup();
71
        TaxonName newSynonymName = TaxonNameFactory.NewBotanicalInstance(null);
72
        newSynonymName.setTitleCache("New Synonym", true);
73
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
74
                undoContext, taxon, group, newSynonymName, postOperation);
75

    
76
        operation.execute(monitor, info);
77
        taxonNodeService.merge(taxonNode);
78
        Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
79
        Assert.assertEquals(taxon.getSynonyms().size(), 1);
80
        Iterator<Synonym> synonymItr = taxon.getSynonyms().iterator();
81
        Synonym synonym = synonymItr.next();
82
        Assert.assertTrue(taxon.getHomotypicGroup().getTypifiedNames().contains(synonym.getName()));
83
    }
84

    
85
    @Test
86
    public void addHeterotypicSynonym() throws ExecutionException {
87
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
88

    
89
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
90
        Taxon taxon = taxonNode.getTaxon();
91
        HomotypicalGroup group = taxon.getHomotypicGroup();
92
        TaxonName newSynonymName = TaxonNameFactory.NewBotanicalInstance(null);
93
        newSynonymName.setTitleCache("New Synonym", true);
94
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
95
                undoContext, taxon, group, newSynonymName, postOperation);
96

    
97
        operation.execute(monitor, info);
98
        taxonNodeService.merge(taxonNode);
99

    
100

    
101
    }
102

    
103
    @Test
104
    public void addDeleteAddHomotypicSynonym() throws ExecutionException {
105
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
106

    
107
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
108
        Taxon taxon = taxonNode.getTaxon();
109
        HomotypicalGroup group = taxon.getHomotypicGroup();
110
        TaxonName newSynonymName = TaxonNameFactory.NewBotanicalInstance(null);
111
        newSynonymName.setTitleCache("New Synonym", true);
112
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
113
                undoContext, taxon, group, newSynonymName, postOperation);
114

    
115
        operation.execute(monitor, info);
116
        taxonNodeService.merge(taxonNode);
117

    
118

    
119
        Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
120

    
121
        Set<Synonym> synonyms = taxon.getSynonyms();
122

    
123
        for(Synonym synonym : synonyms) {
124
            taxonService.deleteSynonym(synonym.getUuid(), null);
125
        }
126

    
127
        taxonNodeService.merge(taxonNode);
128

    
129
        newSynonymName = TaxonNameFactory.NewBotanicalInstance(null);
130
        newSynonymName.setTitleCache("Another New Synonym", true);
131
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
132
                undoContext, taxon, group, newSynonymName, postOperation);
133

    
134
        operation.execute(monitor, info);
135
        taxonNodeService.merge(taxonNode);
136
    }
137

    
138
    @Test
139
    public void addDeleteAddHomotypicSynonymWithAnnotations() throws ExecutionException {
140
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
141

    
142
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
143
        Taxon taxon = taxonNode.getTaxon();
144
        HomotypicalGroup group = taxon.getHomotypicGroup();
145
        TaxonName newSynonymName = TaxonNameFactory.NewBotanicalInstance(null);
146
        newSynonymName.setTitleCache("New Synonym", true);
147
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
148
                undoContext, taxon, group, newSynonymName, postOperation);
149

    
150
        operation.execute(monitor, info);
151
        taxonNodeService.merge(taxonNode);
152

    
153
        boolean includeUnpublished = true;
154
        Synonym syn = taxonService.findBestMatchingSynonym("New Synonym", includeUnpublished);
155

    
156
        if (syn != null){
157
           syn.addAnnotation(Annotation.NewDefaultLanguageInstance("TEst"));
158
           taxonService.merge(syn);
159
        }
160

    
161

    
162
        Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
163

    
164
        Set<Synonym> synonyms = taxon.getSynonyms();
165

    
166
        for(Synonym synonym : synonyms) {
167
            Assert.assertEquals(syn.getUuid(), synonym.getUuid());
168
            taxonService.deleteSynonym(synonym.getUuid(), null);
169
        }
170

    
171
        taxonNodeService.merge(taxonNode);
172

    
173
        newSynonymName = TaxonNameFactory.NewBotanicalInstance(null);
174
        newSynonymName.setTitleCache("Another New Synonym", true);
175
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
176
                undoContext, taxon, group, newSynonymName, postOperation);
177

    
178
        operation.execute(monitor, info);
179
        taxonNodeService.merge(taxonNode);
180
    }
181

    
182

    
183
    @Test
184
    public void swapSynonymWithAcceptedTaxon() throws ExecutionException {
185
        List<TaxonNode> rootEntities = new ArrayList<TaxonNode>();
186
        UUID taxonNodeUuid = UUID.fromString("d425a971-1abe-4895-9e1f-1e5c8ff1c84c");
187
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
188
        rootEntities.add(taxonNode);
189

    
190
        UUID taxonUuid = UUID.fromString("9763e5f0-6cd4-4d96-b8a4-4420854f7727");
191
        Taxon taxon = (Taxon)taxonService.load(taxonUuid);
192
        TaxonName taxonName = taxon.getName();
193

    
194
        UUID synonymUuid = UUID.fromString("1eb173bd-b174-4162-8ff5-5136d8f1e746");
195
        Synonym synonym = (Synonym)taxonService.load(synonymUuid);
196
        TaxonName synonymName = synonym.getName();
197

    
198
        taxonService.swapSynonymAndAcceptedTaxon(synonym.getUuid(), taxon.getUuid());
199

    
200
        Assert.assertEquals(taxonName, synonym.getName());
201
        Assert.assertEquals(synonymName, taxon.getName());
202
    }
203

    
204
    @Test
205
    public void addTaxon() {
206
        INonViralName taxonName = TaxonNameFactory.NewNonViralInstance(null);
207
        Taxon taxon = Taxon.NewInstance(taxonName, null);
208
        taxon = (Taxon)taxonService.merge(taxon);
209
        taxon.getName().addTypeDesignation(NameTypeDesignation.NewInstance(), true);
210
    }
211

    
212
    @Ignore
213
    @Test
214
    public void addDescription() {
215
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
216

    
217
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
218
        Taxon taxon = taxonNode.getTaxon();
219
        TaxonDescription description = TaxonDescription.NewInstance(taxon);
220

    
221

    
222
        TextData textData = TextData.NewInstance();
223

    
224
        textData.setFeature(Feature.ECOLOGY());
225
        description.addElement(textData);
226

    
227
        DescriptionElementSource descriptionElementSource = DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource);
228
        textData.addSource(descriptionElementSource);
229

    
230

    
231
        CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
232

    
233
        description.getId();
234
    }
235

    
236

    
237
    @Test
238
    public void addTaxonNodeCascadeProblem() {
239
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
240

    
241
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
242
        Taxon childTaxon = Taxon.NewInstance(null, null);
243
        TaxonNode childTaxonNode = taxonNode.addChildTaxon(childTaxon, null, null);
244
        Taxon grandChildTaxon = Taxon.NewInstance(null, null);
245
        TaxonNode grandChildTaxonNode = childTaxonNode.addChildTaxon(grandChildTaxon, null, null);
246

    
247
        CdmStore.getService(ITaxonNodeService.class).merge(grandChildTaxonNode,true);
248

    
249
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getId(), childTaxonNode.getId());
250

    
251
        Assert.assertTrue(childTaxonNode.treeIndex() != null);
252
        Assert.assertEquals(taxonNode.getChildNodes().get(0).treeIndex(), childTaxonNode.treeIndex());
253
        Assert.assertFalse(childTaxon.getId() == 0);
254
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getTaxon().getId(), childTaxon.getId());
255

    
256
        Assert.assertTrue(grandChildTaxonNode.treeIndex() != null);
257
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getChildNodes().get(0).getId(), grandChildTaxonNode.getId());
258
        Assert.assertFalse(grandChildTaxon.getId() == 0);
259
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getChildNodes().get(0).getTaxon().getId(), grandChildTaxon.getId());
260
    }
261

    
262
}
263

    
(4-4/5)