Sort root entities in specimen editor #5797
authorPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 14 Jun 2016 06:33:03 +0000 (08:33 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 14 Jun 2016 09:44:03 +0000 (11:44 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateContentProvider.java

index 27b80b47a68ad4948ec1c0ad5a34a2800b121a9d..808d67cfea1733d919ef873da2948ab0e7977f82 100644 (file)
@@ -2,9 +2,11 @@ package eu.etaxonomy.taxeditor.view.derivateSearch;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Comparator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.TreeSet;
 
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.TreeNode;
@@ -20,7 +22,7 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 
 public class DerivateContentProvider implements ITreeContentProvider {
 
-    List<TreeNode> rootNodes;
+    private TreeSet<TreeNode> rootNodes;
 
        @Override
        public void dispose() {
@@ -45,7 +47,7 @@ public class DerivateContentProvider implements ITreeContentProvider {
 
        @Override
        public Object[] getElements(Object inputElement) {
-           rootNodes = new ArrayList<TreeNode>();
+           rootNodes = new TreeSet<TreeNode>(new TreeNodeComparator());
            if(inputElement instanceof Collection){
                for (Object o: (Collection)inputElement) {
                    if(o instanceof SpecimenOrObservationBase){
@@ -141,5 +143,25 @@ public class DerivateContentProvider implements ITreeContentProvider {
            }
            return derivates;
        }
+       
+       private class TreeNodeComparator implements Comparator<TreeNode>{
+
+               @Override
+               public int compare(TreeNode o1, TreeNode o2) {
+                       if(o1!=null && o2==null){
+                               return -1;
+                       }
+                       else if(o1==null && o2!=null){
+                               return 1;
+                       }
+                       else if(o1!=null && o2!=null){
+                               SpecimenOrObservationBase<?> specimenOrObservation1 = (SpecimenOrObservationBase<?>) o1.getValue();
+                               SpecimenOrObservationBase<?> specimenOrObservation2 = (SpecimenOrObservationBase<?>) o2.getValue();
+                               return specimenOrObservation1.getTitleCache().compareTo(specimenOrObservation2.getTitleCache());
+                       }
+                       return 0;
+               }
+               
+       }
 
 }