Project

General

Profile

Download (10.6 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.TaxonName;
37
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
38
import eu.etaxonomy.cdm.model.taxon.Synonym;
39
import eu.etaxonomy.cdm.model.taxon.Taxon;
40
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
41
import eu.etaxonomy.taxeditor.editor.name.operation.CreateSynonymInExistingHomotypicalGroupOperation;
42
import eu.etaxonomy.taxeditor.store.CdmStore;
43

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

    
50
@DataSet
51
public class TaxonNameEditorTest extends BaseOperationTest {
52

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

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

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

    
62

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

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

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

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

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

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

    
99

    
100
    }
101

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

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

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

    
117

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

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

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

    
126
        taxonNodeService.merge(taxonNode);
127

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

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

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

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

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

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

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

    
160

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

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

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

    
170
        taxonNodeService.merge(taxonNode);
171

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

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

    
181

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

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

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

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

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

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

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

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

    
219

    
220
        TextData textData = TextData.NewInstance();
221

    
222
        textData.setFeature(Feature.ECOLOGY());
223
        description.addElement(textData);
224

    
225
        DescriptionElementSource descriptionElementSource = DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource);
226
        textData.addSource(descriptionElementSource);
227

    
228

    
229
        CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
230

    
231
        description.getId();
232
    }
233

    
234

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

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

    
245
        CdmStore.getService(ITaxonNodeService.class).merge(grandChildTaxonNode,true);
246

    
247
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getId(), childTaxonNode.getId());
248

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

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

    
260
}
261

    
(4-4/5)