/*
 * 作成日: 2004/01/05
 *
 */
package openolap.viewer.controller;

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

/**
 * @author Administrator
 *
 */
public class RequestHelper {

	HttpServletRequest request = null;
	HttpServletResponse response = null;
	ServletConfig config = null;

	public RequestHelper (HttpServletRequest request, HttpServletResponse response, ServletConfig config) {
		this.request = request;
		this.response = response;
		this.config = config;
	}

	public Command getCommand(){
	
		Command command = null;

		String action = this.request.getParameter("action");

		// ログイン済みかをチェック
		if ( request.getSession().getAttribute("user") == null) {
			if (!action.equals("login")) {
				return new InvalidateSessionCommand();
			}
		}


		if (action != null){

			// レポート初期表示
			if (action.equals("displayNewReport")) {		//レポート初期表示
				command = new DisplayNewReportCommand();
			} else if (action.equals("getReportHeader")) {	//レポートオブジェクト生成およびヘッダ部生成
				command = new GetReportHeaderCommand();
			} else if(action.equals("loadClientInitAct")){	//レポート情報取得コマンドを取得
				command = new LoadClientInitActCommand();
			} else if (action.equals("getReportInfo")){	//レポート情報(レポート、軸、軸メンバ)
				command = new GetReportInfoCommand();
			} else if (action.equals("renewHtmlAct")) {	//HTMLのBODY部を更新する
				command = new RenewHtmlActCommand();		

			// 色設定
			} else if (action.equals("loadColorAct")){		//色設定コマンドを取得
				command = new LoadColorActCommand();
			} else if (action.equals("getColorInfo")){		//色設定情報を取得
				command = new GetColorInfoCommand(); 

			// レポートへのデータ表示
			} else if (action.equals("loadDataAct")) {		//レポートへのデータ挿入コマンドを取得
															//(初期表示、スライス、ドリルダウン)
				command = new LoadDataActCommand();
			} else if (action.equals("getDataInfo")) {		//レポートのデータの集合を取得
				command = new GetDataInfoCommand();

			// セレクタ
			} else if (action.equals("displaySelecter")) {			//セレクター フレームを表示
				command = new DisplaySelecterCommand();
			} else if (action.equals("displaySelecterHeader")){	//セレクター ヘッダー部を表示
				command = new DisplaySelecterHeaderCommand();
			} else if (action.equals("displaySelecterBody")){		//セレクター ボディー部を表示
				command = new DisplaySelecterBodyCommand();
			} else if (action.equals("getAxisMemberInfoByAxisID")) {// 軸メンバ情報XMLを取得
				command = new GetAxisMemberInfoByAxisIDCommand();				
			} else if (action.equals("registClientReportStatus")){	//クライアント側のレポート情報をサーバー側のモデルに反映（永続化はしない）
				command = new RegistSelecterInfoCommand();
			} else if (action.equals("searchDimensionMember")){	//次元メンバ検索(セレクタ)
				command = new SearchDimensionMemberCommand();

			// レポート保存
			} else if (action.equals("saveClientReportStatus")){	//クライアント側のレポート情報を永続化
				command = new SaveClientReportStatusCommand();

			// ログイン
			} else if (action.equals("login")) {
				command = new LoginCommand();
			
			// ログアウト
			} else if (action.equals("logout")) {	// ログアウト処理を実行
				command = new LogoutCommand();

			// エクスポート
			} else if (action.equals("exportReport")) {
				command = new ExportReportCommand();
			}
			
		}

		return command;
	}

	public HttpServletRequest getRequest() {
		return request;
	}

	public HttpServletResponse getResponse() {
		return response;
	}

	public ServletConfig getConfig() {
		return config;
	}

}
