Project

General

Profile

« Previous | Next » 

Revision b2128023

Added by Patrick Plitzner about 6 years ago

ref #7095 Extract row comparator to own class file

View differences:

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