package frame.data.convert;

import java.math.BigDecimal;
import java.util.Date;

import frame.data.Variant;
import frame.util.Util;


public class BigDecimalTranslator extends Convertor {

	public Object loadToObject(String value) throws Exception {
		if (Util.isEmptyStr(value)) {
			return null;
		}
		
		return BigDecimal.valueOf(Double.valueOf(value));
	}
	
	public Variant loadToVariant(String value) throws Exception {
		if (value == null) {
			return new Variant();
		}
		
		BigDecimal result = BigDecimal.valueOf(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();
	}

	public Integer toInteger(Object object) throws Exception {
		if (object == null) {
			return 0;
		}

		BigDecimal value = (BigDecimal)object;
		return value.intValue();
	}
	
	@Override
	public String toSchemaString(Object value) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public BigDecimal toBigDecimal(Object object, BigDecimal defaultValue)
			throws Exception {
		BigDecimal bigDecimal = toBigDecimal(object);
			
		return bigDecimal == null ? defaultValue : bigDecimal;
	}

	@Override
	public boolean toBoolean(Object value, boolean defaultValue) throws Exception {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean toDate(Object value, Date defaultValue) throws Exception {
		// TODO Auto-generated method stub
		return false;
	}
	
	@Override
	public Double toDouble(Object object) throws Exception {
		if (object == null) {
			return 0.0;
		}
		
		BigDecimal value = (BigDecimal)object;
		return value.doubleValue();
	}

	public BigDecimal toBigDecimal(Object object) throws Exception {
		if (object == null) {
			return BigDecimal.valueOf(0);
		}
		
		return (BigDecimal)object;
	}
	
	public Boolean toBoolean(Object object) throws Exception {
		BigDecimal value = toBigDecimal(object);
		return !value.equals(0);
	}

	public Date toDate(Object object) throws Exception {
		return null;
	}

	@Override
	public Object toSelfType(Object value) throws Exception {
		return toBigDecimal(value);
	}

	@Override
	public int toInteger(Object value, int defaultValue) throws Exception {
		// TODO Auto-generated method stub
		return 0;
	}



}