/*
* Aipo is a groupware program developed by TOWN, Inc.
* Copyright (C) 2004-2015 TOWN, Inc.
* http://www.aipo.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.aimluck.eip.timecard;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import com.aimluck.commons.field.ALDateTimeField;
import com.aimluck.commons.field.ALNumberField;
import com.aimluck.commons.field.ALStringField;
import com.aimluck.commons.utils.ALDateUtil;
import com.aimluck.eip.common.ALData;
/**
* タイムカードのResultDataです。
*
*/
public class TimecardResultData implements ALData {
/** 現在時刻 */
private ALStringField now_time;
/** 出勤フラグ */
private ALStringField work_flag;
/** 勤務時刻 */
private ALDateTimeField work_date;
/** 修正フラグ */
private ALStringField refix_flag;
/** 一覧の日付 */
private ALStringField list_date;
/** 理由 */
private ALStringField reason;
/** タイムカードのID */
private ALStringField timecard_id;
/** ある一日の合計勤務時間 */
private ALNumberField sum_work_date;
/** 勤務開始時間 */
private ALDateTimeField start_work_date;
/**
*
*/
public void initField() {
work_flag = new ALStringField();
now_time = new ALStringField();
work_date = new ALDateTimeField();
refix_flag = new ALStringField();
list_date = new ALStringField();
timecard_id = new ALStringField();
reason = new ALStringField();
sum_work_date = new ALNumberField();
start_work_date = new ALDateTimeField("yyyy-MM-dd");
}
/**
* @return
*/
public void setWorkFlag(String flag) {
work_flag.setValue(flag);
}
/**
* @param i
*/
public void setNowTime(String time) {
now_time.setValue(time);
}
/**
* @param i
*/
public void setWorkDate(Date date) {
work_date.setValue(date);
list_date.setValue(ALDateUtil.format(date, "MM月dd日"));
}
/**
* @param i
*/
public void setRefixFlag(Date create_date, Date update_date) {
if (equalsToDate(create_date, update_date, true)) {
refix_flag.setValue("0");
} else {
refix_flag.setValue("1");
}
}
/**
* @return
*/
public void setTimecardId(long i) {
timecard_id.setValue(Long.valueOf(i).toString());
}
/**
* @param i
*/
public void setReason(String str_reason) {
reason.setValue(str_reason);
}
/**
* @param i
*/
public void setStartWorkDate(Date date_start_work_date) {
start_work_date.setValue(date_start_work_date);
}
/**
*
* @return
*/
public void addSumWorkDate() {
long count = sum_work_date.getValue();
sum_work_date.setValue(count + 1);
}
/**
* @return
*/
public ALNumberField getSumWorkDate() {
return sum_work_date;
}
/**
* @return
*/
public ALDateTimeField getStartWorkDate() {
return start_work_date;
}
/**
* @return
*/
public ALStringField getWorkFlag() {
return work_flag;
}
/**
*
*/
public ALStringField getNowTime() {
return now_time;
}
/**
*
*/
public ALDateTimeField getWorkDate() {
return work_date;
}
public String getWorkDateStr() {
SimpleDateFormat sdf = new SimpleDateFormat("HH時mm分");
return sdf.format(work_date.getValue());
}
/**
*
*/
public ALStringField getRefixFlag() {
return refix_flag;
}
/**
*
*/
public ALStringField getListDate() {
return list_date;
}
/**
*
*/
public ALStringField getTimecardId() {
return timecard_id;
}
/**
*
*/
public ALStringField getReason() {
return reason;
}
/**
* 指定した2つの日付を比較する.
*
* @param date1
* @param date2
* @param checkTime
* 時間まで比較する場合,true.
* @return 等しい場合,true.
*/
private boolean equalsToDate(Date date1, Date date2, boolean checkTime) {
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
int date1Year = cal.get(Calendar.YEAR);
int date1Month = cal.get(Calendar.MONTH) + 1;
int date1Day = cal.get(Calendar.DATE);
int date1Hour = cal.get(Calendar.HOUR);
int date1Minute = cal.get(Calendar.MINUTE);
int date1Second = cal.get(Calendar.SECOND);
cal.setTime(date2);
int date2Year = cal.get(Calendar.YEAR);
int date2Month = cal.get(Calendar.MONTH) + 1;
int date2Day = cal.get(Calendar.DATE);
int date2Hour = cal.get(Calendar.HOUR);
int date2Minute = cal.get(Calendar.MINUTE);
int date2Second = cal.get(Calendar.SECOND);
if (checkTime) {
if (date1Year == date2Year
&& date1Month == date2Month
&& date1Day == date2Day
&& date1Hour == date2Hour
&& date1Minute == date2Minute
&& date1Second == date2Second) {
return true;
}
} else {
if (date1Year == date2Year
&& date1Month == date2Month
&& date1Day == date2Day) {
return true;
}
}
return false;
}
}