FileDocCategorySizeDatePackage
BetweenOperatorNode.javaAPI DocHibernate 3.2.51801Thu Jun 08 16:04:46 BST 2006org.hibernate.hql.ast.tree

BetweenOperatorNode

public class BetweenOperatorNode extends SqlNode implements OperatorNode
Contract for nodes representing logcial BETWEEN (ternary) operators.
author
Steve Ebersole

Fields Summary
Constructors Summary
Methods Summary
private voidcheck(Node check, Node first, Node second)

		if ( ExpectedTypeAwareNode.class.isAssignableFrom( check.getClass() ) ) {
			Type expectedType = null;
			if ( SqlNode.class.isAssignableFrom( first.getClass() ) ) {
				expectedType = ( ( SqlNode ) first ).getDataType();
			}
			if ( expectedType == null && SqlNode.class.isAssignableFrom( second.getClass() ) ) {
				expectedType = ( ( SqlNode ) second ).getDataType();
			}
			( ( ExpectedTypeAwareNode ) check ).setExpectedType( expectedType );
		}
	
public org.hibernate.type.TypegetDataType()

		// logic operators by definition resolve to boolean.
		return Hibernate.BOOLEAN;
	
public NodegetFixtureOperand()

		return ( Node ) getFirstChild();
	
public NodegetHighOperand()

		return ( Node ) getFirstChild().getNextSibling().getNextSibling();
	
public NodegetLowOperand()

		return ( Node ) getFirstChild().getNextSibling();
	
public voidinitialize()

		Node fixture = getFixtureOperand();
		if ( fixture == null ) {
			throw new SemanticException( "fixture operand of a between operator was null" );
		}
		Node low = getLowOperand();
		if ( low == null ) {
			throw new SemanticException( "low operand of a between operator was null" );
		}
		Node high = getHighOperand();
		if ( high == null ) {
			throw new SemanticException( "high operand of a between operator was null" );
		}
		check( fixture, low, high );
		check( low, high, fixture );
		check( high, fixture, low );