#% SelectList avaソースファイル作成用の雛型ファイル
#% 2010/04/22 By S.Ito

#! package
package #package#;
#! start

import jp.oarts.pirka.core.ctrl.SelectList;

/**
 * #nameJp# 選択リストクラス<BR>
 * <BR>
 * 選択リストに含める項目の絞込み、並び順、表示内容などを変更するときはこのクラスの<BR>
 * 派生クラスを作成してください。<BR>
 * 　・選択リストに含める項目の絞込み並び順を変更：preSearchメソッドをオーバーライドして<BR>
 * 　　Daoに対して検索条件や並び順を指定してください。
 * 　・表示内容の変更：addSelectListItemメソッドをオーバーライドしてSelectListへ追加する<BR>
 * 　　内容を変更してください。<BR>
 * <BR>
 *
 * @author
 *
 */
public class #className# implements SelectListIF, RecordAction {

	/** 選択リスト */
	SelectList selectList = null;


	/**
	 * 選択リストを取得する
	 *
	 * @return 選択リスト
	 */
	public SelectList getSelectList(){

		selectList = new SelectList();

		getSelectListMain();

		SelectList ret = selectList;
		selectList = null;

		return ret;
	}

	/**
	 * 空白項目入りの選択リストを取得する
	 *
	 * @return 選択リスト
	 */
	public SelectList getSelectListAddSpaceItem(){
		selectList = new SelectList();

		selectList.add("", "");
		getSelectListMain();

		SelectList ret = selectList;
		selectList = null;

		return ret;
	}

	/**
	 * 選択リストを取得メイン処理
	 */
	protected void getSelectListMain(){

		try{
			// DAO作成
			#daoClassName# dao = new #daoClassName#();

			// 検索前処理
			preSearch(dao);

			// 検索処理
			dao.search(this);

			// 検索後処理
			selectList = afterSearch(selectList);
		}catch(Exception e){
			throw new RuntimeException(e);
		}
	}

	/**
	 * 選択リストをデータベースより取得する直前にDAOに対して<BR>
	 * 検索条件や並び順を設定するときはこのメソッドをオーバーライドして<BR>
	 * 行ってください。<BR>
	 * また、選択リストに未選択項目が必要なときはここでSelectListに未選択項目を追加してください。<BR>
	 *
	 * @param dao
	 *            DAOオブジェクト
	 */
	protected void preSearch(DaoBase dao) {
		// 何もしない
	}

	/**
	 * 検索して取得した1レコードより選択リストの1アイテム作成し選択リストに追加します。<BR>
	 * 表示される選択リストを編集したいときなどはこのメソッドをオーバーライドして<BR>
	 * 編集処理を行ってください。<BR>
	 *
	 * @param dao
	 *            DAOオブジェクト
	 */
	protected void addSelectListItem(#voClassName# record) {
		String optionValue = DaoBase.changeString(record.#getterValue#());
		String sendValue = DaoBase.changeString(record.#getterKey#());

		if(optionValue == null && sendValue == null){
			selectList.add("");
		} else if(optionValue == null && sendValue != null){
			selectList.add(sendValue);
		} else if(optionValue != null && sendValue == null){
			selectList.add(optionValue);
		}
		selectList.add(optionValue, sendValue);
	}

	/**
	 * データベースより取得した選択リストに対して何らかの処理を行いたいときは<BR>
	 * このメソッドをオーバーライドしてください。
	 *
	 * @param selectList
	 *            選択リスト
	 * @return 何らかの処理がなされた選択リスト
	 */
	protected SelectList afterSearch(SelectList selectList) {
		// デフォルトは何も行わない
		return selectList;
	}

	@Override
	public void initAction() throws Exception {
	}

	@Override
	public void action(Object record) throws Exception {
		addSelectListItem((#voClassName#) record);
	}

	@Override
	public void closeAction() throws Exception {

	}
}
#% SelectListIF Javaソースファイル作成用
#! common package
package #package#;
#! common start

import jp.oarts.pirka.core.ctrl.SelectList;

/**
 * セレクトリストインターフェース
 *
 */
public interface SelectListIF {

	/**
	 * セレクトリストの取得
	 *
	 * @return SelectListオブジェクト
	 * @throws Exception
	 */
	public SelectList getSelectList() throws Exception;
}
