01: /*
02: * Created on 08.12.2004
03: *
04: * SVN header information:
05: * $Author: javamap $
06: * $Rev: 856 $
07: * $Date: 2007-06-18 21:15:27 -0700 (Mon, 18 Jun 2007) $
08: * $Id: ObjectComparator.java 856 2007-06-19 04:15:27Z javamap $
09: */
10: package de.fho.jump.pirol.utilities.comparisonAndSorting;
11:
12: import java.math.BigDecimal;
13: import java.math.BigInteger;
14:
15: import de.fho.jump.pirol.utilities.debugOutput.DebugUserIds;
16: import de.fho.jump.pirol.utilities.debugOutput.PersonalLogger;
17:
18: /**
19: * @author Ole Rahn
20: * <br>
21: * <br>FH Osnabrück - University of Applied Sciences Osnabrück,
22: * <br>Project: PIROL (2005),
23: * <br>Subproject: Daten- und Wissensmanagement
24: *
25: * @version $Rev: 856 $
26: */
27: public class ObjectComparator {
28: public static PersonalLogger logger = new PersonalLogger(
29: DebugUserIds.ALL);
30:
31: public static int compare(Object o1, Object o2) {
32:
33: Double value1, value2;
34:
35: value1 = new Double(ObjectComparator.getDoubleValue(o1));
36: value2 = new Double(ObjectComparator.getDoubleValue(o2));
37:
38: if (value1.doubleValue() == Double.NaN
39: || value2.doubleValue() == Double.NaN)
40: logger.printError("got NAN");
41:
42: return value1.compareTo(value2);
43: }
44:
45: /**
46: * Method to generate a <code>double</code> value out of different number objects.
47: *@param o
48: *@return a double value representing to given object or <code>Double.NAN</code> if it can't be parsed
49: */
50: public static double getDoubleValue(Object o) {
51: double value = Double.NaN;
52:
53: if (o == null) {
54: logger.printMinorError("got NULL value");
55: } else {
56: if (Integer.class.isInstance(o)) {
57: value = ((Integer) o).doubleValue();
58: } else if (Double.class.isInstance(o)) {
59: value = ((Double) o).doubleValue();
60: } else if (Float.class.isInstance(o)) {
61: value = ((Float) o).doubleValue();
62: } else if (BigDecimal.class.isInstance(o)) {
63: value = ((BigDecimal) o).doubleValue();
64: } else if (BigInteger.class.isInstance(o)) {
65: value = ((BigInteger) o).doubleValue();
66: } else if (Long.class.isInstance(o)) {
67: value = ((Long) o).doubleValue();
68: } else if (Short.class.isInstance(o)) {
69: value = ((Short) o).doubleValue();
70: } else if (Byte.class.isInstance(o)) {
71: value = ((Byte) o).doubleValue();
72: } else if (String.class.isInstance(o)) {
73: value = Double.parseDouble(o.toString());
74: } else {
75: logger.printError(" can't get double value... - "
76: + o.getClass().getName());
77: }
78: }
79: return value;
80: }
81: }
|