betweenoperatornode.java
来自「好东西,hibernate-3.2.0,他是一开元的树杖hibernate-3.」· Java 代码 · 共 62 行
JAVA
62 行
package org.hibernate.hql.ast.tree;
import org.hibernate.type.Type;
import org.hibernate.Hibernate;
import antlr.SemanticException;
/**
* Contract for nodes representing logcial BETWEEN (ternary) operators.
*
* @author Steve Ebersole
*/
public class BetweenOperatorNode extends SqlNode implements OperatorNode {
public void initialize() throws SemanticException {
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 );
}
public Type getDataType() {
// logic operators by definition resolve to boolean.
return Hibernate.BOOLEAN;
}
public Node getFixtureOperand() {
return ( Node ) getFirstChild();
}
public Node getLowOperand() {
return ( Node ) getFirstChild().getNextSibling();
}
public Node getHighOperand() {
return ( Node ) getFirstChild().getNextSibling().getNextSibling();
}
private void check(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 );
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?