package jef.database.dialect.type;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import jef.database.dialect.DatabaseDialect;
import jef.database.jdbc.result.IResultSet;
import jef.database.query.Func;
/**
* DATE <-> java.sql.Date
* @author jiyi
*
*/
public class DateSDateMapping extends AbstractTimeMapping{
public Object jdbcSet(PreparedStatement st, Object value, int index, DatabaseDialect session) throws SQLException {
st.setDate(index, (java.sql.Date)value);
return value;
}
public int getSqlType() {
return java.sql.Types.DATE;
}
@Override
protected String getSqlExpression(Object value, DatabaseDialect profile) {
if(value instanceof java.util.Date){
return profile.getSqlDateExpression((Date)value);
}
throw new IllegalArgumentException("The input param can not cast to Date.");
}
public Object jdbcGet(IResultSet rs, int n) throws SQLException {
return rs.getDate(n);
}
@Override
public String getFunctionString(DatabaseDialect profile) {
return profile.getFunction(Func.current_date);
}
@Override
public Object getCurrentValue() {
return new java.sql.Date(System.currentTimeMillis());
}
@Override
protected Class<?> getDefaultJavaType() {
return java.sql.Date.class;
}
@Override
public void jdbcUpdate(ResultSet rs, String columnIndex, Object value, DatabaseDialect dialect) throws SQLException {
rs.updateDate(columnIndex, (java.sql.Date)value);
}
}