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

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

import blancostruts.action.AbstractBaseAction;
import blancostruts.sample.base.form.MenuForm;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *	メニュー。
 *	メニューのAbstractAction
 */
public abstract class AbstractMenuAction extends AbstractBaseAction {


	/**
	 *	executeAction メソッド。
	 *	イベントの振り分けを実行。
	 *	
	 *	@param mapping mapping パラメータ。
	 *	@param form form パラメータ。
	 *	@param request request パラメータ。
	 *	@param response response パラメータ。
	 */
	public final ActionForward executeAction(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		ActionForward result = null;
		MenuForm actionForm = (MenuForm) 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);
		
		if(event.equals("load")){
			result = onLoad(mapping, actionForm, request, response);
		} 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 パラメータ。
	 */
	protected abstract void init(ActionMapping mapping, MenuForm form, HttpServletRequest request, HttpServletResponse response) throws Exception;

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