sort taxon nodes in taxon filter of DDS editor
authorKatja Luther <k.luther@bgbm.org>
Thu, 7 Oct 2021 07:47:00 +0000 (09:47 +0200)
committerKatja Luther <k.luther@bgbm.org>
Thu, 7 Oct 2021 07:47:00 +0000 (09:47 +0200)
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/TaxonNavigatorE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/TaxonTreeNodeContentProvider.java

index e4544a68154aa9556c8f54f81018f76d6fdfdfcb..1eff1eefaf384308c4c87197204481f57918715d 100644 (file)
@@ -206,22 +206,8 @@ public class TaxonNavigatorE4 implements
     }
 
        protected IAdaptable getInitialInput() {
-               Comparator<TaxonNodeDto> comparator;
-               NavigatorOrderEnum orderValue = NavigatorOrderEnum.RankAndNameOrder;
-               try{
-                   orderValue = PreferencesUtil.getSortNodes();
-               }catch(IllegalArgumentException e){
-
-               }
-
-               if (orderValue.equals(NavigatorOrderEnum.NaturalOrder)){
-                       comparator = new TaxonNodeDtoNaturalComparator();
-               } else if (orderValue.equals(NavigatorOrderEnum.AlphabeticalOrder)){
-                       comparator = new TaxonNodeDtoByNameComparator();
-               }else {
-                       comparator = new TaxonNodeDtoByRankAndNameComparator();
-               }
-
+               Comparator<TaxonNodeDto> comparator = PreferencesUtil.getNodeComparator();
+               
                TaxonNodeNavigatorComparator viewerComparator = new TaxonNodeNavigatorComparator(comparator);
                viewer.setComparator(viewerComparator);
                viewer.setComparer(new IElementComparer() {
index 23714aba769c08d9c87c1def366a86b48dc21210..2a2412bc40384137376eb6412cff64a319970ecb 100644 (file)
@@ -18,6 +18,7 @@ import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -74,6 +75,10 @@ import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.term.VocabularyEnum;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByNameComparator;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByRankAndNameComparator;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoNaturalComparator;
 import eu.etaxonomy.cdm.strategy.match.DefaultMatchStrategy;
 import eu.etaxonomy.cdm.strategy.match.FieldMatcher;
 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
@@ -1184,7 +1189,7 @@ public class PreferencesUtil implements IPreferenceKeys {
     public static NavigatorOrderEnum getSortNodes() {
         return NavigatorOrderEnum.valueOf(getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()));
     }
-
+    
     public static boolean isNodesSortedNaturally() {
         NavigatorOrderEnum value = NavigatorOrderEnum.valueOf(getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()));
         return value.equals(NavigatorOrderEnum.NaturalOrder);
@@ -1199,6 +1204,25 @@ public class PreferencesUtil implements IPreferenceKeys {
         NavigatorOrderEnum value = NavigatorOrderEnum.valueOf(getStringValue(PreferencePredicate.TaxonNodeOrder.getKey()));
         return value.equals(NavigatorOrderEnum.RankAndNameOrder);
     }
+    
+    public static Comparator<TaxonNodeDto> getNodeComparator() {
+               Comparator<TaxonNodeDto> comparator;
+        NavigatorOrderEnum orderValue = NavigatorOrderEnum.RankAndNameOrder;
+               try{
+                   orderValue = PreferencesUtil.getSortNodes();
+               }catch(IllegalArgumentException e){
+
+               }
+
+               if (orderValue.equals(NavigatorOrderEnum.NaturalOrder)){
+                       comparator = new TaxonNodeDtoNaturalComparator();
+               } else if (orderValue.equals(NavigatorOrderEnum.AlphabeticalOrder)){
+                       comparator = new TaxonNodeDtoByNameComparator();
+               }else {
+                       comparator = new TaxonNodeDtoByRankAndNameComparator();
+               }
+               return comparator;
+       }
 
     public static boolean isStoreNavigatorState() {
         return getBooleanValue(RESTORE_NAVIGATOR_STATE);
index 36669a00dbfe07bea6c0b6c215e9eecdd507a16c..d919578322ff410fb3d26f1a32d05c2119e5108c 100644 (file)
@@ -9,12 +9,20 @@
 package eu.etaxonomy.taxeditor.util;
 
 import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
 
 import org.eclipse.jface.viewers.ITreeContentProvider;
 
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByNameComparator;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoByRankAndNameComparator;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoNaturalComparator;
+import eu.etaxonomy.taxeditor.preference.NavigatorOrderEnum;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -53,16 +61,21 @@ public class TaxonTreeNodeContentProvider implements ITreeContentProvider {
 //            HHH_9751_Util.removeAllNull(childrenSet);
 //            children = childrenSet.toArray();
 //        }
-
+        List<TaxonNodeDto> childrenList = null;
+        
         if(parentElement instanceof TaxonNode){
-            children = taxonNodeService.listChildNodesAsTaxonNodeDto((TaxonNode)parentElement).toArray();
+               childrenList = taxonNodeService.listChildNodesAsTaxonNodeDto((TaxonNode)parentElement);
         }else {
-            children = taxonNodeService.listChildNodesAsTaxonNodeDto((TaxonNodeDto)parentElement).toArray();
+               childrenList = taxonNodeService.listChildNodesAsTaxonNodeDto((TaxonNodeDto)parentElement);
         }
-
+        Comparator<TaxonNodeDto> comparator = PreferencesUtil.getNodeComparator();
+        Collections.sort(childrenList, comparator);
+        children = childrenList.toArray();
         return children != null ? children : NO_CHILDREN;
     }
 
+       
+
     @Override
     public Object getParent(Object element) {
         if (taxonNodeService == null){