package eu.leads.processor.utils.math;
import java.util.Date;
/**
* Created with IntelliJ IDEA.
* User: vagvaz
* Date: 11/7/13
* Time: 4:42 PM
* To change this template use File | Settings | File Templates.
*/
//Mathematical Utilities
public class MathUtils {
public static Object add(Object o1, Object o2, String type) {
if (type.equalsIgnoreCase("double") || type.equals("float")) {
return add((Double) o1, (Double) o2);
} else if (type.equalsIgnoreCase("int") || type.equalsIgnoreCase("integer") || type.equalsIgnoreCase("long")) {
return add((Long) o1, (Long) o2);
} else if (type.equalsIgnoreCase("string")) {
return ((String) o1).concat((String) o2);
} else if (type.equalsIgnoreCase("date")) {
return null;
}
return null;
}
private static Long add(Long o1, Long o2) {
return o1 + o2;
}
private static Double add(Double o1, Double o2) {
return o1 + o2;
}
public static Object divide(Object o1, Object o2, String type) {
if (type.equalsIgnoreCase("double") || type.equalsIgnoreCase("float")) {
return add((Double) o1, (Double) o2);
} else if (type.equalsIgnoreCase("int") || type.equalsIgnoreCase("integer") || type.equalsIgnoreCase("long")) {
return add((Long) o1, (Long) o2);
} else if (type.equalsIgnoreCase("string")) {
return "";
} else if (type.equalsIgnoreCase("date")) {
return null;
}
return null;
}
private static Long divide(Long o1, Long o2) {
return o1 / o2;
}
private static Double divide(Double o1, Double o2) {
return o1 / o2;
}
public static Object compare(Object o1, Object o2, String type) {
if (type.equalsIgnoreCase("double") || type.equalsIgnoreCase("float")) {
return compare((Double) o1, (Double) o2);
} else if (type.equalsIgnoreCase("int") || type.equalsIgnoreCase("integer") || type.equalsIgnoreCase("long")) {
return compare((Long) o1, (Long) o2);
} else if (type.equalsIgnoreCase("string")) {
return ((String) o1).compareTo((String) o2);
} else if (type.equalsIgnoreCase("date")) {
return compare((Date) o1, (Date) o2);
}
return 0;
}
public static int compare(Long o1, Long o2) {
return o1.compareTo(o2);
}
public static int compare(Double o1, Double o2) {
return o1.compareTo(o2);
}
public static int compare(Date d1, Date d2) {
return d1.compareTo(d2);
}
public static String handleType(String t1) {
if (t1.equalsIgnoreCase("double") || t1.equalsIgnoreCase("float")) {
return "double";
} else if (t1.equalsIgnoreCase("int") || t1.equalsIgnoreCase("long"))
return "long";
else
return "string";
}
public static String handleTypes(String t1, String t2) {
if (t1.equalsIgnoreCase("double") || t1.equalsIgnoreCase("float")) {
if (t2.equalsIgnoreCase("double") || t2.equalsIgnoreCase("float")) {
return "double";
} else if (t2.equalsIgnoreCase("int") || t2.equalsIgnoreCase("long")) {
return "double";
} else {
return "string";
}
}
return "string";
}
public static boolean isArithmentic(String type) {
return type.equalsIgnoreCase("double") || type.equals("int") || type.equalsIgnoreCase("float") || type.equalsIgnoreCase("long");
}
}