/*
 * MosP - Mind Open Source Project    http://www.mosp.jp/
 * Copyright (C) MIND Co., Ltd.       http://www.e-mind.co.jp/
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
package jp.mosp.common.vo;

import java.util.Properties;

import javax.servlet.http.HttpServletRequest;

import jp.mosp.common.common.BaseVo;
import jp.mosp.common.common.MospConst;
import jp.mosp.common.common.MospException;
import jp.mosp.common.dto.CmAspUserDto;
import jp.mosp.common.dto.CmUserDto;

/**
 * ログイン画面情報を格納する。<br><br>
 * ログイン画面に関するフィールドとそのアクセサメソッドを有する。<br>
 */
public class LoginVo extends BaseVo {
	
	private static final long serialVersionUID = 2337805367775252627L;
	
	/**
	 * パラメータ名(ユーザーID)。
	 */
	public static final String PRM_TXT_USER_ID = "txtUserId";
	
	/**
	 * パラメータ名(パスワード)。
	 */
	public static final String PRM_TXT_PASS = "txtPass";
	
	/**
	 * 項目長(ユーザーIDの最大桁数)。
	 */
	public static final int LEN_USER_ID = MospConst.LEN_USER_ID;
	
	/**
	 * 項目長(パスワードの最大桁数)。
	 */
	public static final int LEN_PASS = MospConst.LEN_PASSWORD;
	
	/**
	 * 項目名称(ユーザーID)。
	 */
	public String NAM_USER_ID;
	
	/**
	 * 項目名称(パスワード)。
	 */
	public String NAM_PASS;
	
	// フィールド
	private String pass;
	
	/**
	 * VOの初期設定を行う。<br>
	 * <ul><li>
	 * {@link BaseVo#BaseVo(Properties, Properties, Properties, String, CmAspUserDto, CmUserDto)}
	 * </li><li>
	 * {@link #needDirectJs}設定(true)<br>
	 * </li><li>
	 * {@link #setViewPath(String)}
	 * </li></ul>
	 * @param cfg     設定ファイル
	 * @param msg     メッセージファイル
	 * @param nam     文言ファイル
	 * @param cmd     コマンド
	 * @param aspUser ASPユーザー
	 * @param user    ユーザー
	 */
	public LoginVo(
			Properties   cfg,
			Properties   msg,
			Properties   nam,
			String       cmd,
			CmAspUserDto aspUser,
			CmUserDto    user
	) {
		super(cfg, msg, nam, cmd, aspUser, user);
		needDirectJs  = true;
		setViewPath(getClassName());
	}
	
	/**
	 * 項目名称を設定する。
	 */
	@Override
	protected void setFieldsName() {
		NAM_USER_ID = getName("C_USER") + getName("C_ID");
		NAM_PASS    = getName("C_PASSWORD");
	}
	
	/**
	 * パラメータを取得、設定する。
	 * @param request リクエスト
	 */
	public void setParams(HttpServletRequest request) {
		setUserId(request.getParameter(PRM_TXT_USER_ID));
		pass = request.getParameter(PRM_TXT_PASS);
	}
	
	/**
	 * 項目の妥当性確認を行う。
	 * @throws MospException
	 */
	public void validate() throws MospException {
		// 妥当性確認開始時処理
		startValidation();
		// 必須確認
		checkRequired(getUserId(), NAM_USER_ID, PRM_TXT_USER_ID);
		checkRequired(pass,        NAM_PASS   , PRM_TXT_PASS   );
		// 文字タイプ確認
		checkCode    (getUserId(), NAM_USER_ID, PRM_TXT_USER_ID);
		checkCode    (pass,        NAM_PASS   , PRM_TXT_PASS   );
		// 文字列長確認
		checkLength  (getUserId(), LEN_USER_ID, NAM_USER_ID, PRM_TXT_USER_ID);
		checkLength  (pass       , LEN_PASS   , NAM_PASS   , PRM_TXT_PASS   );
		// 妥当性確認開始時処理
		endValidation();
	}
	
	/**
	 * パスワードを取得する。
	 * @return パスワード
	 */
	public String getPass() { return pass; }
	
	/**
	 * パスワードを設定する。
	 * @param pass パスワード
	 */
	public void setPass(String pass) { this.pass = pass; }
	
}
