OCLExpressions.java
package org.andromda.translation.ocl.validation;
import org.apache.commons.lang.BooleanUtils;
/**
* Used to translate OCL expressions to their corresponding Java expressions.
*/
public final class OCLExpressions
{
/**
* @param first
* @param second
* @return first.equals(second)
*/
public static boolean equal(
final Object first,
final Object second)
{
return (first == null) ? (second == null) : first.equals(second);
}
/**
* @param first
* @param second
* @return first == second
*/
public static boolean equal(
final boolean first,
final boolean second)
{
return first == second;
}
/**
* @param first
* @param second
* @return first == second
*/
public static boolean equal(
final int first,
final int second)
{
return first == second;
}
/**
* @param first
* @param second
* @return first == second
*/
public static boolean equal(
final short first,
final short second)
{
return first == second;
}
/**
* @param first
* @param second
* @return first == second
*/
public static boolean equal(
final byte first,
final byte second)
{
return first == second;
}
/**
* @param first
* @param second
* @return first == second
*/
public static boolean equal(
final char first,
final char second)
{
return first == second;
}
/**
* @param first
* @param second
* @return first == second
*/
public static boolean equal(
final float first,
final float second)
{
return first == second;
}
/**
* @param first
* @param second
* @return first == second
*/
public static boolean equal(
final double first,
final double second)
{
return first == second;
}
/**
* @param first
* @param second
* @return first == second
*/
public static boolean equal(
final long first,
final long second)
{
return first == second;
}
/**
* @param first
* @param second
* @return first == second
*/
public static boolean equal(
final Object first,
final boolean second)
{
return (second) ? Boolean.TRUE.equals(first) || BooleanUtils.toBoolean(String.valueOf(first))
: Boolean.FALSE.equals(first) || !BooleanUtils.toBoolean(String.valueOf(first));
}
/**
* @param first
* @param second
* @return equal(second, first)
*/
public static boolean equal(
final boolean first,
final Object second)
{
return equal(second, first);
}
/**
* @param first
* @param second
* @return !first.equals(second)
*/
public static boolean notEqual(
final Object first,
final Object second)
{
return first == null ? second != null : !first.equals(second);
}
/**
* @param first
* @param second
* @return first != second
*/
public static boolean notEqual(
final boolean first,
final boolean second)
{
return first != second;
}
/**
* @param first
* @param second
* @return equal
*/
public static boolean equal(
final Object first,
final long second)
{
boolean equal = first instanceof Comparable;
if (equal)
{
final Comparable comparable = (Comparable) first;
if (comparable instanceof Integer)
{
equal = comparable.compareTo(Integer.valueOf((int) second)) > 0;
}
else
{
equal = comparable.equals(Long.valueOf(second));
}
}
return equal;
}
/**
* @param first
* @param second
* @return equal
*/
public static boolean equal(
final Object first,
final int second)
{
boolean equal = first instanceof Comparable;
if (equal)
{
final Comparable comparable = (Comparable) first;
equal = comparable.equals(Integer.valueOf(second));
}
return equal;
}
/**
* @param first
* @param second
* @return first != second
*/
public static boolean notEqual(
final int first,
final int second)
{
return first != second;
}
/**
* @param first
* @param second
* @return first != second
*/
public static boolean notEqual(
final short first,
final short second)
{
return first != second;
}
/**
* @param first
* @param second
* @return first != second
*/
public static boolean notEqual(
final byte first,
final byte second)
{
return first != second;
}
/**
* @param first
* @param second
* @return first != second
*/
public static boolean notEqual(
final char first,
final char second)
{
return first != second;
}
/**
* @param first
* @param second
* @return first != second
*/
public static boolean notEqual(
final float first,
final float second)
{
return first != second;
}
/**
* @param first
* @param second
* @return first != second
*/
public static boolean notEqual(
final double first,
final double second)
{
return first != second;
}
/**
* @param first
* @param second
* @return first != second
*/
public static boolean notEqual(
final long first,
final long second)
{
return first != second;
}
/**
* @param first
* @param second
* @return !equal(first, second)
*/
public static boolean notEqual(
final Object first,
final boolean second)
{
return !equal(first, second);
}
/**
* @param first
* @param second
* @return notEqual(second, first)
*/
public static boolean notEqual(
final boolean first,
final Object second)
{
return notEqual(second, first);
}
/**
* @param first
* @param second
* @return first.compareTo(second) < 0
*/
public static boolean less(
final Comparable first,
final Comparable second)
{
return first == null ? second == null : first.compareTo(second) < 0;
}
/**
* @param first
* @param second
* @return first < second
*/
public static boolean less(
final int first,
final int second)
{
return first < second;
}
/**
* @param first
* @param second
* @return first < second
*/
public static boolean less(
final short first,
final short second)
{
return first < second;
}
/**
* @param first
* @param second
* @return first < second
*/
public static boolean less(
final byte first,
final byte second)
{
return first < second;
}
/**
* @param first
* @param second
* @return first < second
*/
public static boolean less(
final char first,
final char second)
{
return first < second;
}
/**
* @param first
* @param second
* @return first < second
*/
public static boolean less(
final float first,
final float second)
{
return first < second;
}
/**
* @param first
* @param second
* @return first < second
*/
public static boolean less(
final double first,
final double second)
{
return first < second;
}
/**
* @param first
* @param second
* @return first < second
*/
public static boolean less(
final long first,
final long second)
{
return first < second;
}
/**
* @param first
* @param second
* @return first.compareTo(second) <= 0
*/
public static boolean lessOrEqual(
final Comparable first,
final Comparable second)
{
return first == null ? second == null : (first.compareTo(second) <= 0);
}
/**
* @param first
* @param second
* @return lessOrEqual((Comparable) first, (Comparable) second)
*/
public static boolean lessOrEqual(
final Object first,
final Object second)
{
boolean lessOrEqual = first instanceof Comparable && second instanceof Comparable;
if (lessOrEqual)
{
lessOrEqual = lessOrEqual((Comparable) first, (Comparable) second);
}
return lessOrEqual;
}
/**
* @param first
* @param second
* @return first <= second
*/
public static boolean lessOrEqual(
final int first,
final int second)
{
return first <= second;
}
/**
* @param first
* @param second
* @return first <= second
*/
public static boolean lessOrEqual(
final short first,
final short second)
{
return first <= second;
}
/**
* @param first
* @param second
* @return first <= second
*/
public static boolean lessOrEqual(
final byte first,
final byte second)
{
return first <= second;
}
/**
* @param first
* @param second
* @return first <= second
*/
public static boolean lessOrEqual(
final char first,
final char second)
{
return first <= second;
}
/**
* @param first
* @param second
* @return first <= second
*/
public static boolean lessOrEqual(
final float first,
final float second)
{
return first <= second;
}
/**
* @param first
* @param second
* @return lessOrEqual((Comparable) first, Float.valueOf(second))
*/
public static boolean lessOrEqual(
final Object first,
final float second)
{
boolean lessOrEqual = first instanceof Comparable;
if (lessOrEqual)
{
lessOrEqual = lessOrEqual((Comparable) first, Float.valueOf(second));
}
return lessOrEqual;
}
/**
* @param first
* @param second
* @return lessOrEqual(new Float(first), (Comparable) second)
*/
public static boolean lessOrEqual(
final float first,
final Object second)
{
boolean lessOrEqual = second instanceof Comparable;
if (lessOrEqual)
{
lessOrEqual = lessOrEqual(new Float(first), (Comparable) second);
}
return lessOrEqual;
}
/**
* @param first
* @param second
* @return first <= second
*/
public static boolean lessOrEqual(
final double first,
final double second)
{
return first <= second;
}
/**
* @param first
* @param second
* @return lessOrEqual((Comparable) first, Double.valueOf(second))
*/
public static boolean lessOrEqual(
final Object first,
final double second)
{
boolean lessOrEqual = first instanceof Comparable;
if (lessOrEqual)
{
lessOrEqual = lessOrEqual((Comparable) first, Double.valueOf(second));
}
return lessOrEqual;
}
/**
* @param first
* @param second
* @return lessOrEqual(Double.valueOf(first), (Comparable) second)
*/
public static boolean lessOrEqual(
final double first,
final Object second)
{
boolean lessOrEqual = second instanceof Comparable;
if (lessOrEqual)
{
lessOrEqual = lessOrEqual(Double.valueOf(first), (Comparable) second);
}
return lessOrEqual;
}
/**
* @param first
* @param second
* @return first <= second
*/
public static boolean lessOrEqual(
final long first,
final long second)
{
return first <= second;
}
/**
* @param first
* @param second
* @return lessOrEqual((Comparable) first, Long.valueOf(second))
*/
public static boolean lessOrEqual(
final Object first,
final long second)
{
boolean lessOrEqual = first instanceof Comparable;
if (lessOrEqual)
{
if (first instanceof Integer)
{
lessOrEqual = lessOrEqual((Comparable) first, Integer.valueOf((int) second));
}
else
{
lessOrEqual = lessOrEqual((Comparable) first, Long.valueOf(second));
}
}
return lessOrEqual;
}
/**
* @param first
* @param second
* @return lessOrEqual((Comparable) first, Integer.valueOf(second))
*/
public static boolean lessOrEqual(
final Object first,
final int second)
{
boolean lessOrEqual = first instanceof Comparable;
if (lessOrEqual)
{
lessOrEqual = lessOrEqual((Comparable) first, Integer.valueOf(second));
}
return lessOrEqual;
}
/**
* @param first
* @param second
* @return lessOrEqual((Comparable) first, Short.valueOf(second))
*/
public static boolean lessOrEqual(
final Object first,
final short second)
{
boolean lessOrEqual = first instanceof Comparable;
if (lessOrEqual)
{
lessOrEqual = lessOrEqual((Comparable) first, Short.valueOf(second));
}
return lessOrEqual;
}
/**
* @param first
* @param second
* @return lessOrEqual = lessOrEqual(Long.valueOf(first), (Comparable) second)
*/
public static boolean lessOrEqual(
final long first,
final Object second)
{
boolean lessOrEqual = second instanceof Comparable;
if (lessOrEqual)
{
if (second instanceof Integer)
{
lessOrEqual = lessOrEqual(Integer.valueOf((int) first), (Comparable) second);
}
else
{
lessOrEqual = lessOrEqual(Long.valueOf(first), (Comparable) second);
}
}
return lessOrEqual;
}
/**
* @param first
* @param second
* @return lessOrEqual(new Integer(first), (Comparable) second)
*/
public static boolean lessOrEqual(
final int first,
final Object second)
{
boolean lessOrEqual = second instanceof Comparable;
if (lessOrEqual)
{
lessOrEqual = lessOrEqual(new Integer(first), (Comparable) second);
}
return lessOrEqual;
}
/**
* @param first
* @param second
* @return lessOrEqual(new Short(first), (Comparable) second)
*/
public static boolean lessOrEqual(
final short first,
final Object second)
{
boolean lessOrEqual = second instanceof Comparable;
if (lessOrEqual)
{
lessOrEqual = lessOrEqual(new Short(first), (Comparable) second);
}
return lessOrEqual;
}
/**
* @param first
* @param second
* @return first.compareTo(second) > 0
*/
public static boolean greater(
final Comparable first,
final Comparable second)
{
return first == null ? second == null : first.compareTo(second) > 0;
}
/**
* @param first
* @param second
* @return comparable.compareTo(Long.valueOf(second)) > 0
*/
public static boolean greater(
final Object first,
final long second)
{
boolean greater = first instanceof Comparable;
if (greater)
{
final Comparable comparable = (Comparable) first;
if (comparable instanceof Integer)
{
greater = comparable.compareTo(Integer.valueOf((int) second)) > 0;
} else
{
greater = comparable.compareTo(Long.valueOf(second)) > 0;
}
}
return greater;
}
/**
* @param first
* @param second
* @return comparable.compareTo(Long.valueOf(second)) > 0
*/
public static boolean greater(
final Object first,
final int second)
{
boolean greater = first instanceof Comparable;
if (greater)
{
final Comparable comparable = (Comparable) first;
if (comparable instanceof Integer)
{
greater = comparable.compareTo(Integer.valueOf(second)) > 0;
} else
{
greater = comparable.compareTo(Long.valueOf(second)) > 0;
}
}
return greater;
}
/**
* @param first
* @param second
* @return first > second
*/
public static boolean greater(
final byte first,
final byte second)
{
return first > second;
}
/**
* @param first
* @param second
* @return first > second
*/
public static boolean greater(
final char first,
final char second)
{
return first > second;
}
/**
* @param first
* @param second
* @return first > second
*/
public static boolean greater(
final float first,
final float second)
{
return first > second;
}
/**
* @param first
* @param second
* @return first > second
*/
public static boolean greater(
final double first,
final double second)
{
return first > second;
}
/**
* @param first
* @param second
* @return first > second
*/
public static boolean greater(
final long first,
final long second)
{
return first > second;
}
/**
* @param first
* @param second
* @return first.compareTo(second) >= 0
*/
public static boolean greaterOrEqual(
final Comparable first,
final Comparable second)
{
return first == null ? second == null : first.compareTo(second) >= 0;
}
/**
* @param first
* @param second
* @return greaterOrEqual((Comparable) first, Long.valueOf(second))
*/
public static boolean greaterOrEqual(
final Object first,
final long second)
{
boolean greaterOrEqual = first instanceof Comparable;
if (greaterOrEqual)
{
if (first instanceof Integer)
{
greaterOrEqual = greaterOrEqual((Comparable) first, Integer.valueOf((int) second));
} else
{
greaterOrEqual = greaterOrEqual((Comparable) first, Long.valueOf(second));
}
}
return greaterOrEqual;
}
/**
* @param first
* @param second
* @return greaterOrEqual((Comparable) first, Integer.valueOf(second))
*/
public static boolean greaterOrEqual(
final Object first,
final int second)
{
boolean greaterOrEqual = first instanceof Comparable;
if (greaterOrEqual)
{
greaterOrEqual = greaterOrEqual((Comparable) first, Integer.valueOf(second));
}
return greaterOrEqual;
}
/**
* @param first
* @param second
* @return greaterOrEqual((Comparable) first, Short.valueOf(second))
*/
public static boolean greaterOrEqual(
final Object first,
final short second)
{
boolean greaterOrEqual = first instanceof Comparable;
if (greaterOrEqual)
{
greaterOrEqual = greaterOrEqual((Comparable) first, Short.valueOf(second));
}
return greaterOrEqual;
}
/**
* @param first
* @param second
* @return greaterOrEqual(Long.valueOf(first), (Comparable) second)
*/
public static boolean greaterOrEqual(
final long first,
final Object second)
{
boolean greaterOrEqual = second instanceof Comparable;
if (greaterOrEqual)
{
if (second instanceof Integer)
{
greaterOrEqual = greaterOrEqual(Integer.valueOf((int) first), (Integer) second);
} else
{
greaterOrEqual = greaterOrEqual(Long.valueOf(first), (Comparable) second);
}
}
return greaterOrEqual;
}
/**
* @param first
* @param second
* @return greaterOrEqual(Integer.valueOf(first), (Comparable) second)
*/
public static boolean greaterOrEqual(
final int first,
final Object second)
{
boolean greaterOrEqual = second instanceof Comparable;
if (greaterOrEqual)
{
greaterOrEqual = greaterOrEqual(Integer.valueOf(first), (Comparable) second);
}
return greaterOrEqual;
}
/**
* @param first
* @param second
* @return greaterOrEqual(Short.valueOf(first), (Comparable) second)
*/
public static boolean greaterOrEqual(
final short first,
final Object second)
{
boolean greaterOrEqual = second instanceof Comparable;
if (greaterOrEqual)
{
greaterOrEqual = greaterOrEqual(Short.valueOf(first), (Comparable) second);
}
return greaterOrEqual;
}
/**
* @param first
* @param second
* @return greaterOrEqual((Comparable) first, (Comparable) second)
*/
public static boolean greaterOrEqual(
final Object first,
final Object second)
{
boolean greaterOrEqual = first instanceof Comparable && second instanceof Comparable;
if (greaterOrEqual)
{
greaterOrEqual = greaterOrEqual((Comparable) first, (Comparable) second);
}
return greaterOrEqual;
}
/**
* @param first
* @param second
* @return greaterOrEqual((Comparable) first, Double.valueOf(second))
*/
public static boolean greaterOrEqual(
final Object first,
final double second)
{
boolean greaterOrEqual = first instanceof Comparable;
if (greaterOrEqual)
{
greaterOrEqual = greaterOrEqual((Comparable) first, Double.valueOf(second));
}
return greaterOrEqual;
}
/**
* @param first
* @param second
* @return greaterOrEqual((Comparable) first, Float.valueOf(second))
*/
public static boolean greaterOrEqual(
final Object first,
final float second)
{
boolean greaterOrEqual = first instanceof Comparable;
if (greaterOrEqual)
{
greaterOrEqual = greaterOrEqual((Comparable) first, Float.valueOf(second));
}
return greaterOrEqual;
}
/**
* @param first
* @param second
* @return greaterOrEqual(new Double(first), (Comparable) second
*/
public static boolean greaterOrEqual(
final double first,
final Object second)
{
boolean greaterOrEqual = second instanceof Comparable;
if (greaterOrEqual)
{
greaterOrEqual = greaterOrEqual(new Double(first), (Comparable) second);
}
return greaterOrEqual;
}
/**
* @param first
* @param second
* @return greaterOrEqual(new Float(first), (Comparable) second)
*/
public static boolean greaterOrEqual(
final float first,
final Object second)
{
boolean greaterOrEqual = second instanceof Comparable;
if (greaterOrEqual)
{
greaterOrEqual = greaterOrEqual(new Float(first), (Comparable) second);
}
return greaterOrEqual;
}
/**
* @param first
* @param second
* @return first >= second
*/
public static boolean greaterOrEqual(
final byte first,
final byte second)
{
return first >= second;
}
/**
* @param first
* @param second
* @return first >= second
*/
public static boolean greaterOrEqual(
final char first,
final char second)
{
return first >= second;
}
/**
* @param first
* @param second
* @return first >= second
*/
public static boolean greaterOrEqual(
final double first,
final double second)
{
return first >= second;
}
/**
* @param first
* @param second
* @return first >= second
*/
public static boolean greaterOrEqual(
final long first,
final long second)
{
return first >= second;
}
}