/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate.hql.internal.ast.tree;

import org.hibernate.QueryException;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.type.LiteralType;
import org.hibernate.type.StandardBasicTypes;
import org.hibernate.type.Type;
import org.hibernate.type.descriptor.converter.AttributeConverterTypeAdapter;

Represents a boolean literal within a query.
Author:Steve Ebersole
/** * Represents a boolean literal within a query. * * @author Steve Ebersole */
public class BooleanLiteralNode extends LiteralNode implements ExpectedTypeAwareNode { private Type expectedType; public Type getDataType() { return getExpectedType() == null ? StandardBasicTypes.BOOLEAN : getExpectedType(); } public Boolean getValue() { return getType() == TRUE ; } @Override public void setText(String s) { super.setText( s ); } @Override public void setExpectedType(Type expectedType) { this.expectedType = expectedType; } @Override public Type getExpectedType() { return expectedType; } @Override @SuppressWarnings( {"unchecked"}) public String getRenderText(SessionFactoryImplementor sessionFactory) { final boolean literalValue = getValue(); if ( expectedType instanceof AttributeConverterTypeAdapter ) { return determineConvertedValue( (AttributeConverterTypeAdapter) expectedType, literalValue ); } else if ( expectedType instanceof LiteralType ) { try { return ( (LiteralType) expectedType ).objectToSQLString( getValue(), sessionFactory.getDialect() ); } catch( Exception t ) { throw new QueryException( "Unable to render boolean literal value using expected LiteralType", t ); } } return sessionFactory.getDialect().toBooleanValueString( literalValue ); } }