return value;
} else if (hijosRight[0].getClass() == InClauseAdapter.class) {
InClauseAdapter inAdapter = (InClauseAdapter) hijosRight[0];
Value test = ((Expression) hijos[0]).evaluateExpression(row);
boolean is = false;
for (int i = 0; i < inAdapter.getListLength(); i++) {
Value inElement = inAdapter.getLValue(i, row);
if (inElement instanceof NullValue){
if (test instanceof NullValue){
is = true;
break;
}
} else{
try {
if (((BooleanValue)test.equals(inElement)).getValue()){
is = true;
break;
}
} catch (IncompatibleTypesException e) {
throw new EvaluationException(e);
}
}
}
if (inAdapter.isNegated()){
is = !is;
}
return ValueFactory.createValue(is);
} else if (hijosRight[0].getClass() == BetweenClauseAdapter.class) {
BetweenClauseAdapter betweenAdapter = (BetweenClauseAdapter) hijosRight[0];
Value test = ((Expression) hijos[0]).evaluateExpression(row);
try {
Value ret = test.less(betweenAdapter.getSupValue(row)).and(test.greater(betweenAdapter.getInfValue(row)));
if (betweenAdapter.isNegated())
return ret.inversa();
else
return ret;
} catch (IncompatibleTypesException e) {
throw new EvaluationException(e);