Project

General

Profile

Download (11.2 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
@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
    @Test
63
    public void testAddHomotypicSynonym() throws ExecutionException {
64
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
65

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

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

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

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

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

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

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

    
111
        operation.execute(monitor, info);
112
        taxonNodeService.merge(taxonNode);
113

    
114
        Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
115

    
116
        Set<Synonym> synonyms = taxon.getSynonyms();
117
        for(Synonym synonym : synonyms) {
118
            taxonService.deleteSynonym(synonym.getUuid(), null);
119
        }
120
        taxonNodeService.merge(taxonNode, true);
121

    
122
        newSynonymName = TaxonNameFactory.NewBotanicalInstance(null);
123
        newSynonymName.setTitleCache("Another New Synonym", true);
124
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
125
                undoContext, taxon, group, newSynonymName, postOperation);
126

    
127
        operation.execute(monitor, info);
128
        taxonNodeService.merge(taxonNode, true);
129
    }
130

    
131
    @Test
132
    public void addDeleteAddHomotypicSynonymWithAnnotations() throws ExecutionException {
133
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
134

    
135
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
136
        Taxon taxon = taxonNode.getTaxon();
137
        HomotypicalGroup group = taxon.getHomotypicGroup();
138
        TaxonName newSynonymName = TaxonNameFactory.NewBotanicalInstance(null);
139
        newSynonymName.setTitleCache("New Synonym", true);
140
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
141
                undoContext, taxon, group, newSynonymName, postOperation);
142

    
143
        operation.execute(monitor, info);
144
        taxonNodeService.merge(taxonNode);
145

    
146
        boolean includeUnpublished = true;
147
        Synonym syn = taxonService.findBestMatchingSynonym("New Synonym", includeUnpublished);
148

    
149
        if (syn != null){
150
           syn.addAnnotation(Annotation.NewDefaultLanguageInstance("TEst"));
151
           taxonService.merge(syn);
152
        }
153

    
154
        Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
155

    
156
        Set<Synonym> synonyms = taxon.getSynonyms();
157
        for(Synonym synonym : synonyms) {
158
            Assert.assertEquals(syn.getUuid(), synonym.getUuid());
159
            taxonService.deleteSynonym(synonym.getUuid(), null);
160
        }
161
        taxonNodeService.merge(taxonNode);
162

    
163
        newSynonymName = TaxonNameFactory.NewBotanicalInstance(null);
164
        newSynonymName.setTitleCache("Another New Synonym", true);
165
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
166
                undoContext, taxon, group, newSynonymName, postOperation);
167

    
168
        operation.execute(monitor, info);
169
        taxonNodeService.merge(taxonNode);
170
    }
171

    
172
    @Test
173
    @Ignore
174
    public void swapSynonymWithAcceptedTaxon() {
175
        List<TaxonNode> rootEntities = new ArrayList<TaxonNode>();
176
        UUID taxonNodeUuid = UUID.fromString("d425a971-1abe-4895-9e1f-1e5c8ff1c84c");
177
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
178
        rootEntities.add(taxonNode);
179

    
180
        UUID taxonUuid = UUID.fromString("9763e5f0-6cd4-4d96-b8a4-4420854f7727");
181
        Taxon taxon = (Taxon)taxonService.load(taxonUuid);
182
        TaxonName taxonName = taxon.getName();
183

    
184
        UUID synonymUuid = UUID.fromString("1eb173bd-b174-4162-8ff5-5136d8f1e746");
185
        Synonym synonym = (Synonym)taxonService.load(synonymUuid);
186
        TaxonName synonymName = synonym.getName();
187

    
188
        UpdateResult result = taxonService.swapSynonymAndAcceptedTaxon(synonym.getUuid(), taxon.getUuid(), false);
189
        taxon = (Taxon)result.getCdmEntity();
190
        Set<TaxonName> synNames = taxon.getSynonymNames();
191
        Iterator<TaxonName> iterator = synNames.iterator();
192
        if(iterator.hasNext()){
193
            Assert.assertEquals(taxonName, iterator.next());
194
        }else{
195
            Assert.fail();
196
        }
197

    
198
        Assert.assertEquals(synonymName, taxon.getName());
199
    }
200

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

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

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

    
218
        TextData textData = TextData.NewInstance();
219
        textData.setFeature(Feature.ECOLOGY());
220
        description.addElement(textData);
221

    
222
        DescriptionElementSource descriptionElementSource = DescriptionElementSource.NewInstance(OriginalSourceType.PrimaryTaxonomicSource);
223
        textData.addSource(descriptionElementSource);
224

    
225
        CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
226

    
227
        description.getId();
228
    }
229

    
230
    @Test
231
    public void addTaxonNodeCascadeProblem() {
232
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
233

    
234
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
235
        Taxon childTaxon = Taxon.NewInstance(null, null);
236
        TaxonNode childTaxonNode = taxonNode.addChildTaxon(childTaxon, null, null);
237
        CdmStore.getService(ITaxonNodeService.class).merge(childTaxonNode, true);
238

    
239
        Taxon grandChildTaxon = Taxon.NewInstance(null, null);
240
        TaxonNode grandChildTaxonNode = childTaxonNode.addChildTaxon(grandChildTaxon, null, null);
241

    
242
        CdmStore.getService(ITaxonNodeService.class).merge(grandChildTaxonNode, true);
243

    
244
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getId(), childTaxonNode.getId());
245

    
246
        Assert.assertTrue(childTaxonNode.treeIndex() != null);
247
        Assert.assertEquals(taxonNode.getChildNodes().get(0).treeIndex(), childTaxonNode.treeIndex());
248
        Assert.assertFalse(childTaxon.getId() == 0);
249
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getTaxon().getId(), childTaxon.getId());
250

    
251
        Assert.assertTrue(grandChildTaxonNode.treeIndex() != null);
252
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getChildNodes().get(0).getId(), grandChildTaxonNode.getId());
253
        Assert.assertFalse(grandChildTaxon.getId() == 0);
254
        Assert.assertEquals(taxonNode.getChildNodes().get(0).getChildNodes().get(0).getTaxon().getId(), grandChildTaxon.getId());
255
    }
256
}
(4-4/5)