Revision 1ed16f10
Added by Andreas Müller over 3 years ago
cdmlib-model/src/main/java/eu/etaxonomy/cdm/compare/taxon/TaxonNodeByRankAndNameComparator.java | ||
---|---|---|
64 | 64 |
//first compare ranks, if ranks are equal (or both null) compare names or taxon title cache if names are null |
65 | 65 |
int rankOrder = OrderIndexComparator.instance().compare(rankTax1, rankTax2); |
66 | 66 |
|
67 |
if (rankOrder == 0) { |
|
68 |
List<TaggedText> taggedText1 = null; |
|
69 |
List<TaggedText> taggedText2 = null; |
|
70 |
if (node1.getTaxon() != null ){ |
|
71 |
taggedText1 = node1.getTaxon().getName() != null? node1.getTaxon().getName().getTaggedName() : node1.getTaxon().getTaggedTitle(); |
|
72 |
} |
|
73 |
if (node2.getTaxon() != null ){ |
|
74 |
taggedText2 = node2.getTaxon().getName() != null? node2.getTaxon().getName().getTaggedName() : node2.getTaxon().getTaggedTitle(); |
|
75 |
} |
|
67 |
if (rankOrder != 0){ |
|
68 |
return rankOrder; |
|
69 |
}else { |
|
70 |
List<TaggedText> taggedText1 = getTaggedText(node1); |
|
71 |
List<TaggedText> taggedText2 = getTaggedText(node2);; |
|
72 |
|
|
76 | 73 |
if (taggedText1 != null && taggedText2 != null){ |
77 | 74 |
//same rank, order by name |
78 | 75 |
String sortableName1 = ""; |
... | ... | |
98 | 95 |
//this is maybe not 100% correct, we need to compare name cases, but it is a very rare case |
99 | 96 |
return node1.getUuid().compareTo(node2.getUuid()); |
100 | 97 |
} |
98 |
} |
|
99 |
} |
|
100 |
|
|
101 |
private List<TaggedText> getTaggedText(TaxonNode node) { |
|
102 |
if (node == null || node.getTaxon() == null){ |
|
103 |
return null; |
|
101 | 104 |
}else{ |
102 |
//rankTax2.isHigher(rankTax1) |
|
103 |
return rankOrder; |
|
105 |
return node.getNullSafeName() != null? |
|
106 |
node.getNullSafeName().getTaggedName() : |
|
107 |
node.getTaxon().getTaggedTitle(); |
|
104 | 108 |
} |
105 | 109 |
} |
106 | 110 |
|
Also available in: Unified diff
cleanup