package by.fksis.schedule;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
@SuppressWarnings("deprecation")
public final class Util {
public static int getWeek(Date date) {
Date januaryFirst = new Date(date.getYear(), 0, 1);
return (int) Math.round(Math.ceil((((date.getTime() - januaryFirst.getTime()) / 86400000) + januaryFirst.getDay() + 1) / 7));
}
public static int getLastEnteringYear() {
int year = new GregorianCalendar().get(GregorianCalendar.YEAR);
if (new Date().getMonth() < 8)
year--;
return year;
}
public static int getScheduleWeek(Date date) {
Calendar sep1 = new GregorianCalendar(getLastEnteringYear(), GregorianCalendar.SEPTEMBER, 1);
if (sep1.get(GregorianCalendar.DAY_OF_WEEK) == GregorianCalendar.SUNDAY) {
sep1.add(GregorianCalendar.DAY_OF_YEAR, -7);
}
sep1.add(GregorianCalendar.DAY_OF_YEAR, -sep1.get(GregorianCalendar.DAY_OF_WEEK) + GregorianCalendar.MONDAY);
Calendar now = new GregorianCalendar();
now.setTime(date);
int dWeeks = (int) Math.floor((now.getTime().getTime() - sep1.getTime().getTime()) / 86400000 / 7);
return dWeeks % 4 + 1;
}
public static int getDayOfWeekIndex(Calendar date) {
switch (date.get(Calendar.DAY_OF_WEEK)) {
case Calendar.SUNDAY:
return 6;
case Calendar.MONDAY:
return 0;
case Calendar.TUESDAY:
return 1;
case Calendar.WEDNESDAY:
return 2;
case Calendar.THURSDAY:
return 3;
case Calendar.FRIDAY:
return 4;
case Calendar.SATURDAY:
return 5;
}
return 0;
}
public static <T> T defaultValue(T obj, T def) {
return (obj == null) ? def : obj;
}
}