Project

General

Profile

Download (9.86 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2011 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.cdm.api.service;
10

    
11
import java.util.ArrayList;
12
import java.util.Collections;
13

    
14
import org.apache.log4j.Logger;
15
import org.junit.Assert;
16
import org.junit.Ignore;
17
import org.junit.Test;
18

    
19
import eu.etaxonomy.cdm.compare.taxon.TaxonNodeNaturalComparator;
20
import eu.etaxonomy.cdm.compare.taxon.TaxonNodeByNameComparator;
21
import eu.etaxonomy.cdm.model.name.IBotanicalName;
22
import eu.etaxonomy.cdm.model.name.Rank;
23
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
24
import eu.etaxonomy.cdm.model.reference.Reference;
25
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
26
import eu.etaxonomy.cdm.model.taxon.Classification;
27
import eu.etaxonomy.cdm.model.taxon.Taxon;
28
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
29
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
30
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByNameComparator;
31

    
32
/**
33
 * @author a.kohlbecker
34
 * @since 18.07.2011
35
 */
36
public class TaxonNodeDtoByNameComparatorTest {
37

    
38
    private static final Logger logger = Logger.getLogger(TaxonNodeDtoByNameComparatorTest.class);
39

    
40
    @Test
41
    @Ignore
42
    public void testCompare() {
43
        Classification classification = Classification.NewInstance("Greuther, 1993");
44

    
45
        Reference sec = ReferenceFactory.newBook();
46

    
47
        IBotanicalName botname_1 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
48
        String nameCache_1 = "Epilobium \u00D7aschersonianum Hausskn.";
49
        botname_1.setNameCache(nameCache_1, true);
50
        Taxon taxon_1 = Taxon.NewInstance(botname_1, sec);
51

    
52
        IBotanicalName botname_2 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
53
        String nameCache_2 = "\u00D7Epilobium \u00D7angustifolium";
54
        botname_2.setNameCache(nameCache_2, true);
55
        Taxon taxon_2 = Taxon.NewInstance(botname_2, sec);
56

    
57
        IBotanicalName botname_3 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
58
        String nameCache_3 = "Epilobium lamyi";
59
        botname_3.setNameCache(nameCache_3, true);
60
        Taxon taxon_3 = Taxon.NewInstance(botname_3, sec);
61

    
62
        IBotanicalName botname_4 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
63
        String nameCache_4 = "Epilobium tournefortii";
64
        botname_4.setNameCache(nameCache_4, true);
65
        Taxon taxon_4 = Taxon.NewInstance(botname_4, sec);
66

    
67
        classification.addChildTaxon(taxon_1, sec, null);
68
        classification.addChildTaxon(taxon_2, sec, null);
69
        classification.addChildTaxon(taxon_3, sec, null);
70
        classification.addChildTaxon(taxon_4, sec, null);
71

    
72
        classification.getChildNodes();
73
        ArrayList<TaxonNode> taxonNodes = new ArrayList<TaxonNode>();
74
        taxonNodes.addAll(classification.getChildNodes());
75

    
76
        // order using default settings
77
        TaxonNodeByNameComparator taxonNodeByNameComparator = new TaxonNodeByNameComparator();
78

    
79
       // Collections.sort(taxonNodes, taxonNodeByNameComparator);
80
        int i = 0;
81
        logger.debug("order using default settings");
82
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
83
        Assert.assertEquals(nameCache_2, taxonNodes.get(i++).getTaxon().getName().getNameCache());
84
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
85
        Assert.assertEquals(nameCache_1, taxonNodes.get(i++).getTaxon().getName().getNameCache());
86
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
87
        Assert.assertEquals(nameCache_3, taxonNodes.get(i++).getTaxon().getName().getNameCache());
88
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
89
        Assert.assertEquals(nameCache_4, taxonNodes.get(i++).getTaxon().getName().getNameCache());
90

    
91
        // order without ignoring hybrid signs
92
        taxonNodeByNameComparator.setIgnoreHybridSign(false);
93

    
94
        Collections.sort(taxonNodes, taxonNodeByNameComparator);
95

    
96
        i = 0;
97
        logger.debug("order without ignoring hybrid signs");
98
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
99
        Assert.assertEquals(nameCache_3, taxonNodes.get(i++).getTaxon().getName().getNameCache());
100
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
101
        Assert.assertEquals(nameCache_4, taxonNodes.get(i++).getTaxon().getName().getNameCache());
102
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
103
        Assert.assertEquals(nameCache_1, taxonNodes.get(i++).getTaxon().getName().getNameCache());
104
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
105
        Assert.assertEquals(nameCache_2, taxonNodes.get(i++).getTaxon().getName().getNameCache());
106

    
107
    }
108

    
109
    @Test
110
    public void testNullSave() {
111
        Classification classification = Classification.NewInstance("Greuther, 1993");
112

    
113
        Reference sec = ReferenceFactory.newBook();
114

    
115
        IBotanicalName botname_1 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
116
        String nameCache_1 = "Epilobium \u00D7aschersonianum Hausskn.";
117
        botname_1.setNameCache(nameCache_1, true);
118
        Taxon taxon_1 = Taxon.NewInstance(botname_1, sec);
119

    
120
        IBotanicalName botname_2 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
121
        String nameCache_2 = "\u00D7Epilobium \u00D7angustifolium";
122
        botname_2.setNameCache(nameCache_2, true);
123
        Taxon taxon_2 = Taxon.NewInstance(botname_2, sec);
124

    
125
        TaxonNodeDto node1 = new TaxonNodeDto(classification.addChildTaxon(taxon_1, sec, null));
126
        TaxonNodeDto node2 = new TaxonNodeDto(classification.addChildTaxon(taxon_2, sec, null));
127

    
128
        TaxonNodeDtoByNameComparator taxonNodeByNameComparator = new TaxonNodeDtoByNameComparator();
129

    
130
        Assert.assertEquals(0, taxonNodeByNameComparator.compare(null, null));
131
        Assert.assertEquals(-1, taxonNodeByNameComparator.compare(node1, null));
132
        Assert.assertEquals(1, taxonNodeByNameComparator.compare(null, node1));
133

    
134
    }
135

    
136
    @Test
137
    @Ignore
138
    public void testCompareNaturalOrder() {
139
        Classification classification = Classification.NewInstance("Greuther, 1993");
140

    
141
        Reference sec = ReferenceFactory.newBook();
142

    
143
        IBotanicalName botname_1 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
144
        String nameCache_1 = "Epilobium \u00D7aschersonianum Hausskn.";
145
        botname_1.setNameCache(nameCache_1, true);
146
        Taxon taxon_1 = Taxon.NewInstance(botname_1, sec);
147

    
148
        IBotanicalName botname_2 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
149
        String nameCache_2 = "\u00D7Epilobium \u00D7angustifolium";
150
        botname_2.setNameCache(nameCache_2, true);
151
        Taxon taxon_2 = Taxon.NewInstance(botname_2, sec);
152

    
153
        IBotanicalName botname_3 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
154
        String nameCache_3 = "Epilobium lamyi";
155
        botname_3.setNameCache(nameCache_3, true);
156
        Taxon taxon_3 = Taxon.NewInstance(botname_3, sec);
157

    
158
        IBotanicalName botname_4 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
159
        String nameCache_4 = "Epilobium tournefortii";
160
        botname_4.setNameCache(nameCache_4, true);
161
        Taxon taxon_4 = Taxon.NewInstance(botname_4, sec);
162

    
163
        IBotanicalName botname_5 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
164
        String nameCache_5= "Epilobium hirsutum L.";
165
        botname_5.setNameCache(nameCache_5, true);
166
        Taxon taxon_5 = Taxon.NewInstance(botname_5, sec);
167

    
168
        TaxonNode node1 = classification.addChildTaxon(taxon_1, sec, null);
169
        node1.addChildTaxon(taxon_2, sec, null);
170
        TaxonNode node2 = classification.addChildTaxon(taxon_3, sec, null);
171
        node2.addChildTaxon(taxon_4, sec, null);
172

    
173
        classification.getChildNodes();
174

    
175
        ArrayList<TaxonNode> taxonNodes = new ArrayList<TaxonNode>();
176
        taxonNodes.addAll(classification.getChildNodes());
177

    
178
        // order using default settings
179
        TaxonNodeNaturalComparator taxonNodeComparator = new TaxonNodeNaturalComparator();
180
       // Collections.sort(taxonNodes, taxonNodeComparator);
181

    
182
        int i = 0;
183
        logger.debug("order using default settings");
184
        logger.debug(taxonNodes.get(i).getTaxon().getName().getNameCache());
185
        Assert.assertEquals(nameCache_1, taxonNodes.get(i).getTaxon().getName().getNameCache());
186
        logger.debug(taxonNodes.get(i++).getTaxon().getName().getNameCache());
187
        Assert.assertEquals(nameCache_2, taxonNodes.get(i).getTaxon().getName().getNameCache());
188
        logger.debug(taxonNodes.get(i++).getTaxon().getName().getNameCache());
189
        Assert.assertEquals(nameCache_3, taxonNodes.get(i).getTaxon().getName().getNameCache());
190
        logger.debug(taxonNodes.get(i++).getTaxon().getName().getNameCache());
191
        Assert.assertEquals(nameCache_4, taxonNodes.get(i).getTaxon().getName().getNameCache());
192

    
193
        TaxonNode result = classification.addChildTaxon(taxon_5, 2, null, null);
194
        Assert.assertTrue(result.getSortIndex() == 2);
195

    
196
        i = 0;
197

    
198
        logger.debug(classification.getChildNodes().get(i).getTaxon().getName().getNameCache());
199
        Assert.assertEquals(nameCache_1, classification.getChildNodes().get(i).getTaxon().getName().getNameCache());
200
        logger.debug(classification.getChildNodes().get(i++).getTaxon().getName().getNameCache());
201
        Assert.assertEquals(nameCache_2, classification.getChildNodes().get(i).getTaxon().getName().getNameCache());
202
        logger.debug(classification.getChildNodes().get(i++).getTaxon().getName().getNameCache());
203
        Assert.assertEquals(nameCache_5, classification.getChildNodes().get(i).getTaxon().getName().getNameCache());
204
        logger.debug(classification.getChildNodes().get(i++).getTaxon().getName().getNameCache());
205
        Assert.assertEquals(nameCache_3, classification.getChildNodes().get(i).getTaxon().getName().getNameCache());
206

    
207
    }
208
}
(28-28/38)