/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.esl.sql.model.datatypes;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.w3c.dom.Node;
public abstract class DataType
implements Serializable
{
public abstract int getSQLType();
public abstract String getTypeString();
public abstract Object getData( ResultSet resultSet, int columnIndex )
throws SQLException;
public abstract String getDataAsString( ResultSet resultSet, int columnIndex )
throws SQLException;
public Object getDataForXML( ResultSet resultSet, int columnIndex )
throws SQLException
{
return getDataForXML( getData( resultSet, columnIndex ) );
}
public abstract Object getDataForXML( Object obj );
public abstract Object getDataFromXML( Node node );
public abstract String getDataString( Object obj );
// This method should never be called with null as object!
public abstract void setData( PreparedStatement preparedStmt, int columnIndex, Object obj )
throws SQLException;
public String getSQLValue( Object xpathValue )
{
return xpathValue.toString();
}
public String toString()
{
return getTypeString() + " - SQL Type: " + getSQLType();
}
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals( Object obj )
{
if ( obj == null || ( obj instanceof DataType ) == false )
{
return false;
}
DataType other = (DataType) obj;
return getTypeString().equals( other.getTypeString() );
}
/**
* @see java.lang.Object#hashCode()
*/
public int hashCode()
{
return getTypeString().hashCode();
}
}