Project

General

Profile

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

    
25
import eu.etaxonomy.cdm.api.service.IClassificationService;
26
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
27
import eu.etaxonomy.cdm.api.service.ITaxonService;
28
import eu.etaxonomy.cdm.model.common.Language;
29
import eu.etaxonomy.cdm.model.name.BotanicalName;
30
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
31
import eu.etaxonomy.cdm.model.name.NonViralName;
32
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
33
import eu.etaxonomy.cdm.model.taxon.Synonym;
34
import eu.etaxonomy.cdm.model.taxon.Taxon;
35
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
36
import eu.etaxonomy.taxeditor.editor.name.operation.CreateSynonymInExistingHomotypicalGroupOperation;
37
import eu.etaxonomy.taxeditor.operations.BaseOperationTest;
38
import eu.etaxonomy.taxeditor.session.MockSessionOwner;
39

    
40
/**
41
 * @author cmathew
42
 * @date 3 Feb 2015
43
 *
44
 */
45
@DataSet
46
public class TaxonNameEditorTest extends BaseOperationTest {
47

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

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

    
54

    
55

    
56

    
57
    Language english = Language.getLanguageFromUuid(Language.uuidEnglish);
58

    
59

    
60

    
61
    @BeforeClass
62
    public static void initializePolytomousKeyTest() {
63
    }
64

    
65

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

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

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

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

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

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

    
102

    
103
    }
104

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

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

    
117
        operation.execute(monitor, info);
118
        taxonNodeService.merge(taxonNode);
119
        Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
120

    
121
        Set<Synonym> synonyms = taxon.getSynonyms();
122
        for(Synonym synonym : synonyms) {
123
            taxonService.deleteSynonym(synonym.getUuid(), taxon.getUuid(), null);
124
        }
125

    
126
        taxonNodeService.merge(taxonNode);
127

    
128
        newSynonymName = BotanicalName.NewInstance(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 swapSynonymWithAcceptedTaxon() throws ExecutionException {
139
        List<TaxonNode> rootEntities = new ArrayList<TaxonNode>();
140
        UUID taxonNodeUuid = UUID.fromString("d425a971-1abe-4895-9e1f-1e5c8ff1c84c");
141
        TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
142
        rootEntities.add(taxonNode);
143
        sessionOwner = new MockSessionOwner(rootEntities);
144
        cdmEntitySession = cdmEntitySessionManager.newSession(sessionOwner, true);
145

    
146
        UUID taxonUuid = UUID.fromString("9763e5f0-6cd4-4d96-b8a4-4420854f7727");
147
        Taxon taxon = (Taxon)taxonService.load(taxonUuid);
148
        TaxonNameBase taxonName = taxon.getName();
149

    
150
        UUID synonymUuid = UUID.fromString("1eb173bd-b174-4162-8ff5-5136d8f1e746");
151
        Synonym synonym = (Synonym)taxonService.load(synonymUuid);
152
        TaxonNameBase synonymName = synonym.getName();
153

    
154
        taxonService.swapSynonymAndAcceptedTaxon(synonym.getUuid(), taxon.getUuid());
155

    
156
        Assert.assertEquals(taxonName, synonym.getName());
157
        Assert.assertEquals(synonymName, taxon.getName());
158
    }
159

    
160
    @Test
161
    public void addTaxon() {
162
        NonViralName taxonName = NonViralName.NewInstance(null);
163
        Taxon taxon = Taxon.NewInstance(taxonName, null);
164
        taxonService.merge(taxon);
165
    }
166

    
167
}
168

    
(2-2/3)