fixing ticket #1798
authorf.revilla <f.revilla@localhost>
Wed, 20 Oct 2010 14:06:14 +0000 (14:06 +0000)
committerf.revilla <f.revilla@localhost>
Wed, 20 Oct 2010 14:06:14 +0000 (14:06 +0000)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonComparator.java

index 0c2a30955c251a8b8089dab30ff31fc08838ad79..91d592be450686e4f0716ffbbc1842e281723cd0 100644 (file)
@@ -133,17 +133,18 @@ public class TaxonComparator implements Comparator<TaxonBase>, Serializable {
                                return -1;\r
                        }\r
                }\r
+\r
+               Integer intDate1 = getIntegerDate(taxonBase1);\r
+               Integer intDate2 = getIntegerDate(taxonBase2);\r
                \r
-               String date1 = getDate(taxonBase1);;\r
-               String date2 = getDate(taxonBase2);\r
-               if (date1 == null && date2 == null){\r
+               if (intDate1 == null && intDate2 == null){\r
                        result = 0;\r
-               }else if (date1 == null){\r
+               }else if (intDate1 == null){\r
                        return 1;\r
-               }else if (date2 == null){\r
+               }else if (intDate2 == null){\r
                        return -1;\r
                }else{\r
-                               result = date1.compareTo(date2);\r
+                       result = intDate1.compareTo(intDate2);\r
                }\r
 \r
                if (result == 0){\r
@@ -184,8 +185,43 @@ public class TaxonComparator implements Comparator<TaxonBase>, Serializable {
        }\r
        \r
        \r
+       private Integer getIntegerDate(TaxonBase taxonBase){\r
+               Integer result;\r
+               \r
+               if (taxonBase == null){\r
+                       result = null;\r
+               }else{\r
+                       TaxonNameBase name = taxonBase.getName();\r
+                       if (name == null){\r
+                               result = null;\r
+                       }else{\r
+                               if (name instanceof ZoologicalName){\r
+                                       \r
+                                       result = (((ZoologicalName)name).getPublicationYear());\r
+                               }else{\r
+                                       ReferenceBase ref = (ReferenceBase) name.getNomenclaturalReference();\r
+                                       if (ref == null){\r
+                                               result = null;\r
+                                       }else{\r
+                                               if (ref.getDatePublished() == null){\r
+                                                       if (ref.getInReference() == null){\r
+                                                               result = null;                                                          \r
+                                                       }else{\r
+                                                               result = ref.getInReference().getDatePublished().getStartYear();\r
+                                                       }                                                       \r
+                                               }else{\r
+                                                       result = ref.getDatePublished().getStartYear();\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }       \r
+               }\r
+               \r
+               return result;\r
+       }\r
        \r
        @SuppressWarnings("unchecked")\r
+       @Deprecated\r
        private String getDate(TaxonBase taxonBase){\r
                String result = null;\r
                if (taxonBase == null){\r