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

//===========================================================================
// import
//===========================================================================
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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 java.io.UnsupportedEncodingException;

import java.util.*;
import java.text.*;

import jp.gr.java_conf.bugslife.util.*;

/**
 *<PRE>
 * Formクラス
 *
 *</PRE>
 * @author 鰐川　正寛
 * @version 1.0.0
 */
public class BugDetail4Form extends ActionForm {
//===========================================================================
// attributes
//===========================================================================
	/**
	 * アクション
	 */
	private String m_action;
	/**
	 * 故障番号
	 */
	private int m_bno;
	/**
	 * 処置内容
	 */
	private String m_addText;
	/**
	 * 修正ソース
	 */
	private String m_updateSrc;
	/**
	 * 修正ドキュメント
	 */
	private String m_updateDoc;
	/**
	 * サブミットタイプ
	 */
	private String m_submitType = DEFAULT_STATUS;
	/**
	 * 要求ステータス状況
	 */
	private String m_requestStatusWhitebord;
	/**
	 * 要求ステータス
	 */
	private String m_requestStatus;
	/**
	 * 修正担当者
	 */
	private String m_requestUpdater;
	/**
	 * 解析担当者
	 */
	private String m_requestAnalyst;
	/**
	 * 担当者
	 */
	private String m_requestAssigne;
	/**
	 * 要求コンポーネントＩＤ
	 */
	private String m_requestCpid = null;
	/**
	 * メール送信要否
	 */
	private boolean m_dontSendMail;
	/**
	 * Log
	 */
	private Log log = LogFactory.getLog(this.getClass().getName());
//===========================================================================
// other attribute
//===========================================================================
	private static final String DEFAULT_STATUS = "resolvedIssuer";
	/**
	 * 提供予定日フォーマット
	 */
	private static final String RELSCH_DATE_FORMAT = Converter.DATE_PATTAN;
	public static final int RELSCH_DATE = Converter.DATE;
//===========================================================================
// methods
//===========================================================================
	/**
	 * アクションの取得
	 * 
	 * @return アクション
	 */
	public String getAction()
	{
		return m_action;
	}
	/**
	 * アクションのセット
	 * 
	 * @param action アクション
	 */
	public void setAction(String action)
	{
		m_action = action;
	}
	/**
	 * 故障番号の取得
	 * 
	 * @return 故障番号
	 */
	public int getBno()
	{
		return m_bno;
	}
	/**
	 * 故障番号のセット
	 * 
	 * @param bno 故障番号
	 */
	public void setBno(int bno)
	{
		m_bno = bno;
	}
	/**
	 * 連絡事項の取得
	 * 
	 * @return 連絡事項
	 */
	public String getAddText()
	{
		return m_addText;
	}
	/**
	 * 連絡事項のセット
	 * 
	 * @param addText 連絡事項
	 */
	public void setAddText(String addText)
	{
		m_addText = addText;
	}
	/**
	 * 修正ソースの取得
	 * 
	 * @return 修正ソース
	 */
	public String getUpdateSrc()
	{
		return m_updateSrc;
	}
	/**
	 * 修正ソースのセット
	 * 
	 * @param updateSrc 修正ソース
	 */
	public void setUpdateSrc(String updateSrc)
	{
		m_updateSrc = updateSrc;
	}
	/**
	 * 修正ドキュメントの取得
	 * 
	 * @return 修正ドキュメント
	 */
	public String getUpdateDoc()
	{
		return m_updateDoc;
	}
	/**
	 * 修正ドキュメントのセット
	 * 
	 * @param updateDoc 修正ドキュメント
	 */
	public void setUpdateDoc(String updateDoc)
	{
		m_updateDoc = updateDoc;
	}
	/**
	 * サブミットタイプの取得
	 * 
	 * @return サブミットタイプ
	 */
	public String getSubmitType()
	{
		return m_submitType;
	}
	/**
	 * サブミットタイプのセット
	 * 
	 * @param submitType サブミットタイプ
	 */
	public void setSubmitType(String submitType)
	{
		m_submitType = submitType;
	}
	/**
	 * 要求ステータス状況の取得
	 * 
	 * @return 要求ステータス状況
	 */
	public String getRequestStatusWhitebord()
	{
		return m_requestStatusWhitebord;
	}
	/**
	 * 要求ステータス状況のセット
	 * 
	 * @param requestStatusWhitebord 要求ステータス状況
	 */
	public void setRequestStatusWhitebord(String requestStatusWhitebord)
	{
		m_requestStatusWhitebord = requestStatusWhitebord;
	}
	/**
	 * 要求ステータスの取得
	 * 
	 * @return 要求ステータス
	 */
	public String getRequestStatus()
	{
		return m_requestStatus;
	}
	/**
	 * 要求ステータスのセット
	 * 
	 * @param requestStatus 要求ステータス
	 */
	public void setRequestStatus(String requestStatus)
	{
		m_requestStatus = requestStatus;
	}
	/**
	 * 修正担当者の取得
	 * 
	 * @return 修正担当者
	 */
	public String getRequestUpdater()
	{
		return m_requestUpdater;
	}
	/**
	 * 修正担当者のセット
	 * 
	 * @param requestUpdater 修正担当者
	 */
	public void setRequestUpdater(String requestUpdater)
	{
		m_requestUpdater = requestUpdater;
	}
	/**
	 * 解析担当者の取得
	 * 
	 * @return 解析担当者
	 */
	public String getRequestAnalyst()
	{
		return m_requestAnalyst;
	}
	/**
	 * 解析担当者のセット
	 * 
	 * @param requestAnalyst 解析担当者
	 */
	public void setRequestAnalyst(String requestAnalyst)
	{
		m_requestAnalyst = requestAnalyst;
	}
	/**
	 * 担当者の取得
	 * 
	 * @return 担当者
	 */
	public String getRequestAssigne()
	{
		return m_requestAssigne;
	}
	/**
	 * 担当者のセット
	 * 
	 * @param requestAssigne 担当者
	 */
	public void setRequestAssigne(String requestAssigne)
	{
		m_requestAssigne = requestAssigne;
	}
	/**
	 * 要求コンポーネントＩＤの取得
	 * 
	 * @return 要求コンポーネントＩＤ
	 */
	public String getRequestCpid()
	{
		return m_requestCpid;
	}
	/**
	 * 要求コンポーネントＩＤのセット
	 * 
	 * @param requestCpid 要求コンポーネントＩＤ
	 */
	public void setRequestCpid(String requestCpid)
	{
		m_requestCpid = requestCpid;
	}
	/**
	 * 送信メール要否の取得
	 * 
	 * @return 送信メール要否
	 */
	public boolean getDontSendMail()
	{
		return m_dontSendMail;
	}
	/**
	 * 送信メール要否のセット
	 * 
	 * @param dontSendMail 送信メール要否
	 */
	public void setDontSendMail(boolean dontSendMail)
	{
		m_dontSendMail = dontSendMail;
	}
//===========================================================================
// 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
		log.debug("reset");
		//encodeing セット
		try {
			request.setCharacterEncoding("SJIS");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		m_action = null;
		m_bno = 0;
		m_addText = null;
		m_updateSrc = null;
		m_updateDoc = null;
		m_submitType = DEFAULT_STATUS;
		m_requestStatusWhitebord = null;
		m_requestStatus = null;
		m_requestAssigne = null;
		m_requestUpdater = null;
		m_requestAnalyst = null;
		m_requestCpid = null;
		m_dontSendMail = 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();
		
		log.debug("validate");
		
		//action
		Varidater.checkRequired(m_action, "action", errors);
		//submitType
		if (Varidater.checkSelected(m_submitType, "submitType", errors)) {
			//タイプ別必須チェック
			if (m_submitType.equals("statusSelect")) {
				//issuDate
				Varidater.checkSelected(m_requestStatus, "requestStatus", errors);
			} else if (m_submitType.equals("statusDispatch")) {
				//requestAssigne
				Varidater.checkSelected(new Integer(m_requestAssigne), "requestAssigne", errors);
			}
		}
		return errors;
	}
}