/* $Id: AppOvertimeInBean.java,v 1.6 2005/08/26 04:45:31 ysahara Exp $
*
* Copyright (c)ARGO 21, Corporation. 2005.  All rights reserved.
 * 
 * This file is part of Nautica Workflow.
 * 
 *  Nautica Workflow 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.
 * 
 *  Nautica Workflow 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 Nautica Workflow; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *  
*/
package jp.co.argo21.nautica.workflow.sample.actionform;

import java.sql.Timestamp;
import java.util.Calendar;

import jp.co.argo21.nautica.workflow.sample.model.Application;
import jp.co.argo21.nautica.workflow.sample.model.OvertimeApp;

/**
 * 時間外労働申請のフォームBeanクラス。
 * 
 * @author  ruchida(Argo 21, Corp.)
 * @version $Revision: 1.6 $
 * @since   Nautica Workflow 0.9
 */
public class AppOvertimeInBean extends ApplicationFormInBean {

    /** 勤務日 */
    private String workDayYear;
    private String workDayMonth;
    private String workDayDay;

    /** 開始予定時刻 */
    private String startHour;
    private String startMin;

    /** 終了予定時刻 */
    private String endHour;
    private String endMin;

    /** 予定時間 */
    private String overtimeHours;

    /** 事由 */
    private String reason;

    /** 代休取得予定 */
    private String compDay;
    private String compDayYear;
    private String compDayMonth;
    private String compDayDay;

    /** 備考 */
    private String remark;

    
    /**
     * 勤務日（年）を返す。
     * 
     * @return 勤務日（年）
     */
    public String getWorkDayYear( ) {
        return workDayYear;
    }

    /**
     * 勤務日（年）を設定する。
     * 
     * @param workDayYear 勤務日（年）
     */
    public void setWorkDayYear( String workDayYear ) {
        this.workDayYear = workDayYear;
    }
    
    /**
     * 勤務日（月）を返す。
     * 
     * @return 勤務日（月）
     */
    public String getWorkDayMonth( ) {
        return workDayMonth;
    }

    /**
     * 勤務日（月）を設定する。
     * 
     * @param workDayMonth 勤務日（月）
     */
    public void setWorkDayMonth( String workDayMonth ) {
        this.workDayMonth = workDayMonth;
    }
    
    /**
     * 勤務日（日）を返す。
     * 
     * @return 勤務日（日）
     */
    public String getWorkDayDay( ) {
        return workDayDay;
    }

    /**
     * 勤務日（日）を設定する。
     * 
     * @param workDayDay　勤務日（日）
     */
    public void setWorkDayDay( String workDayDay ) {
        this.workDayDay = workDayDay;
    }
    
    /**
     * 開始予定時刻（時）を返す。
     * 
     * @return 開始予定時刻（時）
     */
    public String getStartHour( ) {
        return startHour;
    }

    /**
     * 開始予定時刻（時）を設定する。
     * 
     * @param startHour　開始予定時刻（時）
     */
    public void setStartHour( String startHour ) {
        this.startHour = startHour;
    }

    /**
     * 開始予定時刻（分）を返す。
     * 
     * @return 開始予定時刻（分）
     */
    public String getStartMin( ) {
        return startMin;
    }

    /**
     * 開始予定時刻（分）を設定する。
     * 
     * @param startMin　開始予定時刻（分）
     */
    public void setStartMin( String startMin ) {
        this.startMin = startMin;
    }
    
    /**
     * 終了予定時刻（時）を返す。
     * 
     * @return 終了予定時刻（時）
     */
    public String getEndHour( ) {
        return endHour;
    }

    /**
     * 終了予定時刻（時）を設定する。
     * 
     * @param endHour 終了予定時刻（時）
     */
    public void setEndHour( String endHour ) {
        this.endHour = endHour;
    }

    /**
     * 終了予定時刻（分）を返す。
     * 
     * @return 終了予定時刻（分）
     */
    public String getEndMin( ) {
        return endMin;
    }

    /**
     * 終了予定時刻（分）を設定する。
     * 
     * @param endMin 終了予定時刻（分）
     */
    public void setEndMin( String endMin ) {
        this.endMin = endMin;
    }

    /**
     * 予定時間を返す。
     * 
     * @return 予定時間
     */
    public String getOvertimeHours( ) {
        return overtimeHours;
    }

