class DateUtil {

    static public boolean isPublicHoliday(Date date) {
        final Calendar calendar = GregorianCalendar.getInstance();
        calendar.setTime(date);
        final int day = calendar.get(Calendar.DAY_OF_MONTH);
        final int month = calendar.get(Calendar.MONTH) + 1;
        final int year = calendar.get(Calendar.YEAR);

        String dateStr = String.valueOf(day) + "." + String.valueOf(month);
        String dateStrWithYear = dateStr + "." + String.valueOf(year);
        return FIXED_HOLIDAYS.contains(dateStr) || DYNAMIC_HOLIDAYS.contains(dateStrWithYear);
    }

}

class DateUtilTest {

    @Test
    public void testIsPublicHoliday() throws Exception {

        final Calendar calendar = GregorianCalendar.getInstance();
        calendar.set(2015, 0, 1);
        assertTrue(DateUtil.isPublicHoliday(calendar.getTime()));

        calendar.set(2016, 2, 28); //28 March is "Ostermontag"
        assertTrue(DateUtil.isPublicHoliday(calendar.getTime()));

        calendar.set(2015, 5, 5); // 5 June
        assertFalse(DateUtil.isPublicHoliday(calendar.getTime()));

    }

}