Some employers provide benefits in the form of holiday time off. This example uses a custom TemporalQuery that will determine if a date is a company observed holiday. Implementing the TemporalQuery interface with the queryFrom(TemporalAccessor) method allows for a way to extract information from a temporal object. The queryFrom method compares the passed-in date against a list of observed company holidays returning true if a match, otherwise false.
Setup public class CompanyHolidayQuery implements TemporalQuery < Boolean > {
static List < MonthDay > COMPANY_HOLIDAYS = Lists . newArrayList (
MonthDay . of ( Month . JANUARY , 1 ), // New Years Day January 1
MonthDay . of ( Month . JANUARY , 20 ), // Martin Luther King, Jr. Day January 20
MonthDay . of ( Month . APRIL , 18 ), // Good Friday April 18
MonthDay . of ( Month . MAY , 26 ), // Memorial Day May 26
MonthDay . of ( Month . JULY , 4 ), // Independence Day July 4**
MonthDay . of ( Month . SEPTEMBER , 1 ), // Labor Day September 1
MonthDay . of ( Month . NOVEMBER , 27 ), // Thanksgiving Day November 27*
MonthDay . of ( Month . NOVEMBER , 28 ), // Day after thanksgiving November 28*
MonthDay . of ( Month . DECEMBER , 25 ), // Christmas December 25***
MonthDay . of ( Month . DECEMBER , 26 ) // Day after xmas December 26***
);
/*
* (non-Javadoc)
* @see java.time.temporal.TemporalQuery#queryFrom(java.time.temporal.TemporalAccessor)
*/
@Override
public Boolean queryFrom ( TemporalAccessor date ) {
MonthDay currentMonthDay = MonthDay . from ( date );
return COMPANY_HOLIDAYS . contains ( currentMonthDay );
}
}
Date a holiday @Test
public void is_date_a_holiday () {
LocalDate date = LocalDate . of ( 2014 , Month . DECEMBER , 25 ); // XMAS
Boolean isHoliday = date . query ( new CompanyHolidayQuery ());
assertTrue ( isHoliday );
}
Date is not a holiday @Test
public void is_not_date_a_holiday () {
LocalDate date = LocalDate . of ( 2014 , Month . NOVEMBER , 22 );
Boolean isHoliday = date . query ( new CompanyHolidayQuery ());
assertFalse ( isHoliday );
}
Company holiday query posted by Justin Musgrove on 07 February 2014
Tagged: java, java-date, and java-date-query
Share on: Facebook Google+
All the code on this page is available on github:
CompanyHolidayQuery.java