package com.bagri.core.query;
/**
* Possible comparisons enumeration.
*
* @author Denis Sukhoroslov
*
*/
public enum Comparison {
/**
* equals
*/
EQ,
/**
* not equals
*/
NE,
/**
* less
*/
LT,
/**
* less or equals
*/
LE,
/**
* greater
*/
GT,
/**
* greater or equals
*/
GE,
/**
* in
*/
IN,
/**
* like
*/
LIKE,
/**
* between
*/
BETWEEN,
/**
* and
*/
AND,
/**
* or
*/
OR,
/**
* not
*/
NOT;
/**
* Negates the provided Comparison value
*
* @param comp the Comparison value
* @return negated Comparison value
*/
public static Comparison negate(Comparison comp) {
switch (comp) {
case EQ: return Comparison.NE;
case NE: return Comparison.EQ;
case LE: return Comparison.GT;
case LT: return Comparison.GE;
case GE: return Comparison.LT;
case GT: return Comparison.LE;
default: return comp;
}
}
/**
* Reverses the provided Comparison value
*
* @param comp the Comparison value
* @return reverted Comparison value
*/
public static Comparison revert(Comparison comp) {
switch (comp) {
case EQ: return Comparison.EQ;
case NE: return Comparison.NE;
case LE: return Comparison.GE;
case LT: return Comparison.GT;
case GE: return Comparison.LE;
case GT: return Comparison.LT;
default: return comp;
}
}
/**
* Check is the provided Comparison value implies Binary expression or not.
*
* @param compType the Comparison value
* @return true if compType is AND or OR, false otherwise
*/
public static boolean isBinary(Comparison compType) {
switch (compType) {
case AND:
case OR: return true;
//case NOT:
// return -1;
default: return false;
}
}
}