package org.itscool.commons.connection;

import java.util.HashMap;

/**
 * Transactionの結果を保持するクラスです。<br>
 * このクラスが保持するパラメータ郡はTransactionの
 * 結果によって取得されたパラメータの１レコードに相当します
 * @author KANO
 * @since jdk1.4.1
 * @version 1.00A 2004/11/1
 */
public class Record extends HashMap{
    
    /**
     * パラメータnameで指定されたフィールド値を
     * short型で取得します。
     * @param name フィールド名
     * @return フィールドにセットされた値を返します
     */
    public short getShort(String name){
        short ret = 0;
        if(name ==null || name.length()==0){
            throw new TransactionException("field name is null");
        }
        try{
            String str = (String)get(name.toUpperCase());
            ret = (new Short(str)).shortValue();
        }catch( NumberFormatException nfe ){
            return ret;
        }
        return ret;
    }
    
    /**
     * パラメータnameで指定されたフィールド値を
     * int型で取得します。
     * @param name フィールド名
     * @return フィールドにセットされた値を返します
     */
    public int getInt(String name){
        int ret = 0;
        if(name ==null || name.length()==0){
            throw new TransactionException("field name is null");
        }
        try{
            String str = (String)get(name.toUpperCase());
            ret = (new Integer(str)).intValue();
        }catch( NumberFormatException nfe ){
            return ret;
        }
        return ret;
    }
    
    /**
     * パラメータnameで指定されたフィールド値を
     * long型で取得します。
     * @param name フィールド名
     * @return フィールドにセットされた値を返します
     */
    public long getLong(String name){
        long ret = 0;
        if(name ==null || name.length()==0){
            throw new TransactionException("field name is null");
        }
        try{
            String str = (String)get(name.toUpperCase());
            ret = (new Long(str)).longValue();
        }catch( NumberFormatException nfe ){
            return ret;
        }
        return ret;
    }
    
    /**
     * パラメータnameで指定されたフィールド値を
     * String型で取得します。
     * @param name フィールド名
     * @return フィールドにセットされた値を返します
     */
    public float getFloat(String name){
        float ret = 0;
        if(name ==null || name.length()==0){
            throw new TransactionException("field name is null");
        }
        try{
            String str = (String)get(name.toUpperCase());
            ret = (new Float(str)).longValue();
        }catch( NumberFormatException nfe ){
            return ret;
        }
        return ret;
    }
    
    /**
     * パラメータnameで指定されたフィールド値を
     * double型で取得します。
     * @param name フィールド名
     * @return フィールドにセットされた値を返します
     */
    public double getDouble(String name){
        double ret = 0.0;
        if(name ==null || name.length()==0){
            throw new TransactionException("field name is null");
        }
        try{
            String str = (String)get(name.toUpperCase());
            ret = (new Double(str)).doubleValue();
        }catch( NumberFormatException nfe ){
            return ret;
        }
        return ret;
    }
    
    /**
     * パラメータnameで指定されたフィールド値を
     * String型で取得します。
     * @param name フィールド名
     * @return フィールドにセットされた値を返します
     */
    public String getString(String name){
        if(name ==null || name.length()==0){
            throw new TransactionException("field name is null");
        }
        String ret = (String)get(name.toUpperCase());
        
        return ret;
    }
}
