package org.maachang.util;

import java.net.InetAddress;

/**
 * パラメータ変換処理.
 * 
 * @version 2007/10/18
 * @author masahito suzuki
 * @since MaachangBase 1.00
 */
public class StringByParams {
    /**
     * 指定情報をBoolean値に変換. <BR>
     * <BR>
     * 指定情報をBoolean値に変換します. <BR>
     * 
     * @param o
     *            対象のデータを設定します.
     * @return boolean 変換された内容が返されます.
     */
    public static final boolean getBoolean(Object o) {
        boolean ret = false;
        try {
            String data = (String) o;
            if (data != null && (data = data.trim()).length() > 0) {
                data = data.toLowerCase();
                if (data.equals("true") || data.equals("on")
                        || data.equals("ok")) {
                    ret = true;
                }
            }
        } catch (Exception e) {
            ret = false;
        }
        return ret;
    }

    /**
     * 指定情報をBoolean値に変換. <BR>
     * <BR>
     * 指定情報をBoolean値に変換します. <BR>
     * 
     * @param o
     *            対象のデータを設定します.
     * @return Boolean 変換された内容が返されます.
     */
    public static final Boolean getBooleanObject(Object o) {
        Boolean ret = new Boolean(false);
        try {
            String data = (String) o;
            if (data != null && (data = data.trim()).length() > 0) {
                data = data.toLowerCase();
                if (data.equals("true") || data.equals("on")
                        || data.equals("ok")) {
                    ret = new Boolean(true);
                }
            }
        } catch (Exception e) {
            ret = new Boolean(false);
        }
        return ret;
    }

    /**
     * 指定情報をInt値に変換. <BR>
     * <BR>
     * 指定情報をInt値に変換します. <BR>
     * 
     * @param o
     *            対象のデータを設定します.
     * @return int 変換された内容が返されます.
     */
    public static final int getInt(Object o) {
        int ret = -1;
        try {
            String data = (String) o;
            if (data != null && (data = data.trim()).length() > 0) {
                ret = Integer.parseInt(data);
            }
        } catch (Exception e) {
            ret = -1;
        }
        return ret;
    }

    /**
     * 指定情報をInt値に変換. <BR>
     * <BR>
     * 指定情報をInt値に変換します. <BR>
     * 
     * @param o
     *            対象のデータを設定します.
     * @return Integer 変換された内容が返されます.
     */
    public static final Integer getIntObject(Object o) {
        Integer ret = null;
        try {
            String data = (String) o;
            if (data != null && (data = data.trim()).length() > 0) {
                ret = new Integer(data);
            }
        } catch (Exception e) {
            ret = null;
        }
        return ret;
    }

    /**
     * 指定情報をLong値に変換. <BR>
     * <BR>
     * 指定情報をLong値に変換します. <BR>
     * 
     * @param o
     *            対象のデータを設定します.
     * @return long 変換された内容が返されます.
     */
    public static final long getLong(Object o) {
        long ret = -1L;
        try {
            String data = (String) o;
            if (data != null && (data = data.trim()).length() > 0) {
                ret = Long.parseLong(data);
            }
        } catch (Exception e) {
            ret = -1L;
        }
        return ret;
    }

    /**
     * 指定情報をLong値に変換. <BR>
     * <BR>
     * 指定情報をLong値に変換します. <BR>
     * 
     * @param o
     *            対象のデータを設定します.
     * @return Long 変換された内容が返されます.
     */
    public static final Long getLongObject(Object o) {
        Long ret = null;
        try {
            String data = (String) o;
            if (data != null && (data = data.trim()).length() > 0) {
                ret = new Long(data);
            }
        } catch (Exception e) {
            ret = null;
        }
        return ret;
    }

    /**
     * 指定情報をDouble値に変換. <BR>
     * <BR>
     * 指定情報をDouble値に変換します. <BR>
     * 
     * @param o
     *            対象のデータを設定します.
     * @return double 変換された内容が返されます.
     */
    public static final double getDouble(Object o) {
        double ret = -1.0f;
        try {
            String data = (String) o;
            if (data != null && (data = data.trim()).length() > 0) {
                ret = Double.parseDouble(data);
            }
        } catch (Exception e) {
            ret = -1.0f;
        }
        return ret;
    }

    /**
     * 指定情報をDouble値に変換. <BR>
     * <BR>
     * 指定情報をDouble値に変換します. <BR>
     * 
     * @param o
     *            対象のデータを設定します.
     * @return Double 変換された内容が返されます.
     */
    public static final Double getDoubleObject(Object o) {
        Double ret = null;
        try {
            String data = (String) o;
            if (data != null && (data = data.trim()).length() > 0) {
                ret = new Double(data);
            }
        } catch (Exception e) {
            ret = null;
        }
        return ret;
    }

    /**
     * 指定情報をInetAddressに変換. <BR>
     * <BR>
     * 指定情報をInetAddressに変換します. <BR>
     * 
     * @param o
     *            対象のデータを設定します.
     * @return long 変換された内容が返されます.
     */
    public static final InetAddress getInetAddress(Object o) {
        InetAddress ret = null;
        try {
            String data = (String) o;
            if (data != null && (data = data.trim()).length() > 0) {
                ret = InetAddress.getByName(data);
            }
        } catch (Exception e) {
            ret = null;
        }
        return ret;
    }
}
