Project

General

Profile

Download (11.1 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.api.service.UpdateResult;
28
import eu.etaxonomy.cdm.model.common.Annotation;
29
import eu.etaxonomy.cdm.model.common.Language;
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.reference.OriginalSourceType;
40
import eu.etaxonomy.cdm.model.taxon.Synonym;
41
import eu.etaxonomy.cdm.model.taxon.Taxon;
42
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
43
import eu.etaxonomy.taxeditor.editor.name.operation.CreateSynonymInExistingHomotypicalGroupOperation;
44
import eu.etaxonomy.taxeditor.store.CdmStore;
45

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

    
52
@DataSet
53
public class TaxonNameEditorTest extends BaseOperationTest {
54

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

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

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

    
64

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

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

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

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

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

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

    
101

    
102
    }
103

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

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

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

    
119

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

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

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

    
128
        taxonNodeService.merge(taxonNode);
129

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

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

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

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

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

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

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

    
162

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

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

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

    
172
        taxonNodeService.merge(taxonNode);
173

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

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

    
183

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

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

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

    
199
        UpdateResult result = taxonService.swapSynonymAndAcceptedTaxon(synonym.getUuid(), taxon.getUuid(), false);
200
        taxon = (Taxon)result.getCdmEntity();
201
        Set<TaxonName> synNames = taxon.getSynonymNames();
202
        Iterator<TaxonName> iterator = synNames.iterator();
203
        if(iterator.hasNext()){
204
            Assert.assertEquals(synonymName, iterator.next());
205
        }else{
206
            Assert.fail();
207
        }
208

    
209
        Assert.assertEquals(synonymName, taxon.getName());
210
    }
211

    
212
    @Test
213
    public void addTaxon() {
214
        INonViralName taxonName = TaxonNameFactory.NewNonViralInstance(null);
215
        Taxon taxon = Taxon.NewInstance(taxonName, null);
216
        taxon = (Taxon)taxonService.merge(taxon);
217
        taxon.getName().addTypeDesignation(NameTypeDesignation.NewInstance(), true);
218
    }
219

    
220
    @Ignore
221
    @Test
222
    public void addDescription() {
223
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
224

    
225
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
226
        Taxon taxon = taxonNode.getTaxon();
227
        TaxonDescription description = TaxonDescription.NewInstance(taxon);
228

    
229

    
230
        TextData textData = TextData.NewInstance();
231

    
232
        textData.setFeature(Feature.ECOLOGY());
233
        description.addElement(textData);
234

    
235
        DescriptionElementSource descriptionElementSource = DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource);
236
        textData.addSource(descriptionElementSource);
237

    
238

    
239
        CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
240

    
241
        description.getId();
242
    }
243

    
244

    
245
    @Test
246
    public void addTaxonNodeCascadeProblem() {
247
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
248

    
249
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
250
        Taxon childTaxon = Taxon.NewInstance(null, null);
251
        TaxonNode childTaxonNode = taxonNode.addChildTaxon(childTaxon, null, null);
252
        Taxon grandChildTaxon = Taxon.NewInstance(null, null);
253
        TaxonNode grandChildTaxonNode = childTaxonNode.addChildTaxon(grandChildTaxon, null, null);
254

    
255
        CdmStore.getService(ITaxonNodeService.class).merge(grandChildTaxonNode,true);
256

    
257
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getId(), childTaxonNode.getId());
258

    
259
        Assert.assertTrue(childTaxonNode.treeIndex() != null);
260
        Assert.assertEquals(taxonNode.getChildNodes().get(0).treeIndex(), childTaxonNode.treeIndex());
261
        Assert.assertFalse(childTaxon.getId() == 0);
262
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getTaxon().getId(), childTaxon.getId());
263

    
264
        Assert.assertTrue(grandChildTaxonNode.treeIndex() != null);
265
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getChildNodes().get(0).getId(), grandChildTaxonNode.getId());
266
        Assert.assertFalse(grandChildTaxon.getId() == 0);
267
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getChildNodes().get(0).getTaxon().getId(), grandChildTaxon.getId());
268
    }
269

    
270
}
271

    
(4-4/5)