package frame.data.convert;
|
|
import java.math.BigDecimal;
|
import java.text.DateFormat;
|
import java.text.SimpleDateFormat;
|
import java.util.Calendar;
|
import java.util.Date;
|
|
import frame.data.Variant;
|
import frame.util.Util;
|
|
|
public class DoubleTranslator extends Convertor {
|
|
public Object loadToObject(String value) throws Exception {
|
if (Util.isEmptyStr(value)) {
|
return null;
|
}
|
|
return Double.valueOf(value);
|
}
|
|
public Variant loadToVariant(String value) throws Exception {
|
if (value == null) {
|
return new Variant();
|
}
|
|
Double result = Double.valueOf(value);
|
|
return new Variant(result);
|
}
|
|
public String toString(Object value) throws Exception {
|
if (value == null) {
|
return null;
|
}
|
|
return value.toString();
|
}
|
|
public String toSqlString(Object value) throws Exception {
|
return String.valueOf(value);
|
}
|
|
public String toSqlString(String prefix, Object value, String suffix) throws Exception {
|
return toSqlString(value);
|
}
|
|
public String toJSONString(Object value) throws Exception {
|
if (value == null) {
|
return "null";
|
}
|
|
return value.toString();
|
}
|
|
@Override
|
public Integer toInteger(Object object) throws Exception {
|
if (object == null) {
|
return 0;
|
}
|
|
Double value = (Double)object;
|
return value.intValue();
|
}
|
|
@Override
|
public Double toDouble(Object object) throws Exception {
|
if (object == null) {
|
return 0.0;
|
}
|
|
return (Double)object;
|
}
|
|
@Override
|
public BigDecimal toBigDecimal(Object object) throws Exception {
|
if (object == null) {
|
return BigDecimal.valueOf(0);
|
}
|
|
return BigDecimal.valueOf((Double)object);
|
}
|
|
@Override
|
public Boolean toBoolean(Object object) throws Exception {
|
Double value = toDouble(object);
|
return value != 0;
|
}
|
|
@Override
|
public Date toDate(Object object) throws Exception {
|
Integer value = toInteger(object);
|
|
if (value >= 19500101 && value <= 21000101) {
|
String String = String.valueOf(value.intValue());
|
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
|
return dateFormat.parse(String);
|
}
|
else if (value > (1950 - 1900) * 365 && value < (2100 - 1900) * 365) {
|
int dateValue = value.intValue();
|
double secValue = value - dateValue;
|
|
Calendar calendar = Calendar.getInstance();
|
calendar.set(Calendar.YEAR, 1900);
|
calendar.set(Calendar.MONTH, 0);
|
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
calendar.set(Calendar.MINUTE, 0);
|
calendar.set(Calendar.SECOND, 0);
|
calendar.add(Calendar.DATE, value - 2);
|
|
Date dayDate = calendar.getTime();
|
long sec = Math.round(secValue * 24 * 3600 * 1000);
|
|
Date result = new Date();
|
result.setTime(dayDate.getTime() + sec);
|
return result;
|
}
|
|
return null;
|
}
|
|
@Override
|
public Object toSelfType(Object value) throws Exception {
|
return toDouble(value);
|
}
|
|
}
|