    /**
     * 予定時間を設定する。
     * 
     * @param overtimeHours 予定時間
     */
    public void setOvertimeHours( String overtimeHours ) {
        this.overtimeHours = overtimeHours;
    }

    /**
     * 事由を返す。
     * 
     * @return 事由
     */
    public String getReason( ) {
        return reason;
    }

    /**
     * 事由を設定する。
     * 
     * @param reason 事由
     */
    public void setReason( String reason ) {
        this.reason = reason;
    }
    
    /**
     * 代休取得予定を返す。
     * 
	 * @return 代休取得予定
	 */
	public String getCompDay( ) {
        return compDay;
    }

    /**
     * 代休取得予定を設定する。
     * 
	 * @param compDay 代休取得予定
	 */
	public void setCompDay( String compDay ) {
        this.compDay = compDay;
    }
    
    /**
     * 代休取得予定日（年）を返す。
     * 
     * @return 代休取得予定日（年）
     */
    public String getCompDayYear( ) {
        return compDayYear;
    }

    /**
     * 代休取得予定日（年）を設定する。
     * 
     * @param compDayYear 代休取得予定日（年）
     */
    public void setCompDayYear( String compDayYear ) {
        this.compDayYear = compDayYear;
    }

    /**
     * 代休取得予定日（月）を返す。
     * 
     * @return 代休取得予定日（月）
     */
    public String getCompDayMonth( ) {
        return compDayMonth;
    }

    /**
     * 代休取得予定日（月）を設定する。
     * 
     * @param compDayMonth 代休取得予定日（月）
     */
    public void setCompDayMonth( String compDayMonth ) {
        this.compDayMonth = compDayMonth;
    }
    
    /**
     * 代休取得予定日（日）を返す。
     * 
	 * @return 代休取得予定日（日）
	 */
	public String getCompDayDay( ) {
        return compDayDay;
    }

    /**
     * 代休取得予定日（日）を設定する。
     * 
	 * @param compDayDay 代休取得予定日（日）
	 */
	public void setCompDayDay( String compDayDay ) {
        this.compDayDay = compDayDay;
    }

    /**
     * 備考を返す。
     * 
     * @return 備考
     */
    public String getRemark( ) {
        return remark;
    }

    /**
     * 備考を設定する。
     * 
     * @param remark 備考
     */
    public void setRemark( String remark ) {
        this.remark = remark;
    }
    
    /**
     * 時間外労働申請のモデルを返す。
     * 
     * @return 時間外労働申請モデル
     */
    public Application getModel( ) {
       OvertimeApp model = new OvertimeApp();
       
       // 申請日を設定
       model.setDate(new Timestamp(Calendar.getInstance().getTimeInMillis()));
       
       // 勤務日を設定
       Calendar workDay = Calendar.getInstance();
       workDay.set(
               Integer.parseInt(this.getWorkDayYear()),
               Integer.parseInt(this.getWorkDayMonth())-1,
               Integer.parseInt(this.getWorkDayDay())
       );
       Timestamp workDayDate = new Timestamp(workDay.getTime().getTime());
       model.setWorkday(workDayDate);
       
       // 開始予定時刻を設定
       model.setStartHour(Integer.parseInt(this.getStartHour()));
       model.setStartMin(Integer.parseInt(this.getStartMin()));
       
       // 終了予定時刻を設定
       model.setEndHour(Integer.parseInt(this.getEndHour()));
       model.setEndMin(Integer.parseInt(this.getEndMin()));
       
       // 予定時間を設定
       model.setOvertimeHours(Float.parseFloat(this.getOvertimeHours()));
       
       // 事由を設定
       model.setReason(this.getReason());
       
       // 代休取得予定を設定
       String isCompFalse = "false";
       if (isCompFalse.equals(this.getCompDay())) {
           model.setComp(false);
       } else {
           model.setComp(true);
       }       
       Calendar compDay = Calendar.getInstance();
       compDay.set(
               Integer.parseInt(this.getCompDayYear()),
               Integer.parseInt(this.getCompDayMonth())-1,
               Integer.parseInt(this.getCompDayDay())
       );
       Timestamp date = new Timestamp(compDay.getTime().getTime());
       model.setCompDay(date);
       
       // 備考を設定
       model.setRemark(this.getRemark());
       
       return model;
    }
}