ref #4232 refactoring for comparator
authorPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 9 Feb 2017 13:33:37 +0000 (14:33 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 9 Feb 2017 13:33:49 +0000 (14:33 +0100)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/SourceComparator.java

index 2f3315053703c8c6e56cf4f8b97a394ec4d319de..d40e410844f34f22e4c60783c1630b3baff9c8ff 100644 (file)
@@ -22,56 +22,44 @@ public class SourceComparator implements Comparator<OriginalSourceBase> {
         Reference citation1 = o1.getCitation();
         Reference citation2 = o2.getCitation();
 
+        int result = 0;
+
         // the newly created should always be on top
-        if (id1 == 0 && id2!=0) {
-            return -1;
-        }
-        else if (id2==0) {
-            if (id1 == 0){
-                return 0;
-            }else{
-                return 1;
+        if (id1 == 0){
+            if(id2!=0) {
+                result = -1;
             }
+            else{
+                result = 0;
+            }
+        } else if(id2==0){
+            result = 1;
         }
 
         // sort by type (Primary taxonomic > Primary Media > others
         // alphabetically by reference title cache)
-        int result = 0;
-
-        if (type1 == null){
-            result = 1;
+        else if (type1 == null){
+            if(type2==null){
+                result = 0;
+            }
+            else{
+                result = 1;
+            }
         } else if (type2 == null){
             result = -1;
-        } else if (type1.equals(type2)){
+        } else if(type1.equals(type2)){
             result = 0;
-        } else if (type1.equals(OriginalSourceType.PrimaryTaxonomicSource) && !type2.equals(OriginalSourceType.PrimaryTaxonomicSource)){
+        } else if (type1.equals(OriginalSourceType.PrimaryTaxonomicSource)){
             result = -1;
-        } else if (type2.equals(OriginalSourceType.PrimaryTaxonomicSource) && !type1.equals(OriginalSourceType.PrimaryTaxonomicSource)){
+        } else if (type2.equals(OriginalSourceType.PrimaryTaxonomicSource)){
             result = 1;
-        }else if (type1.equals(OriginalSourceType.PrimaryMediaSource) && !type2.equals(OriginalSourceType.PrimaryMediaSource)){
+        } else if (type1.equals(OriginalSourceType.PrimaryMediaSource)){
             result = -1;
-        } else if (type2.equals(OriginalSourceType.PrimaryMediaSource) && !type1.equals(OriginalSourceType.PrimaryMediaSource)){
+        } else if (type2.equals(OriginalSourceType.PrimaryMediaSource)){
             result = 1;
         }
-//        if (type1 != null && type1.equals(OriginalSourceType.PrimaryTaxonomicSource)
-//                && (type2 == null || !type2.equals(OriginalSourceType.PrimaryTaxonomicSource))) {
-//            return -1;
-//        }
-//        if ((type1 == null || !type1.equals(OriginalSourceType.PrimaryTaxonomicSource))
-//                && type2 != null && type2.equals(OriginalSourceType.PrimaryTaxonomicSource)) {
-//            return 1;
-//        }
-//
-//        if ((type1 == null || type1.equals(OriginalSourceType.PrimaryMediaSource))
-//                && (type2==null || !type2.equals(OriginalSourceType.PrimaryMediaSource))) {
-//            return -1;
-//        }
-//        if (type2 != null && type2.equals(OriginalSourceType.PrimaryMediaSource)
-//                && type1!=null && !type1.equals(OriginalSourceType.PrimaryMediaSource)) {
-//            return 1;
-//        }
 
-        //sort by citation title cache
+        //sort by citation title cache if types are equal
         if (result == 0){
             if(citation1!=null && citation2!=null){
                 result = citation1.getTitleCache().compareTo(citation2.getTitleCache());
@@ -84,9 +72,7 @@ public class SourceComparator implements Comparator<OriginalSourceBase> {
                 //default fallback
                 return o1.getId() - o2.getId();
             }
-
         }
-
         return result;