package com.platform.common.utils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ConverterUtils {
	
	/**
     * <将obj转换为string，如果obj为null则返回defaultVal>
     * 
     * @param obj 需要转换为string的对象
     * @param defaultVal 默认值
     * @return obj转换为string
     */
    public static String parseString(Object obj, String defaultVal){
        return (obj != null) ? obj.toString() : defaultVal;
    }
    /**
     * <将obj转换为string，默认为空>
     * 
     * @param obj 需要转换为string的对象
     * @return 将对象转换为string的字符串
     */
    public static String parseString(Object obj){
        return parseString(obj, "");
    }

    /**
     * <将对象转换为int>
     * 
     * @param obj 需要转换为int的对象
     * @param defaultVal 默认值
     * @return obj转换成的int值
     */
    public static Integer parseInt(Object obj, Integer defaultVal) {
        try
        {
            return (obj != null) ? Integer.parseInt(parseString(obj, "0")) : defaultVal;
        }catch(Exception e)
        {
        }
        return defaultVal;
    }

    /**
     * <将对象转换为int>
     * 
     * @param obj 需要转换为int的对象
     * @param defaultVal 默认值
     * @return obj转换成的int值
     */
    public static Integer parseInt(Object obj)
    {
        return parseInt(obj, 0);
    }

    /**
     * <将对象转换为Integer>
     * 
     * @param obj 需要转换为Integer的对象
     * @return obj转换成的Integer值
     */
    public static Integer parseInteger(Object obj)
    {
        return parseInt(obj, null);
    }

    /**
     * <将对象转换为int>
     * 
     * @param obj 需要转换为int的对象
     * @param defaultVal 默认值
     * @return obj转换成的int值
     */
    public static Float parseFloat(Object obj, float defaultVal)
    {
        return (obj != null) ? Float.parseFloat(parseString(obj, "0")) : defaultVal;
    }

    /**
     * <将对象转换为Float>
     * 
     * @param obj 需要转换为Float的对象
     * @return obj转换成的Float值
     */
    public static Float parseFloat(Object obj)
    {
        return parseFloat(obj, 0);
    }

    /**
     * <将obj转换为long>
     * 
     * @param obj 需要转换的对象
     * @param defaultVal 默认值
     * @return 如果obj为空则返回默认，不为空则返回转换后的long结果
     */
    public static Long parseLong(Object obj, long defaultVal)
    {
        return (obj != null) ? Long.parseLong(parseString(obj)) : defaultVal;
    }

    /**
     * <将obj转换为long>
     * 
     * @param obj 需要转换的对象
     * @return 如果obj为空则返回默认的0l，不为空则返回转换后的long结果
     */
    public static Long parseLong(Object obj)
    {
        return parseLong(obj, 0l);
    }

    /** 
     * 将object转换为double类型，如果出错则返回 defaultVal
     * @param obj 需要转换的对象
     * @param defaultVal 默认值
     * @return 转换后的结果
     */
    public static Double parseDouble(Object obj,Double defaultVal)
    {
        try
        {
            return Double.parseDouble(obj.toString());
        }
        catch(Exception e)
        {
            return defaultVal;
        }
    }

    /** 
     * 将object转换为double类型，如果出错则返回 0d
     * @param obj 需要转换的对象
     * @return 转换后的结果
     */
    public static double parseDouble(Object obj)
    {
        return parseDouble(obj,0d);
    }

    /**
     * <将List<Object>转换为List<Map<String, Object>>>
     * 
     * @param list 需要转换的list
     * @return 转换的结果
     */
    @SuppressWarnings("unchecked")
    public static List<Map<String, Object>> converterForMapList(List<Object> list)
    {
        List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
        for (Object tempObj : list)
        {
            result.add((HashMap<String, Object>)tempObj);
        }
        return result;
    }

}
