/*
 * This code is generated by blanco Framework.
 */
package blancostruts.sample.base.abstractaction;

import java.sql.Connection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import blancostruts.action.AbstractDbAction;
import blancostruts.sample.base.form.UserSelectForm;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *	ユーザ選択。
 *	ユーザ選択のAbstractAction
 */
public abstract class AbstractUserSelectAction extends AbstractDbAction {


	/**
	 *	executeDbAction メソッド。
	 *	イベントの振り分けを実行。
	 *	
	 *	@param mapping mapping パラメータ。
	 *	@param form form パラメータ。
	 *	@param request request パラメータ。
	 *	@param response response パラメータ。
	 *	@param connection connection パラメータ。
	 */
	public final ActionForward executeDbAction(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, Connection connection) throws Exception {
		ActionForward result = null;
		UserSelectForm actionForm = (UserSelectForm) form;
		
		String event = request.getParameter("eventId");
		if(event == null || event.equals("")){
			event = (String) request.getAttribute("eventId");
		}
		if(event == null || event.equals("")){
			String message = "イベントIDがUIから渡されませんでした。";
			throw new Exception(message);
		}
		
		init(mapping, actionForm, request, response, connection);
		
		if(event.equals("load")){
			result = onLoad(mapping, actionForm, request, response, connection);
		} else if(event.equals("search")){
			result = onClickSearch(mapping, actionForm, request, response, connection);
		} else if(event.equals("add")){
			result = onClickAdd(mapping, actionForm, request, response, connection);
		} else if(event.equals("update")){
			result = onClickUpdate(mapping, actionForm, request, response, connection);
		} else if(event.equals("delete")){
			result = onClickDelete(mapping, actionForm, request, response, connection);
		} else if(event.equals("userCode")){
			result = onClickUserCode(mapping, actionForm, request, response, connection);
		} else if(event.equals("logout")){
			result = onClickLogout(mapping, actionForm, request, response, connection);
		} else {
			String message = "不正なイベントIDがUIから渡されました。イベントID:";
			message += event;
			throw new Exception(message);
		}
		return result;
	}

	/**
	 *	初期化イベントメソッド。
	 *	サブクラスで実装される。
	 *	
	 *	@param mapping mapping パラメータ。
	 *	@param form form パラメータ。
	 *	@param request request パラメータ。
	 *	@param response response パラメータ。
	 *	@param connection connection パラメータ。
	 */
	protected abstract void init(ActionMapping mapping, UserSelectForm form, HttpServletRequest request, HttpServletResponse response, Connection connection) throws Exception;

	/**
	 *	ロードイベントメソッド。
	 *	サブクラスで実装される。
	 *	
	 *	@param mapping mapping パラメータ。
	 *	@param form form パラメータ。
	 *	@param request request パラメータ。
	 *	@param response response パラメータ。
	 *	@param connection connection パラメータ。
	 */
	protected abstract ActionForward onLoad(ActionMapping mapping, UserSelectForm form, HttpServletRequest request, HttpServletResponse response, Connection connection) throws Exception;

	/**
	 *	検索ボタンイベントメソッド。
	 *	サブクラスで実装される。
	 *	
	 *	@param mapping mapping パラメータ。
	 *	@param form form パラメータ。
	 *	@param request request パラメータ。
	 *	@param response response パラメータ。
	 *	@param connection connection パラメータ。
	 */
	protected abstract ActionForward onClickSearch(ActionMapping mapping, UserSelectForm form, HttpServletRequest request, HttpServletResponse response, Connection connection) throws Exception;

	/**
	 *	追加イベントメソッド。
	 *	サブクラスで実装される。
	 *	
	 *	@param mapping mapping パラメータ。
	 *	@param form form パラメータ。
	 *	@param request request パラメータ。
	 *	@param response response パラメータ。
	 *	@param connection connection パラメータ。
	 */
	protected abstract ActionForward onClickAdd(ActionMapping mapping, UserSelectForm form, HttpServletRequest request, HttpServletResponse response, Connection connection) throws Exception;

	/**
	 *	更新イベントメソッド。
	 *	サブクラスで実装される。
	 *	
	 *	@param mapping mapping パラメータ。
	 *	@param form form パラメータ。
	 *	@param request request パラメータ。
	 *	@param response response パラメータ。
	 *	@param connection connection パラメータ。
	 */
	protected abstract ActionForward onClickUpdate(ActionMapping mapping, UserSelectForm form, HttpServletRequest request, HttpServletResponse response, Connection connection) throws Exception;

	/**
	 *	削除イベントメソッド。
	 *	サブクラスで実装される。
	 *	
	 *	@param mapping mapping パラメータ。
	 *	@param form form パラメータ。
	 *	@param request request パラメータ。
	 *	@param response response パラメータ。
	 *	@param connection connection パラメータ。
	 */
	protected abstract ActionForward onClickDelete(ActionMapping mapping, UserSelectForm form, HttpServletRequest request, HttpServletResponse response, Connection connection) throws Exception;

	/**
	 *	ユーザコードイベントメソッド。
	 *	サブクラスで実装される。
	 *	
	 *	@param mapping mapping パラメータ。
	 *	@param form form パラメータ。
	 *	@param request request パラメータ。
	 *	@param response response パラメータ。
	 *	@param connection connection パラメータ。
	 */
	protected abstract ActionForward onClickUserCode(ActionMapping mapping, UserSelectForm form, HttpServletRequest request, HttpServletResponse response, Connection connection) throws Exception;

	/**
	 *	ログアウトイベントメソッド。
	 *	サブクラスで実装される。
	 *	
	 *	@param mapping mapping パラメータ。
	 *	@param form form パラメータ。
	 *	@param request request パラメータ。
	 *	@param response response パラメータ。
	 *	@param connection connection パラメータ。
	 */
	protected abstract ActionForward onClickLogout(ActionMapping mapping, UserSelectForm form, HttpServletRequest request, HttpServletResponse response, Connection connection) throws Exception;
}
