/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.esl.sql.model.datatypes;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import org.w3c.dom.Node;
import com.enonic.esl.xml.XMLTool;
public class BooleanType
extends DataType
{
private static final BooleanType type = new BooleanType();
public int getSQLType()
{
return Types.INTEGER;
}
public Object getData( ResultSet resultSet, int columnIndex )
throws SQLException
{
boolean value = resultSet.getBoolean( columnIndex );
if ( resultSet.wasNull() )
{
return null;
}
else
{
return ( value ? Boolean.TRUE : Boolean.FALSE );
}
}
public String getDataAsString( ResultSet resultSet, int columnIndex )
throws SQLException
{
boolean value = resultSet.getBoolean( columnIndex );
if ( resultSet.wasNull() )
{
return null;
}
else
{
return String.valueOf( value );
}
}
public Object getDataForXML( Object obj )
{
if ( obj == null )
{
return null;
}
else
{
return obj.toString();
}
}
public String getDataString( Object obj )
{
if ( obj == null )
{
return "null";
}
else if ( obj instanceof Boolean )
{
Boolean b = (Boolean) obj;
if ( b.booleanValue() )
{
return "Boolean.TRUE";
}
else
{
return "Boolean.FALSE";
}
}
else
{
return getDataString( new Boolean( obj.toString() ) );
}
}
public void setData( PreparedStatement preparedStmt, int columnIndex, Object obj )
throws SQLException
{
Boolean value;
if ( obj instanceof String )
{
try
{
Integer i = Integer.valueOf( (String) obj );
if ( i.intValue() == 0 )
{
value = Boolean.FALSE;
}
else
{
value = Boolean.TRUE;
}
}
catch ( NumberFormatException e )
{
value = Boolean.valueOf( (String) obj );
}
}
else if ( obj instanceof Integer )
{
Integer i = (Integer) obj;
if ( i.intValue() == 0 )
{
value = Boolean.FALSE;
}
else
{
value = Boolean.TRUE;
}
}
else
{
value = (Boolean) obj;
}
preparedStmt.setInt( columnIndex, value.booleanValue() ? 1 : 0 );
}
public Object getDataFromXML( Node node )
{
String text = XMLTool.getNodeText( node );
if ( text == null || text.length() == 0 )
{
return null;
}
else
{
return Boolean.valueOf( text );
}
}
public String getSQLValue( Object xpathValue )
{
if ( "true".equals( xpathValue ) )
{
return "1";
}
else
{
return "0";
}
}
public String getTypeString()
{
return "BOOLEAN";
}
public static DataType getInstance()
{
return type;
}
}