ref #6526 extract comparator and add another for TypeDesignationBase
authorPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 3 May 2018 11:51:59 +0000 (13:51 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 3 May 2018 11:52:25 +0000 (13:52 +0200)
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/name/TypeDesignationComparator.java [new file with mode: 0644]
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/name/TypeDesignationSetManager.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/name/TypeDesignationStatusComparator.java [new file with mode: 0644]

diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/name/TypeDesignationComparator.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/name/TypeDesignationComparator.java
new file mode 100644 (file)
index 0000000..2d09087
--- /dev/null
@@ -0,0 +1,41 @@
+/**
+* Copyright (C) 2018 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.api.service.name;
+
+import java.util.Comparator;
+
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
+
+/**
+ * @author pplitzner
+ * @since May 3, 2018
+ *
+ */
+public class TypeDesignationComparator implements Comparator<TypeDesignationBase> {
+
+    private TypeDesignationStatusComparator statusComparator = new TypeDesignationStatusComparator();
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public int compare(TypeDesignationBase o1, TypeDesignationBase o2) {
+        if(o1==null){
+            return 1;
+        }
+        if(o2==null){
+            return -1;
+        }
+        if(o1.getTypeStatus()==null){
+            return 1;
+        }
+        if(o2.getTypeStatus()==null){
+            return-1;
+        }
+        return statusComparator.compare(o1.getTypeStatus(), o2.getTypeStatus()) ;
+    }
+}
index 549c24fb6d803c6d989fbae5cbfc512900a19072..338d775eaf48bd893cc38d152a13c2dc4d52985e 100644 (file)
@@ -258,24 +258,7 @@ public class TypeDesignationSetManager {
            TypeDesignationWorkingSet typeDesignationWorkingSet = stringsByTypeByBaseEntity.get(baseEntityRef);
            // order the TypeDesignationStatusBase keys
             List<TypeDesignationStatusBase<?>> keyList = new LinkedList<>(typeDesignationWorkingSet.keySet());
-            Collections.sort(keyList, new Comparator<TypeDesignationStatusBase>() {
-                @SuppressWarnings("unchecked")
-                @Override
-                public int compare(TypeDesignationStatusBase o1, TypeDesignationStatusBase o2) {
-                    // fix inverted order of cdm terms by -1*
-                    if(o1 == null && o2 == null || o1 instanceof NullTypeDesignationStatus && o2 instanceof NullTypeDesignationStatus){
-                        return 0;
-                    }
-                    if(o1 == null || o1 instanceof NullTypeDesignationStatus){
-                        return -1;
-                    }
-
-                    if(o2 == null || o2 instanceof NullTypeDesignationStatus){
-                        return 1;
-                    }
-                    return -1 * o1.compareTo(o2);
-                }
-            });
+            Collections.sort(keyList, new TypeDesignationStatusComparator());
             // new LinkedHashMap for the ordered TypeDesignationStatusBase keys
             TypeDesignationWorkingSet orderedStringsByOrderedTypes = new TypeDesignationWorkingSet(
                     typeDesignationWorkingSet.getBaseEntity(),
diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/name/TypeDesignationStatusComparator.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/name/TypeDesignationStatusComparator.java
new file mode 100644 (file)
index 0000000..23d1790
--- /dev/null
@@ -0,0 +1,38 @@
+/**
+* Copyright (C) 2018 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.api.service.name;
+
+import java.util.Comparator;
+
+import eu.etaxonomy.cdm.api.service.name.TypeDesignationSetManager.NullTypeDesignationStatus;
+import eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase;
+
+/**
+ * @author pplitzner
+ * @since May 3, 2018
+ *
+ */
+public class TypeDesignationStatusComparator implements Comparator<TypeDesignationStatusBase> {
+    @SuppressWarnings("unchecked")
+    @Override
+    public int compare(TypeDesignationStatusBase o1, TypeDesignationStatusBase o2) {
+        // fix inverted order of cdm terms by -1*
+        if(o1 == null && o2 == null || o1 instanceof NullTypeDesignationStatus && o2 instanceof NullTypeDesignationStatus){
+            return 0;
+        }
+        if(o1 == null || o1 instanceof NullTypeDesignationStatus){
+            return -1;
+        }
+
+        if(o2 == null || o2 instanceof NullTypeDesignationStatus){
+            return 1;
+        }
+        return -1 * o1.compareTo(o2);
+    }
+}