//===========================================================================
// 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 BugAssignForm extends ActionForm {
//===========================================================================
// attributes
//===========================================================================
	/**
	 * アクション
	 */
	private String m_action;
	/**
	 * 故障番号
	 */
	private int m_bno;
	/**
	 * 発行者
	 */
	private int m_issuer;
	/**
	 * 承認者
	 */
	private int m_auther;
	/**
	 * 解析者
	 */
	private int m_analyst;
	/**
	 * 修正者
	 */
	private int m_updater;
	/**
	 * 確認者
	 */
	private int m_comfirmer;
	/**
	 * 追加ＣＣユーザ番号（複数）
	 */
	private String[] m_addCcUno = null;
	/**
	 * 削除ＣＣユーザ番号（複数）
	 */
	private String[] m_delCcUno = null;
	/**
	 * CC要求
	 */
	private String m_ccRequest;
	/**
	 * 完了メッセージ
	 */
	private String m_message;
	/**
	 * Log
	 */
	private Log log = LogFactory.getLog(this.getClass().getName());
//===========================================================================
// 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 int getIssuer()
	{
		return m_issuer;
	}
	/**
	 * 発行者のセット
	 * 
	 * @param issuer 発行者
	 */
	public void setIssuer(int issuer)
	{
		m_issuer = issuer;
	}
	/**
	 * 承認者の取得
	 * 
	 * @return 承認者
	 */
	public int getAuther()
	{
		return m_auther;
	}
	/**
	 * 承認者のセット
	 * 
	 * @param auther 承認者
	 */
	public void setAuther(int auther)
	{
		m_auther = auther;
	}
	/**
	 * 解析者の取得
	 * 
	 * @return 解析者
	 */
	public int getAnalyst()
	{
		return m_analyst;
	}
	/**
	 * 解析者のセット
	 * 
	 * @param analyst 解析者
	 */
	public void setAnalyst(int analyst)
	{
		m_analyst = analyst;
	}
	/**
	 * 修正者の取得
	 * 
	 * @return 修正者
	 */
	public int getUpdater()
	{
		return m_updater;
	}
	/**
	 * 修正者のセット
	 * 
	 * @param updater 修正者
	 */
	public void setUpdater(int updater)
	{
		m_updater = updater;
	}
	/**
	 * 確認者の取得
	 * 
	 * @return 確認者
	 */
	public int getComfirmer()
	{
		return m_comfirmer;
	}
	/**
	 * 確認者のセット
	 * 
	 * @param comfirmer 確認者
	 */
	public void setComfirmer(int comfirmer)
	{
		m_comfirmer = comfirmer;
	}
	/**
	 * 追加ＣＣユーザ番号の取得
	 * 
	 * @return 追加ＣＣユーザ番号
	 */
	public String[] getAddCcUno()
	{
		return m_addCcUno;
	}
	/**
	 * 追加ＣＣユーザ番号のセット
	 * 
	 * @param addCcUno 追加ＣＣユーザ番号
	 */
	public void setAddCcUno(String[] addCcUno)
	{
		m_addCcUno = addCcUno;
	}
	/**
	 * 削除ＣＣユーザ番号の取得
	 * 
	 * @return 削除ＣＣユーザ番号
	 */
	public String[] getDelCcUno()
	{
		return m_delCcUno;
	}
	/**
	 * 削除ＣＣユーザ番号のセット
	 * 
	 * @param delCcUno 削除ＣＣユーザ番号
	 */
	public void setDelCcUno(String[] delCcUno)
	{
		m_delCcUno = delCcUno;
	}
	/**
	 * cc要求の取得
	 * 
	 * @return cc要求
	 */
	public String getCcRequest()
	{
		return m_ccRequest;
	}
	/**
	 * cc要求のセット
	 * 
	 * @param ccRequest cc要求
	 */
	public void setCcRequest(String ccRequest)
	{
		m_ccRequest = ccRequest;
	}
	/**
	 * 更新メッセージの取得
	 * 
	 * @return 更新メッセージ
	 */
	public String getMessage()
	{
		return m_message;
	}
	/**
	 * 更新メッセージのセット
	 * 
	 * @param message 更新メッセージ
	 */
	public void setMessage(String message)
	{
		m_message = message;
	}
//===========================================================================
// 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_issuer = 0;
		m_auther = 0;
		m_analyst = 0;
		m_updater = 0;
		m_comfirmer = 0;
		m_addCcUno = null;
		m_delCcUno = null;
		m_ccRequest = null;
		m_message = null;
	}
	/**
	* 値の検証(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);
		
		//cc
		//追加要求があった場合
		if (Varidater.isInput(m_ccRequest)) {
			if (m_ccRequest.equals("add")) {
				//debug
				//debug("addCcUno = " + m_addCcUno);
				
				//追加CC必須チェック
				Varidater.checkRequired(m_addCcUno, "addCcUno", errors);
			} else if (m_ccRequest.equals("del")) {
				//debug
				//debug("delCcUno = " + m_delCcUno);
				
				//追加CC必須チェック
				Varidater.checkRequired(m_delCcUno, "delCcUno", errors);
			}
		}
		return errors;
	}
}