/* * Created on 08.12.2004 * * SVN header information: * $Author: LBST-PF-3\orahn $ * $Rev: 2509 $ * $Date: 2006-10-06 12:01:50 +0200 (Fr, 06 Okt 2006) $ * $Id: ObjectComparator.java 2509 2006-10-06 10:01:50Z LBST-PF-3\orahn $ */ package org.openjump.core.apitools.comparisonandsorting; import java.math.BigDecimal; import java.math.BigInteger; /** * @author Ole Rahn * <br> * <br>FH Osnabrück - University of Applied Sciences Osnabrück, * <br>Project: PIROL (2005), * <br>Subproject: Daten- und Wissensmanagement * * @version $Rev: 2509 $ * modified: [sstein]: 16.Feb.2009 changed logger-entries to comments */ public class ObjectComparator { //public static PersonalLogger logger = new PersonalLogger(DebugUserIds.OLE); public static int compare( Object o1, Object o2 ){ Double value1, value2; value1 = new Double(ObjectComparator.getDoubleValue(o1)); value2 = new Double(ObjectComparator.getDoubleValue(o2)); if (value1.doubleValue() ==Double.NaN || value2.doubleValue()==Double.NaN){ //logger.printError("got NAN"); } return value1.compareTo(value2); } /** * Method to generate a <code>double</code> value out of different number objects. *@param o *@return a double value representing to given object or <code>Double.NAN</code> if it can't be parsed */ public static double getDoubleValue(Object o){ double value = Double.NaN; if (o==null){ //logger.printMinorError("got NULL value"); } else { if (Integer.class.isInstance(o)){ value = ((Integer)o).doubleValue(); } else if (Double.class.isInstance(o)){ value = ((Double)o).doubleValue(); } else if (Float.class.isInstance(o)){ value = ((Float)o).doubleValue(); } else if (BigDecimal.class.isInstance(o)){ value = ((BigDecimal)o).doubleValue(); } else if (BigInteger.class.isInstance(o)){ value = ((BigInteger)o).doubleValue(); } else if (Long.class.isInstance(o)){ value = ((Long)o).doubleValue(); } else if (Short.class.isInstance(o)){ value = ((Short)o).doubleValue(); } else if (Byte.class.isInstance(o)){ value = ((Byte)o).doubleValue(); } else if (String.class.isInstance(o)){ value = Double.parseDouble(o.toString()); } else { //logger.printError(" can't get double value... - " + o.getClass().getName()); } } return value; } }