/*
* OpenClinica is distributed under the
* GNU Lesser General Public License (GNU LGPL).
* For details see: http://www.openclinica.org/license
*
* Copyright 2003-2008 Akaza Research
*/
package org.akaza.openclinica.logic.expressionTree;
import org.akaza.openclinica.exception.OpenClinicaSystemException;
/**
* @author Krikor Krumlian
*
*/
class ExpressionNodeFactory {
static ExpressionNode getExpNode(Operator op, ExpressionNode node1, ExpressionNode node2) {
if (op == Operator.PLUS || op == Operator.MINUS || op == Operator.MULTIPLY || op == Operator.DIVIDE) {
return new ArithmeticOpNode(op, node1, node2);
} else if (op == Operator.GREATER_THAN || op == Operator.GREATER_THAN_EQUAL || op == Operator.LESS_THAN || op == Operator.LESS_THAN_EQUAL) {
return new RelationalOpNode(op, node1, node2);
} else if (op == Operator.EQUAL || op == Operator.NOT_EQUAL || op == Operator.CONTAINS) {
return new EqualityOpNode(op, node1, node2);
} else if (op == Operator.OR || op == Operator.AND) {
return new ConditionalOpNode(op, node1, node2);
} else {
throw new OpenClinicaSystemException("OCRERR_0003");
}
}
}