create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / util / NumericComparator.java
1 package net.sf.openrocket.util;
2
3 import java.util.Comparator;
4
5 public class NumericComparator implements Comparator<Object> {
6         
7         public static final NumericComparator INSTANCE = new NumericComparator();
8         
9         @Override
10         public int compare(Object o1, Object o2) {
11                 double v1 = getValue(o1);
12                 double v2 = getValue(o2);
13                 
14                 if (Double.isNaN(v1) || Double.isNaN(v2)) {
15                         String s1 = o1.toString();
16                         String s2 = o2.toString();
17                         return s1.compareTo(s2);
18                 }
19                 
20                 return Double.compare(v1, v2);
21         }
22         
23         private double getValue(Object o) {
24                 if (o instanceof Number) {
25                         return ((Number) o).doubleValue();
26                 }
27                 String s = o.toString();
28                 try {
29                         return Double.parseDouble(s);
30                 } catch (NumberFormatException e) {
31                         return Double.NaN;
32                 }
33         }
34         
35 }