composeExpression function
Implementation
String composeExpression(final Expression exp) {
if (exp is Or) {
return composeOr(exp);
} else if (exp is And) {
return composeAnd(exp);
} else if (exp is Cond) {
return '${composeField(exp.lhs)} ${exp.op.string} ${composeValue(exp.rhs)}';
} else if (exp is CondCol) {
return '${composeField(exp.lhs)} ${exp.op.string} ${composeField(exp.rhs)}';
} else if (exp is Between) {
return '(${composeField(exp.field)} BETWEEN ${composeValue(exp.low)} AND ${composeValue(exp.high)})';
} else if (exp is InBetweenCol) {
return '(${composeField(exp.field)} BETWEEN ${composeField(exp.low)} AND ${composeField(exp.high)})';
} else if (exp is InOperation) {
return '(${composeField(exp.field)} IN (${exp.values.map(composeValue).map((value) => value!).join(", ")}))';
} else {
throw new Exception('Unknown expression ${exp.runtimeType}!');
}
}