Revision b2128023
Added by Patrick Plitzner about 6 years ago
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/matrix/DescriptionTreeFormat.java | ||
---|---|---|
16 | 16 |
import ca.odell.glazedlists.TreeList; |
17 | 17 |
import eu.etaxonomy.cdm.model.name.Rank; |
18 | 18 |
import eu.etaxonomy.cdm.model.taxon.Taxon; |
19 |
import eu.etaxonomy.cdm.model.taxon.TaxonNaturalComparator; |
|
20 | 19 |
import eu.etaxonomy.cdm.model.taxon.TaxonNode; |
21 |
import eu.etaxonomy.cdm.model.taxon.TaxonNodeByNameComparator; |
|
22 |
import eu.etaxonomy.cdm.model.taxon.TaxonNodeByRankAndNameComparator; |
|
23 |
import eu.etaxonomy.taxeditor.preference.PreferencesUtil; |
|
24 | 20 |
|
25 | 21 |
/** |
26 | 22 |
* @author pplitzner |
... | ... | |
29 | 25 |
*/ |
30 | 26 |
public class DescriptionTreeFormat implements TreeList.Format<Object> { |
31 | 27 |
|
32 |
private Comparator<TaxonNode> comparator; |
|
33 |
private Rank minRank; |
|
34 | 28 |
private Rank maxRank; |
35 | 29 |
|
36 | 30 |
public DescriptionTreeFormat(Rank maxRank) { |
37 | 31 |
this.maxRank = maxRank; |
38 |
if (PreferencesUtil.getSortNodesNaturally()){ |
|
39 |
comparator = new TaxonNaturalComparator(); |
|
40 |
} else if (PreferencesUtil.getSortNodesStrictlyAlphabetically()){ |
|
41 |
comparator = new TaxonNodeByNameComparator(); |
|
42 |
}else { |
|
43 |
comparator = new TaxonNodeByRankAndNameComparator(); |
|
44 |
} |
|
45 | 32 |
} |
46 | 33 |
|
47 | 34 |
@Override |
48 | 35 |
public void getPath(List path, Object element) { |
49 | 36 |
if(element instanceof RowWrapper){ |
50 | 37 |
//TODO: check for multiple taxon nodes in multiple classifications |
51 |
Taxon taxon = (Taxon) ((RowWrapper) element).getAssociatedTaxa().iterator().next();
|
|
38 |
Taxon taxon = ((RowWrapper) element).getAssociatedTaxon();
|
|
52 | 39 |
Set<TaxonNode> taxonNodes = taxon.getTaxonNodes(); |
53 | 40 |
if(taxonNodes!=null){ |
54 | 41 |
TaxonNode node = taxonNodes.iterator().next(); |
... | ... | |
83 | 70 |
|
84 | 71 |
@Override |
85 | 72 |
public Comparator<Object> getComparator(int depth) { |
86 |
return new Comparator<Object>() { |
|
87 |
|
|
88 |
@Override |
|
89 |
public int compare(Object o1, Object o2) { |
|
90 |
if(o1 instanceof TaxonNode && o2 instanceof TaxonNode){ |
|
91 |
return comparator.compare((TaxonNode)o1, (TaxonNode)o2); |
|
92 |
} |
|
93 |
return o1.hashCode()-o2.hashCode(); |
|
94 |
} |
|
95 |
|
|
96 |
}; |
|
73 |
return new MatrixRowComparator(); |
|
97 | 74 |
} |
75 |
|
|
98 | 76 |
} |
Also available in: Unified diff
ref #7095 Extract row comparator to own class file