/*
 * FlatFileRecord.java
 * Copyright (C) 2008 Cyber Beans Corporation. All rights reserved.
 */
package jp.co.cybec.cb3.accessor.fileaccess.flat;

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

import jp.co.cybec.cb3.exception.DataFormatException;

/**
 * ファイルのレコードを表すインタフェース。
 * @author Jianming Guo
 */
public interface FlatFileRecord {

	/**
	 * 引数<code>key</code>に該当する値をString型で返却します。
	 *
	 * @param key 項目名
	 * @return 項目値
	 */
	String getString(String key);

	/**
	 * 引数<code>key</code>に該当する値をBigDecimal型で返却します。
	 *
	 * @param key 項目名
	 * @return 項目値
	 * @throws DataFormatException データ型の変換に失敗した場合に発生します。
	 */
	BigDecimal getBigDecimal(String key) throws DataFormatException;

	/**
	 * 引数<code>key</code>に該当する値をDouble型で返却します。
	 *
	 * @param key 項目名
	 * @return 項目値
	 * @throws DataFormatException データ型の変換に失敗した場合に発生します。
	 */
	Double getDouble(String key) throws DataFormatException;

	/**
	 * 引数<code>key</code>に該当する値をInteger型で返却します。
	 *
	 * @param key 項目名
	 * @return 項目値
	 * @throws DataFormatException データ型の変換に失敗した場合に発生します。
	 */
	Integer getInteger(String key) throws DataFormatException;

	/**
	 * 引数<code>key</code>に該当する値をLong型で返却します。
	 *
	 * @param key 項目名
	 * @return 項目値
	 * @throws DataFormatException データ型の変換に失敗した場合に発生します。
	 */
	Long getLong(String key) throws DataFormatException;

	/**
	 * 引数<code>key</code>に該当する値をFloat型で返却します。
	 *
	 * @param key 項目名
	 * @return 項目値
	 * @throws DataFormatException データ型の変換に失敗した場合に発生します。
	 */
	Float getFloat(String key) throws DataFormatException;

	/**
	 * 引数<code>key</code>に該当する値をShort型で返却します。
	 *
	 * @param key 項目名
	 * @return 項目値
	 * @throws DataFormatException データ型の変換に失敗した場合に発生します。
	 */
	Short getShort(String key) throws DataFormatException;

	/**
	 * 引数<code>key</code>に該当する値をDate型で返却します。
	 *
	 * @param key 項目名
	 * @return 項目値
	 * @throws DataFormatException データ型の変換に失敗した場合に発生します。
	 */
	Date getDate(String key) throws DataFormatException;

	/**
	 * レコードの内容を<code>Map</code>で返却します。
	 *
	 * @return レコード
	 */
	Map<String, String> toMap();

}
