Project

General

Profile

Download (7.56 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.cdm.model;
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.Before;
22
import org.junit.BeforeClass;
23
import org.junit.Test;
24
import org.unitils.dbunit.annotation.DataSet;
25

    
26
import eu.etaxonomy.cdm.api.service.IClassificationService;
27
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
28
import eu.etaxonomy.cdm.api.service.ITaxonService;
29
import eu.etaxonomy.cdm.model.common.Language;
30
import eu.etaxonomy.cdm.model.name.BotanicalName;
31
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
32
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
33
import eu.etaxonomy.cdm.model.name.NonViralName;
34
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
35
import eu.etaxonomy.cdm.model.taxon.Synonym;
36
import eu.etaxonomy.cdm.model.taxon.Taxon;
37
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
38
import eu.etaxonomy.taxeditor.editor.name.operation.CreateSynonymInExistingHomotypicalGroupOperation;
39
import eu.etaxonomy.taxeditor.httpinvoker.CDMServer;
40
import eu.etaxonomy.taxeditor.operations.OperationTestBase;
41
import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher;
42
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
43
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
44
import eu.etaxonomy.taxeditor.session.MockSessionOwner;
45

    
46
/**
47
 * @author cmathew
48
 * @date 3 Feb 2015
49
 *
50
 */
51
@DataSet
52
public class TaxonNameEditorTest extends OperationTestBase {
53

    
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

    
61
    private CdmTransientEntityCacher cacher;
62
    private ICdmEntitySessionEnabled sessionOwner;
63

    
64
    private ICdmEntitySession cdmEntitySession;
65

    
66
    Language english = Language.getLanguageFromUuid(Language.uuidEnglish);
67

    
68

    
69

    
70
    @BeforeClass
71
    public static void initializePolytomousKeyTest() {
72
        //logger.setLevel(Level.INFO);
73
        CDMServer.getInstance().setKeepServerRunning(true);
74
        initializeController("default",
75
                "localhost",
76
                8080,
77
                "",
78
                NomenclaturalCode.ICNAFP,
79
                "admin",
80
                "00000");
81
    }
82

    
83
    @Before
84
    public void initializeSession() {
85
        sessionOwner = new MockSessionOwner();
86
        cdmEntitySession = cdmEntitySessionManager.newSession(sessionOwner, true);
87
        cacher = getCacher(sessionOwner);
88
    }
89

    
90
    @Test
91
    public void testAddHomotypicSynonym() throws ExecutionException {
92
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
93

    
94
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
95
        Taxon taxon = taxonNode.getTaxon();
96
        HomotypicalGroup group = taxon.getHomotypicGroup();
97
        BotanicalName newSynonymName = BotanicalName.NewInstance(null);
98
        newSynonymName.setTitleCache("New Synonym", true);
99
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
100
                undoContext, taxon, group, newSynonymName, postOperation);
101

    
102
        operation.execute(monitor, info);
103
        taxonNodeService.merge(taxonNode);
104
        Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
105
        Assert.assertEquals(taxon.getSynonyms().size(), 1);
106
        Iterator<Synonym> synonymItr = taxon.getSynonyms().iterator();
107
        Synonym synonym = synonymItr.next();
108
        Assert.assertTrue(taxon.getHomotypicGroup().getTypifiedNames().contains(synonym.getName()));
109
    }
110

    
111
    @Test
112
    public void addHeterotypicSynonym() throws ExecutionException {
113
        UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
114

    
115
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
116
        Taxon taxon = taxonNode.getTaxon();
117
        HomotypicalGroup group = taxon.getHomotypicGroup();
118
        BotanicalName newSynonymName = BotanicalName.NewInstance(null);
119
        newSynonymName.setTitleCache("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
    }
128

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

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

    
141
        operation.execute(monitor, info);
142
        taxonNodeService.merge(taxonNode);
143
        Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
144

    
145
        Set<Synonym> synonyms = taxon.getSynonyms();
146
        for(Synonym synonym : synonyms) {
147
            taxonService.deleteSynonym(synonym.getUuid(), taxon.getUuid(), null);
148
        }
149

    
150
        taxonNodeService.merge(taxonNode);
151

    
152
        newSynonymName = BotanicalName.NewInstance(null);
153
        newSynonymName.setTitleCache("Another New Synonym", true);
154
        operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
155
                undoContext, taxon, group, newSynonymName, postOperation);
156

    
157
        operation.execute(monitor, info);
158
        taxonNodeService.merge(taxonNode);
159
    }
160

    
161
    @Test
162
    public void swapSynonymWithAcceptedTaxon() throws ExecutionException {
163
        List<TaxonNode> rootEntities = new ArrayList<TaxonNode>();
164
        UUID taxonNodeUuid = UUID.fromString("d425a971-1abe-4895-9e1f-1e5c8ff1c84c");
165
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
166
        rootEntities.add(taxonNode);
167
        sessionOwner = new MockSessionOwner(rootEntities);
168
        cdmEntitySession = cdmEntitySessionManager.newSession(sessionOwner, true);
169

    
170
        UUID taxonUuid = UUID.fromString("9763e5f0-6cd4-4d96-b8a4-4420854f7727");
171
        Taxon taxon = (Taxon)taxonService.load(taxonUuid);
172
        TaxonNameBase taxonName = taxon.getName();
173

    
174
        UUID synonymUuid = UUID.fromString("1eb173bd-b174-4162-8ff5-5136d8f1e746");
175
        Synonym synonym = (Synonym)taxonService.load(synonymUuid);
176
        TaxonNameBase synonymName = synonym.getName();
177

    
178
        taxonService.swapSynonymAndAcceptedTaxon(synonym.getUuid(), taxon.getUuid());
179

    
180
        Assert.assertEquals(taxonName, synonym.getName());
181
        Assert.assertEquals(synonymName, taxon.getName());
182
    }
183

    
184
    @Test
185
    public void addTaxon() {
186
        NonViralName taxonName = NonViralName.NewInstance(null);
187
        Taxon taxon = Taxon.NewInstance(taxonName, null);
188
        taxonService.merge(taxon);
189
    }
190

    
191
}
192

    
(2-2/3)