package logbook.internal;
import java.util.Calendar;
import java.util.Date;
import logbook.constants.AppConstants;
import org.apache.commons.lang3.time.DateUtils;
/**
* 出撃統計の基準日
*
*/
public enum BattleAggDate {
/**
* 今日
*/
TODAY {
@Override
public Calendar get() {
// 現在時刻から時分秒を切り捨て
return DateUtils.truncate(now(), Calendar.DAY_OF_MONTH);
}
},
/**
* 先週
*/
LAST_WEEK {
@Override
public Calendar get() {
Calendar cal = DateUtils.truncate(now(), Calendar.DAY_OF_MONTH);
cal.add(Calendar.WEEK_OF_YEAR, -1);
return cal;
}
},
/**
* 先月
*/
LAST_MONTH {
@Override
public Calendar get() {
// 日付を1日にして現在時刻から時分秒を切り捨て
Calendar cal = DateUtils.truncate(now(), Calendar.MONTH);
cal.add(Calendar.MONTH, -1);
return cal;
}
};
/**
* @return カレンダーを取得します
*/
public Calendar get() {
throw new AbstractMethodError();
}
/**
* 任務の更新タイミングに合わせたカレンダーを取得します
*
* @return 現在時刻
*/
private static Calendar now() {
return fromDate(new Date());
}
public static Calendar fromDate(Date date) {
// 日々の任務の更新は05:00
Calendar cal = Calendar.getInstance(AppConstants.TIME_ZONE_MISSION);
// 週次の任務の更新は月曜
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setTime(date);
return cal;
}
}