//===========================================================================
// package
//===========================================================================
package jp.gr.java_conf.bugslife.form;

//===========================================================================
// import
//===========================================================================
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.ValidatorForm;

import java.io.UnsupportedEncodingException;

import jp.gr.java_conf.bugslife.util.*;
/**
 *<PRE>
 * UserEditFormクラス
 *
 *</PRE>
 * @author 鰐川　正寛
 * @version 1.0.0
 */
public class UserEditForm2 extends ValidatorForm {
//===========================================================================
// attributes
//===========================================================================
	/**
	 * アクション
	 */
	private String m_action;
	/**
	 * 役割
	 */
	private int m_role;
	/**
	 * 担当サブシステム
	 */
	private String m_defSubsystem;
	/**
	 * 担当機能
	 */
	private String m_defFunctionName;
	/**
	 * 担当工程
	 */
	private String m_defPno;
	/**
	 * 使用環境
	 */
	private String m_defLocation;
	/**
	 * ユーザ権限
	 */
	private boolean m_userPermission;
	/**
	 * テスター権限
	 */
	private boolean m_testerPermission;
	/**
	 * 開発者権限
	 */
	private boolean m_developerPermission;
	/**
	 * プロジェクト管理者権限
	 */
	private boolean m_projectManagerPermission;
	/**
	 * システム管理者権限
	 */
	private boolean m_systemManagerPermission;
//===========================================================================
// methods
//===========================================================================
	/**
	 * アクションの取得
	 * 
	 * @return アクション
	 */
	public String getAction()
	{
		return m_action;
	}
	/**
	 * アクションのセット
	 * 
	 * @param uid アクション
	 */
	public void setAction(String action)
	{
		m_action = action;
	}
	/**
	 * 役割のセット
	 * 
	 * @param 役割
	 */
	public void setRole(int role) {
		m_role = role;
	}
	/**
	 * 役割の取得
	 * 
	 * @return 役割
	 */
	public int getRole() {
		return m_role;
	}
	/**
	 * 担当サブシステムの取得
	 * 
	 * @return 担当サブシステム
	 */
	public String getDefSubsystem()
	{
		return m_defSubsystem;
	}
	/**
	 * 担当サブシステムのセット
	 * 
	 * @param uid 担当サブシステム
	 */
	public void setDefSubsystem(String defSubsystem)
	{
		m_defSubsystem = defSubsystem;
	}
	/**
	 * 担当機能のセット
	 * 
	 * @param defFunctionName 担当機能
	 */
	public void setDefFunctionName(String defFunctionName) {
		m_defFunctionName = defFunctionName;
	}
	/**
	 * 担当機能の取得
	 * 
	 * @return 担当機能
	 */
	public String getDefFunctionName() {
		return m_defFunctionName;
	}
	/**
	 * 担当工程のセット
	 * 
	 * @param defPno 工程
	 */
	public void setDefPno(String defPno) {
		m_defPno = defPno;
	}
	/**
	 * 工程の取得
	 * 
	 * @return 工程
	 */
	public String getDefPno() {
		return m_defPno;
	}
	/**
	 *  使用環境のセット
	 * 
	 * @param defLocation 使用環境
	 */
	public void setDefLocation(String defLocation) {
		m_defLocation = defLocation;
	}
	/**
	 * 使用環境の取得
	 * 
	 * @return 使用環境
	 */
	public String getDefLocation() {
		return m_defLocation;
	}
	/**
	 * ユーザ権限のセット
	 * 
	 * @param userPermission ユーザ権限
	 */
	public void setUserPermission(boolean userPermission) {
		m_userPermission = userPermission;
	}
	/**
	 * ユーザ権限の取得
	 * 
	 * @return ユーザ権限
	 */
	public boolean getUserPermission() {
		return m_userPermission;
	}
	/**
	 * テスター権限のセット
	 * 
	 * @param testerPermission テスター権限
	 */
	public void setTesterPermission(boolean testerPermission) {
		m_testerPermission = testerPermission;
	}
	/**
	 * テスター権限の取得
	 * 
	 * @return テスター権限
	 */
	public boolean getTesterPermission() {
		return m_testerPermission;
	}
	/**
	 * 開発者権限のセット
	 * 
	 * @param developerPermission 開発者権限
	 */
	public void setDeveloperPermission(boolean developerPermission) {
		m_developerPermission = developerPermission;
	}
	/**
	 * 開発者権限の取得
	 * 
	 * @return 開発者権限
	 */
	public boolean getDeveloperPermission() {
		return m_developerPermission;
	}
	/**
	 * プロジェクト管理者権限のセット
	 * 
	 * @param projectManagerPermission プロジェクト管理者権限
	 */
	public void setProjectManagerPermission(boolean projectManagerPermission) {
		m_projectManagerPermission = projectManagerPermission;
	}
	/**
	 * プロジェクト管理者権限の取得
	 * 
	 * @return プロジェクト管理者権限
	 */
	public boolean getProjectManagerPermission() {
		return m_projectManagerPermission;
	}
	/**
	 * システム管理者権限のセット
	 * 
	 * @param systemManagerPermission システム管理者権限
	 */
	public void setSystemManagerPermission(boolean systemManagerPermission) {
		m_systemManagerPermission = systemManagerPermission;
	}
	/**
	 * システム管理者権限の取得
	 * 
	 * @return システム管理者権限
	 */
	public boolean getSystemManagerPermission() {
		return m_systemManagerPermission;
	}
	public String toString() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("role           : " + m_role + "\n");
		sb.append("defSubsystem   : " + m_defSubsystem + "\n");
		sb.append("defFunctionName: " + m_defFunctionName + "\n");
		sb.append("defPno         : " + m_defPno + "\n");
		sb.append("defLocation    : " + m_defLocation + "\n");
		sb.append("userPm      :"  + m_userPermission + "\n");
		sb.append("testerPm    :"  + m_testerPermission + "\n");
		sb.append("developerPm :"  + m_developerPermission + "\n");
		sb.append("projectManPm:"  + m_projectManagerPermission + "\n");
		sb.append("systemManaPm:"  + m_systemManagerPermission + "\n");
		return new String(sb);
	}
	/**
	 * デバッグ文字出力
	 *
	 * @param s 出力文字列
	 */
	private void debug(String s) {
		System.out.println("[UserEditForm2]" + s);
	}
//===========================================================================
// Public Methods
//===========================================================================
	/**
	* リセット
	*
	* @param mapping The mapping used to select this instance
	* @param request The servlet request we are processing
	*/
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		
		//debug
		debug("reset");
		//encodeing セット
		try {
			request.setCharacterEncoding("SJIS");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		m_role = 0;
		m_defSubsystem = null;
		m_defFunctionName = null;
		m_defPno = null;
		m_defLocation = null;
		m_userPermission = false;
		m_testerPermission = false;
		m_developerPermission = false;
		m_projectManagerPermission = false;
		m_systemManagerPermission = false;
	}
	/**
	* 値の検証(Validate) 
	*
	* @param mapping The mapping used to select this instance
	* @param request The servlet request we are processing
	*/
	public ActionErrors validate(ActionMapping mapping,
								 HttpServletRequest request) {
		ActionErrors errors = new ActionErrors();
	
		debug("validate");
		debug(toString());
		
		
		//permission
		//どれもチェックされていない場合、エラー
//		if ((! m_userPermission) && (! m_testerPermission) && 
//			(! m_developerPermission) && (! m_systemManagerPermission) && (! m_projectManagerPermission)) {
//				
//				Varidater.addErrors(Varidater.REQUIRED_MSG, "permission", errors);	//エラー追加
//		}
		return errors;
	}
}