From 97cae9c275268172954f7f2344d35b19ac3a3455 Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Wed, 13 Apr 2016 17:40:06 +0200 Subject: [PATCH] Enhance source comparator #3185 --- .../section/description/SourceComparator.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/SourceComparator.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/SourceComparator.java index 5353ec3dc..02c78468f 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/SourceComparator.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/SourceComparator.java @@ -26,26 +26,27 @@ public class SourceComparator implements Comparator { if (id1 == 0 && id2!=0) { return -1; } - if (id1 != 0 && id2==0) { + else if (id2==0) { return 1; } // sort by type (Primary taxonomic > Primary Media > others // alphabetically by reference title cache) if (type1 != null && type1.equals(OriginalSourceType.PrimaryTaxonomicSource) - && type2 != null && !type2.equals(OriginalSourceType.PrimaryTaxonomicSource)) { + && (type2 == null || !type2.equals(OriginalSourceType.PrimaryTaxonomicSource))) { return -1; } - if (type1 != null && !type1.equals(OriginalSourceType.PrimaryTaxonomicSource) + 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.PrimaryTaxonomicSource)) { + + 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.PrimaryTaxonomicSource)) { + && type1!=null && !type1.equals(OriginalSourceType.PrimaryMediaSource)) { return 1; } @@ -53,6 +54,13 @@ public class SourceComparator implements Comparator { if(citation1!=null && citation2!=null){ return citation1.getTitleCache().compareTo(citation2.getTitleCache()); } - return o2.getCreated().compareTo(o1.getCreated()); + + if(o2.getCreated()!=null && o1.getCreated()!=null){ + return o2.getCreated().compareTo(o1.getCreated()); + } + + //default fallback + return o1.getId() - o2.getId(); + } } \ No newline at end of file -- 2.34.1