/*
 * 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.LoginForm;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *	ログイン。
 *	ログインのAbstractAction
 */
public abstract class AbstractLoginAction 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;
		LoginForm actionForm = (LoginForm) 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("login")){
			result = onClickLogin(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, LoginForm 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, LoginForm form, HttpServletRequest request, HttpServletResponse response, Connection connection) throws Exception;

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