Package er.ajax.example2.util

Source Code of er.ajax.example2.util.Day

package er.ajax.example2.util;

import java.util.Calendar;
import java.util.Date;

import com.webobjects.eocontrol.EOQualifier;
import com.webobjects.foundation.NSTimestamp;

public class Day implements Comparable {
  private int myDayYear;
  private int myDayMonth;
  private int myDay;
  private NSTimestamp myStartDate;
  private NSTimestamp myEndDate;

  public Day(int _year, int _month, int _day) {
    myDayYear = _year;
    myDayMonth = _month;
    myDay = _day;
    myStartDate = DateUtils.timestamp(_year, _month, _day, 0, 0, 0, 0);
    myEndDate = DateUtils.timestamp(_year, _month, _day, 23, 59, 59, 999);
  }

  public Day(NSTimestamp timestamp) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(timestamp);

    myStartDate = DateUtils.timestamp(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0, 0);
    myEndDate = DateUtils.timestamp(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH), 23, 59, 59, 999);
    myDayYear = cal.get(Calendar.YEAR);
    myDayMonth = cal.get(Calendar.MONTH) + 1;
    myDay = cal.get(Calendar.DAY_OF_MONTH);
  }

  @Override
  public int hashCode() {
    return myDayYear * 10000 + myDayMonth * 100 + myDay;
  }

  @Override
  public boolean equals(Object _obj) {
    boolean equals = (_obj instanceof Day);
    if (equals) {
      Day otherDay = (Day) _obj;
      equals = otherDay.myDayYear == myDayYear && otherDay.myDayMonth == myDayMonth && otherDay.myDay == myDay;
    }
    return equals;
  }

  public int year() {
    return myDayYear;
  }

  public int month() {
    return myDayMonth;
  }
 
  public Month monthObject() {
    return new Month(myDayMonth, myDayYear);
  }

  public int day() {
    return myDay;
  }

  public Day next() {
    Calendar dayCal = endCalendar();
    dayCal.add(Calendar.HOUR, 12);
    return Day.day(dayCal);
  }

  public Day previous() {
    Calendar dayCal = startCalendar();
    dayCal.add(Calendar.HOUR, -12);
    return Day.day(dayCal);
  }

  public boolean today() {
    Calendar now = Calendar.getInstance();
    boolean today = myDayYear == now.get(Calendar.YEAR) && myDayMonth == (now.get(Calendar.MONTH) + 1) && myDay == now.get(Calendar.DAY_OF_MONTH);
    return today;
  }

  public boolean weekend() {
    Calendar cal = Calendar.getInstance();
    cal.setTime(myStartDate);
    int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
    boolean weekend = (dayOfWeek == Calendar.SUNDAY || dayOfWeek == Calendar.SATURDAY);
    return weekend;
  }

  public Calendar startCalendar() {
    Calendar cal = Calendar.getInstance();
    cal.setTime(myStartDate);
    return cal;
  }

  public NSTimestamp startDate() {
    return myStartDate;
  }

  public NSTimestamp now() {
    Calendar nowCalendar = Calendar.getInstance();
    Calendar cal = Calendar.getInstance();
    cal.setTime(myStartDate);
    cal.set(Calendar.HOUR_OF_DAY, nowCalendar.get(Calendar.HOUR_OF_DAY));
    cal.set(Calendar.MINUTE, nowCalendar.get(Calendar.MINUTE));
    NSTimestamp now = new NSTimestamp(cal.getTime());
    return now;
  }

  public NSTimestamp endDate() {
    return myEndDate;
  }

  /**
   * Returns the timestamp representing 9am on this day.
   *
   * @return the timestamp representing 9am on this day
   */
  public NSTimestamp workStartDate() {
    Calendar cal = Calendar.getInstance();
    cal.setTime(myStartDate);
    cal.set(Calendar.HOUR_OF_DAY, 9);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    NSTimestamp workStart = new NSTimestamp(cal.getTime());
    return workStart;
  }

  /**
   * Returns the timestamp representing 6pm on this day.
   *
   * @return the timestamp representing 6pm on this day
   */
  public NSTimestamp workEndDate() {
    Calendar cal = Calendar.getInstance();
    cal.setTime(myEndDate);
    cal.set(Calendar.HOUR_OF_DAY, 18);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    NSTimestamp workEnd = new NSTimestamp(cal.getTime());
    return workEnd;
  }

  public Calendar endCalendar() {
    Calendar cal = Calendar.getInstance();
    cal.setTime(myEndDate);
    return cal;
  }

  public Day monthsAgo(int months) {
    Calendar cal = startCalendar();
    cal.add(Calendar.MONTH, -1 * months);
    return new Day(new NSTimestamp(cal.getTime()));
  }

  public Day monthsFromNow(int months) {
    Calendar cal = startCalendar();
    cal.add(Calendar.MONTH, months);
    return new Day(new NSTimestamp(cal.getTime()));
  }

  public Day yearsAgo(int years) {
    Calendar cal = startCalendar();
    cal.add(Calendar.YEAR, -1 * years);
    return new Day(new NSTimestamp(cal.getTime()));
  }

  public Day yearsFromNow(int years) {
    Calendar cal = startCalendar();
    cal.add(Calendar.YEAR, 1 * years);
    return new Day(new NSTimestamp(cal.getTime()));
  }

  public Day daysAgo(int days) {
    Calendar cal = startCalendar();
    cal.add(Calendar.DATE, -1 * days);
    return new Day(new NSTimestamp(cal.getTime()));
  }

  public Day daysFromNow(int days) {
    Calendar cal = startCalendar();
    cal.add(Calendar.DATE, days);
    return new Day(new NSTimestamp(cal.getTime()));
  }
   
  /**
   * Returns a qualifier that encompasses this day.
   *
   * @param key the key name to qualify on
   * @return the day qualifier
   */
  public EOQualifier qualifier(String key) {
    return DateUtils.keypathWithinDateRangeQualifier(key, startDate(), endDate());
  }
 
  /**
   * Returns a qualifier that encompasses this working day.
   *
   * @param key the key name to qualify on
   * @return the working day qualifier
   */
  public EOQualifier workQualifier(String key) {
    return DateUtils.keypathWithinDateRangeQualifier(key, workStartDate(), workEndDate());
  }

  public Day weeksAgo(int weeks) {
    int days  = weeks * 7;
    Calendar cal = startCalendar();
    cal.add(Calendar.DATE, -1 * days);
    return new Day(new NSTimestamp(cal.getTime()));
  }

  public Day weeksFromNow(int weeks) {
    int days = weeks * 7;
    Calendar cal = startCalendar();
    cal.add(Calendar.DATE, days);
    return new Day(new NSTimestamp(cal.getTime()));
  }

  public boolean before(Day day) {
    return startDate().before(day.startDate());
  }

  public boolean after(Day day) {
    return endDate().after(day.endDate());
  }
 
  @Override
  public String toString() {
    return "[Day: " + myDayYear + "/" + myDayMonth + "/" + myDay + "]";
  }

  public static Day todayDay() {
    return Day.day(Calendar.getInstance());
  }

  public static Day day(Date _date) {
    if (_date == null) {
      throw new IllegalArgumentException("You must provide a date.");
    }
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(_date);
    return Day.day(calendar);
  }

  public static Day day(Calendar _calendar) {
    Day today = new Day(_calendar.get(Calendar.YEAR), _calendar.get(Calendar.MONTH) + 1, _calendar.get(Calendar.DAY_OF_MONTH));
    return today;
  }

  public int compareTo(Object o) {
    Day day = (Day) o;
    if (myDayYear == day.myDayYear) {
      if (myDayMonth == day.myDayMonth) {
        if (myDay == day.myDay) {
          return 0;
        } else if (myDay > day.myDay) {
          return 1;
        } else if (myDay < day.myDay) {
          return -1;
        } else {
          throw new IllegalStateException("Invalid comparison state.");
        }
      } else if (myDayMonth > day.myDayMonth) {
        return 1;
      } else if (myDayMonth < day.myDayMonth) {
        return -1;
      } else {
        throw new IllegalStateException("Invalid comparison state.");
      }
    } else if (myDayYear > day.myDayYear) {
      return 1;
    } else if (myDayYear < day.myDayYear) {
      return -1;
    } else {
      throw new IllegalStateException("Invalid comparison state.");
    }
  }
}
TOP

Related Classes of er.ajax.example2.util.Day

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.