package frame.variant.translator;
|
|
import java.math.BigDecimal;
|
import java.util.Date;
|
|
import frame.util.Util;
|
import frame.variant.ValueType;
|
import frame.variant.Value;
|
|
|
public class ObjectTranslator extends ITranslator {
|
|
private static IntegerTranslator integerTranslator;
|
private static LongTranslator longTranslator;
|
private static DoubleTranslator doubleTranslator;
|
private static BigDecimalTranslator bigDecimalTranslator;
|
private static StringTranslator stringTranslator;
|
|
static {
|
integerTranslator = new IntegerTranslator();
|
longTranslator = new LongTranslator();
|
doubleTranslator = new DoubleTranslator();
|
bigDecimalTranslator = new BigDecimalTranslator();
|
stringTranslator = new StringTranslator();
|
}
|
|
@Override
|
public String toString(Object value) throws Exception {
|
if (value == null) {
|
return null;
|
}
|
|
if (value instanceof String) {
|
return (String)value;
|
}
|
|
return value.toString();
|
}
|
|
@Override
|
public String toSqlString(Object value) throws Exception {
|
if (value == null) {
|
return "null";
|
}
|
|
if (value instanceof String) {
|
return "'" + value + "'";
|
}
|
|
if (value instanceof Date) {
|
return "'" + value + "'";
|
}
|
|
return value.toString();
|
}
|
|
@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 "";
|
}
|
|
return "\"" + value.toString() + "\"";
|
}
|
|
@Override
|
public Integer toInteger(Object value) throws Exception {
|
if (value == null) {
|
return null;
|
}
|
|
if (value instanceof Integer) {
|
return (Integer)value;
|
}
|
|
if (value instanceof Double) {
|
return ((Double)value).intValue();
|
}
|
|
if (value instanceof Float) {
|
return ((Float)value).intValue();
|
}
|
|
if (value instanceof Long) {
|
return ((Long)value).intValue();
|
}
|
|
if (value instanceof BigDecimal) {
|
return ((BigDecimal)value).intValue();
|
}
|
|
if (value instanceof String) {
|
return Integer.valueOf((String)value);
|
}
|
|
return Integer.valueOf(String.valueOf(value));
|
}
|
|
@Override
|
public Double toDouble(Object value) throws Exception {
|
if (value == null) {
|
return null;
|
}
|
|
if (value instanceof Integer) {
|
return (Double)value;
|
}
|
|
if (value instanceof Double) {
|
return (Double)value;
|
}
|
|
if (value instanceof Float) {
|
return (Double)value;
|
}
|
|
if (value instanceof Long) {
|
return (Double)value;
|
}
|
|
if (value instanceof BigDecimal) {
|
return ((BigDecimal)value).doubleValue();
|
}
|
|
if (value instanceof String) {
|
return Double.valueOf((String)value);
|
}
|
|
return Double.valueOf(String.valueOf(value));
|
|
}
|
|
@Override
|
public BigDecimal toBigDecimal(Object value) throws Exception {
|
if (value == null) {
|
return null;
|
}
|
|
if (value instanceof Integer) {
|
return BigDecimal.valueOf((Double)value);
|
}
|
|
if (value instanceof Double) {
|
return BigDecimal.valueOf((Double)value);
|
}
|
|
if (value instanceof Float) {
|
return BigDecimal.valueOf((Double)value);
|
}
|
|
if (value instanceof Long) {
|
return BigDecimal.valueOf((Double)value);
|
}
|
|
if (value instanceof BigDecimal) {
|
return (BigDecimal)value;
|
}
|
|
if (value instanceof String) {
|
return BigDecimal.valueOf(Double.valueOf((String)value));
|
}
|
|
return BigDecimal.valueOf(Double.valueOf(String.valueOf(value)));
|
}
|
|
@Override
|
public Boolean toBoolean(Object value) throws Exception {
|
if (value == null) {
|
return null;
|
}
|
|
if (value instanceof Integer) {
|
return integerTranslator.toBoolean((Integer)value);
|
}
|
|
if (value instanceof Double) {
|
return doubleTranslator.toBoolean((Double)value);
|
}
|
|
if (value instanceof Float) {
|
return doubleTranslator.toBoolean((Float)value);
|
}
|
|
if (value instanceof Long) {
|
return longTranslator.toBoolean((Long)value);
|
}
|
|
if (value instanceof BigDecimal) {
|
return bigDecimalTranslator.toBoolean((BigDecimal)value);
|
}
|
|
if (value instanceof String) {
|
return stringTranslator.toBoolean((String)value);
|
}
|
|
return stringTranslator.toBoolean(String.valueOf(value));
|
}
|
|
@Override
|
public Date toDate(Object value) throws Exception {
|
if (value == null) {
|
return null;
|
}
|
|
if (value instanceof Integer) {
|
return integerTranslator.toDate((Integer)value);
|
}
|
|
if (value instanceof Double) {
|
return doubleTranslator.toDate((Double)value);
|
}
|
|
if (value instanceof Float) {
|
return doubleTranslator.toDate((Double)value);
|
}
|
|
if (value instanceof Long) {
|
return longTranslator.toDate((Long)value);
|
}
|
|
if (value instanceof BigDecimal) {
|
return bigDecimalTranslator.toDate((BigDecimal)value);
|
}
|
|
if (value instanceof String) {
|
return stringTranslator.toDate((String)value);
|
}
|
|
return stringTranslator.toDate(String.valueOf(value));
|
}
|
|
@Override
|
public Object toTranslatorTypeValue(Object value) throws Exception {
|
return value;
|
}
|
|
@Override
|
public Object loadObjectFrom(String value) throws Exception {
|
if (Util.isEmptyStr(value)) {
|
return null;
|
}
|
|
return value;
|
}
|
|
@Override
|
public Value loadVariantFrom(String value) throws Exception {
|
Object object = loadObjectFrom(value);
|
|
Value variant = new Value();
|
variant.setData(object, ValueType.Void);
|
|
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.Void);
|
return variant;
|
}
|
}
|
|
@Override
|
public Class<?> getDataClass() {
|
return Object.class;
|
}
|
}
|