package frame.variant.translator; import java.math.BigDecimal; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import frame.util.Util; import frame.variant.ValueType; import frame.variant.Value; public class DoubleTranslator extends ITranslator { @Override public String toString(Object value) throws Exception { if (value == null) { return null; } return value.toString(); } @Override public String toSqlString(Object value) throws Exception { if (value == null) { return "null"; } return String.valueOf(value); } @Override public String toJSONString(Object value) throws Exception { if (value == null) { return "null"; } return value.toString(); } @Override public String toSchemaString(Object value) throws Exception { if (value == null) { return "null"; } return value.toString(); } @Override public Integer toInteger(Object value) throws Exception { if (value == null) { return null; } return ((Double)value).intValue(); } @Override public Double toDouble(Object value) throws Exception { if (value == null) { return null; } return (Double)value; } @Override public BigDecimal toBigDecimal(Object value) throws Exception { if (value == null) { return null; } return BigDecimal.valueOf((Double)value); } @Override public Boolean toBoolean(Object value) throws Exception { if (value == null) { return null; } return (Double)value > 0; } @Override public Date toDate(Object value) throws Exception { if (value == null) { return null; } Long longValue = ((Double)value).longValue(); if (longValue >= 19500101 && longValue <= 21000101) { DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); return dateFormat.parse(String.valueOf(longValue)); } else { return new Date(longValue); } } @Override public Object toTranslatorTypeValue(Object value) throws Exception { return (Double)value; } @Override public Object loadObjectFrom(String value) throws Exception { if (Util.isEmptyStr(value)) { return null; } return Double.valueOf(value); } @Override public Value loadVariantFrom(String value) throws Exception { Object object = loadObjectFrom(value); Value variant = new Value(); variant.setData(object, ValueType.Double); return variant; } @Override public Value loadVariantFrom(String value, Object defaultValue) { try { return loadVariantFrom(value); } catch (Exception e) { Value variant = new Value(); variant.setData(defaultValue, ValueType.Double); return variant; } } @Override public Class getDataClass() { return Double.class; } }