package com.taobao.tddl.common.utils.convertor;
import java.util.Date;
/**
* Date <-> SqlDate 之间的转化
*
* @author jianghang 2011-11-16 上午09:47:01
*/
public class SqlDateAndDateConvertor {
public static class SqlDateToDateConvertor extends AbastactConvertor {
@Override
public Object convert(Object src, Class destClass) {
if (Date.class != destClass) {
throw new ConvertorException("Unsupported convert: [" + src + "," + destClass.getName() + "]");
}
if (src instanceof java.sql.Date) {
return new Date(((java.sql.Date) src).getTime());
}
if (src instanceof java.sql.Timestamp) {
return new Date(((java.sql.Timestamp) src).getTime());
}
if (src instanceof java.sql.Time) {
return new Date(((java.sql.Time) src).getTime());
}
throw new ConvertorException("Unsupported convert: [" + src + "," + destClass.getName() + "]");
}
}
public static class DateToSqlDateConvertor extends AbastactConvertor {
@Override
public Object convert(Object src, Class destClass) {
if (Date.class.isInstance(src)) { // 必须是Date类型
Date date = (Date) src;
long value = date.getTime();
// java.sql.Date
if (destClass.equals(java.sql.Date.class)) {
return new java.sql.Date(value);
}
// java.sql.Time
if (destClass.equals(java.sql.Time.class)) {
return new java.sql.Time(value);
}
// java.sql.Timestamp
if (destClass.equals(java.sql.Timestamp.class)) {
return new java.sql.Timestamp(value);
}
}
throw new ConvertorException("Unsupported convert: [" + src + "," + destClass.getName() + "]");
}
}
}