public class FunctionParameter {
    /** PL/SQL関数名 */
    private String m_funcName;    /** 引数の型情報リスト */
    private LinkedList m_typeList;    /** 引数の値リスト */
    private LinkedList m_valueList;    /** コンストラクタ
     *
     * @param funcName 関数名
     */
    public FunctionParameter(String funcName) {
        m_funcName = funcName;
        m_typeList = new LinkedList();
        m_valueList = new LinkedList();
    }    /** 引数の値を追加<br>
     *  int型
     * @param value パラメータ値
     * @return なし
     */
    public void addParameter(int value) {
        Integer type = new Integer(Types.INTEGER);
        Integer intObj = new Integer(value);
        m_typeList.add(type);
        m_valueList.add(intObj);
    }    /** 引数の値を追加<br>
     *  String型
     * @param value パラメータ値
     * @return なし
     */
    public void addParameter(String value) {
        Integer type = new Integer(Types.VARCHAR);
        m_typeList.add(type);
        m_valueList.add(value);
    }    /**
     * 型情報リストと値リストを追加する。
     *
     * @param typeList 型情報リスト
     * @param valueList 値リスト
     * @return なし
     * @throws IllegalArgumentException リストのサイズが違う場合
     */
    public void addParameter(LinkedList typeList, LinkedList valueList) {
        int typeSize = typeList.size();
        int valueSize = valueList.size();
        if (typeSize != valueSize) {
            new IllegalArgumentException("not equal parameter list size");
        }
        for (int i=0; i<typeList.size(); i++) {
            m_typeList.add(typeList.get(i));
            m_valueList.add(valueList.get(i));
        }
    }    /**
     * 関数名を取得する
     *
     * @reuturn 関数名
     */
    public String getFuncName() {
        return m_funcName;
    }    /**
     * 型情報リストを取得する
     *
     * @return 型情報が格納されたリスト
     */
    public LinkedList getTypeList() {
        return m_typeList;
    }    /**
     * 値リストを取得する
     *
     * @return 値が格納されたリスト
     */
    public LinkedList getValueList() {
        return m_valueList;
    }
}