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 BooleanTranslator extends ITranslator { @Override public String toString(Object value) throws Exception { if (value == null) { return null; } Boolean bool = (Boolean) value; return bool.toString(); } @Override public String toSqlString(Object value) throws Exception { if (value == null) { return "null"; } Boolean bool = (Boolean) value; if (bool) { return "T"; } else { return "F"; } } @Override public String toJSONString(Object value) throws Exception { if (value == null) { return "null"; } Boolean bool = (Boolean) value; return bool.toString(); } @Override public String toSchemaString(Object value) throws Exception { if (value == null) { return ""; } Boolean bool = (Boolean) value; return bool.toString(); } @Override public Integer toInteger(Object object) throws Exception { throw new Exception("can not translate boolean (" + object + ") to Integer"); } @Override public Double toDouble(Object object) throws Exception { throw new Exception("can not translate boolean (" + object + ") to Double"); } @Override public BigDecimal toBigDecimal(Object object) throws Exception { throw new Exception("can not translate boolean (" + object + ") to BigDecimal"); } public Boolean toBoolean(Object object) throws Exception { return Boolean.valueOf(object.toString()); } @Override public Date toDate(Object object) throws Exception { throw new Exception("can not translate boolean (" + object + ") to Date"); } @Override public Object toTranslatorTypeValue(Object value) throws Exception { return (Boolean)value; } @Override public Object loadObjectFrom(String value) throws Exception { if (Util.isEmptyStr(value)) { return null; } value = value.toLowerCase(); if ("t".equals(value)) { return true; } if ("true".equals(value)) { return true; } if ("y".equals(value)) { return true; } if ("yes".equals(value)) { return true; } return false; } @Override public Value loadVariantFrom(String value) throws Exception { Object object = loadObjectFrom(value); Value variant = new Value(); variant.setData(object, ValueType.Boolean); 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.Boolean); return variant; } } @Override public Class getDataClass() { return Boolean.class; } }