Project

General

Profile

Download (6.29 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2015 EDIT
4
* European Distributed Institute of Taxonomy
5
* http://www.e-taxonomy.eu
6
*
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10
package eu.etaxonomy.taxeditor.operation;
11

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

    
18
import org.apache.log4j.Logger;
19
import org.eclipse.core.commands.ExecutionException;
20
import org.junit.Assert;
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.Language;
28
import eu.etaxonomy.cdm.model.name.BotanicalName;
29
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
30
import eu.etaxonomy.cdm.model.name.NonViralName;
31
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
32
import eu.etaxonomy.cdm.model.taxon.Synonym;
33
import eu.etaxonomy.cdm.model.taxon.Taxon;
34
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
35
import eu.etaxonomy.taxeditor.editor.name.operation.CreateSynonymInExistingHomotypicalGroupOperation;
36
import eu.etaxonomy.taxeditor.operations.BaseOperationTest;
37

    
38
/**
39
 * @author cmathew
40
 * @date 3 Feb 2015
41
 *
42
 */
43

    
44
@DataSet
45
public class TaxonNameEditorTest extends BaseOperationTest {
46

    
47
    private static final Logger logger = Logger.getLogger(TaxonNameEditorTest.class);
48

    
49
    ITaxonNodeService taxonNodeService = getRemoteApplicationController().getTaxonNodeService();
50
    ITaxonService taxonService = getRemoteApplicationController().getTaxonService();
51
    IClassificationService classificationService = getRemoteApplicationController().getClassificationService();
52

    
53
    Language english = Language.getLanguageFromUuid(Language.uuidEnglish);
54

    
55

    
56
    @Test
57
    public void testAddHomotypicSynonym() throws ExecutionException {
58
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
59

    
60
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
61
        Taxon taxon = taxonNode.getTaxon();
62
        HomotypicalGroup group = taxon.getHomotypicGroup();
63
        BotanicalName newSynonymName = BotanicalName.NewInstance(null);
64
        newSynonymName.setTitleCache("New Synonym", true);
65
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
66
                undoContext, taxon, group, newSynonymName, postOperation);
67

    
68
        operation.execute(monitor, info);
69
        taxonNodeService.merge(taxonNode);
70
        Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
71
        Assert.assertEquals(taxon.getSynonyms().size(), 1);
72
        Iterator<Synonym> synonymItr = taxon.getSynonyms().iterator();
73
        Synonym synonym = synonymItr.next();
74
        Assert.assertTrue(taxon.getHomotypicGroup().getTypifiedNames().contains(synonym.getName()));
75
    }
76

    
77
    @Test
78
    public void addHeterotypicSynonym() throws ExecutionException {
79
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
80

    
81
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
82
        Taxon taxon = taxonNode.getTaxon();
83
        HomotypicalGroup group = taxon.getHomotypicGroup();
84
        BotanicalName newSynonymName = BotanicalName.NewInstance(null);
85
        newSynonymName.setTitleCache("New Synonym", true);
86
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
87
                undoContext, taxon, group, newSynonymName, postOperation);
88

    
89
        operation.execute(monitor, info);
90
        taxonNodeService.merge(taxonNode);
91

    
92

    
93
    }
94

    
95
    @Test
96
    public void addDeleteAddHomotypicSynonym() throws ExecutionException {
97
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
98

    
99
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
100
        Taxon taxon = taxonNode.getTaxon();
101
        HomotypicalGroup group = taxon.getHomotypicGroup();
102
        BotanicalName newSynonymName = BotanicalName.NewInstance(null);
103
        newSynonymName.setTitleCache("New Synonym", true);
104
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
105
                undoContext, taxon, group, newSynonymName, postOperation);
106

    
107
        operation.execute(monitor, info);
108
        taxonNodeService.merge(taxonNode);
109
        Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
110

    
111
        Set<Synonym> synonyms = taxon.getSynonyms();
112
        for(Synonym synonym : synonyms) {
113
            taxonService.deleteSynonym(synonym.getUuid(), taxon.getUuid(), null);
114
        }
115

    
116
        taxonNodeService.merge(taxonNode);
117

    
118
        newSynonymName = BotanicalName.NewInstance(null);
119
        newSynonymName.setTitleCache("Another New Synonym", true);
120
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
121
                undoContext, taxon, group, newSynonymName, postOperation);
122

    
123
        operation.execute(monitor, info);
124
        taxonNodeService.merge(taxonNode);
125
    }
126

    
127
    @Test
128
    public void swapSynonymWithAcceptedTaxon() throws ExecutionException {
129
        List<TaxonNode> rootEntities = new ArrayList<TaxonNode>();
130
        UUID taxonNodeUuid = UUID.fromString("d425a971-1abe-4895-9e1f-1e5c8ff1c84c");
131
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
132
        rootEntities.add(taxonNode);
133

    
134
        UUID taxonUuid = UUID.fromString("9763e5f0-6cd4-4d96-b8a4-4420854f7727");
135
        Taxon taxon = (Taxon)taxonService.load(taxonUuid);
136
        TaxonNameBase taxonName = taxon.getName();
137

    
138
        UUID synonymUuid = UUID.fromString("1eb173bd-b174-4162-8ff5-5136d8f1e746");
139
        Synonym synonym = (Synonym)taxonService.load(synonymUuid);
140
        TaxonNameBase synonymName = synonym.getName();
141

    
142
        taxonService.swapSynonymAndAcceptedTaxon(synonym.getUuid(), taxon.getUuid());
143

    
144
        Assert.assertEquals(taxonName, synonym.getName());
145
        Assert.assertEquals(synonymName, taxon.getName());
146
    }
147

    
148
    @Test
149
    public void addTaxon() {
150
        NonViralName taxonName = NonViralName.NewInstance(null);
151
        Taxon taxon = Taxon.NewInstance(taxonName, null);
152
        taxonService.merge(taxon);
153
    }
154

    
155
}
156

    
(3-3/4)