## ---------------------------------------------------------------
## Beanクラスの設定
## ---------------------------------------------------------------


package ${propertyList.pkgName}.action;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.List;

import org.itscool.weber.action.Action;
import org.itscool.weber.action.ActionBucket;
import org.itscool.commons.request.GeneralForm;
import ${propertyList.pkgName}.dao.${propertyList.className}Dao;

// ----------------------------------------------------------------
// DB-MAP-TOOLが生成したクラスです
// ----------------------------------------------------------------
/**
 * $propertyList.note
 * @author $propertyList.author
 * 作成日 ${propertyList.date}
*/
public class Search${propertyList.className}Action extends Action {
		
	public String doExecute(ActionBucket bucket) throws Exception{
		${propertyList.className}Dao dao = new ${propertyList.className}Dao();
		
		//主キー項目に該当する情報を取得します
		if( getParameter("submit_primary") != null ){
			//フォームには主キー項目がセットされているものとします
			GeneralForm form = (GeneralForm)bucket.getForm();
			Map searchMap = getSearchMap(form);
			Object bean = dao.findFirstData(searchMap);
			bucket.setAttribute("bean", bean);
		
		//検索条件に合致する情報をリストで取得します
		}else if( getParameter("submit_list") != null ){
			GeneralForm form = (GeneralForm)bucket.getForm();
			Map searchMap = getSearchMap(form);
			List list = dao.findData(searchMap);
			bucket.setAttribute("list", list);
			
		//全データを取得します
		}else{
			List list = dao.getAllData();
			bucket.setAttribute("list", list);
		}
		
		
		return "success";
	}
	
	/**
	 * リクエストパラメータから検索条件を取得します<BR>
	 * リクエストパラメータから検索条件（パラメータ名"select:フィールド名")に合致する
	 * パラメータを取得し、検索条件リストをMap形式で取得します<BR>
	 * @param form リクエストパラメータ
	 * @return Map 検索条件のリストを返します
	 * 
	*/
	public Map getSearchMap(GeneralForm form){
		HashMap searchMap = new HashMap();
		Map gMap = form.getParameters();
		Set keySet = gMap.keySet();
		Iterator it = keySet.iterator();
		while(it.hasNext()){
			String key = (String)it.next();
			String value = (String)gMap.get(key);
			if( key.indexOf("select:") == 0 ){
				key = key.replaceAll("select:", "");
				searchMap.put(key, value);
			}
		}
		return searchMap;
	}

}
