DayCount of(HolidayCalendar calendar) { return BY_CALENDAR.computeIfAbsent(calendar.getName(), this::createByCalendarName); }
@Override public DayCount lookup(String name) { DayCount value = BY_NAME.get(name); if (value == null) { if (name.regionMatches(true, 0, "Bus/252 ", 0, 8)) { HolidayCalendar cal = HolidayCalendars.of(name.substring(8)); // load from standard calendars String correctName = "Bus/252 " + cal.getName(); DayCount created = new Bus252(correctName, cal); value = BY_NAME.computeIfAbsent(correctName, k -> created); BY_NAME.putIfAbsent(correctName.toUpperCase(Locale.ENGLISH), created); } } return value; }
@VisibleForTesting static ImmutableMap<String, HolidayCalendar> loadFromIni(String filename) { List<ResourceLocator> resources = ResourceConfig.orderedResources(filename); Map<String, HolidayCalendar> map = new HashMap<>(); for (ResourceLocator resource : resources) { try { IniFile ini = IniFile.of(resource.getCharSource()); for (String sectionName : ini.sections()) { PropertySet section = ini.section(sectionName); HolidayCalendar parsed = parseHolidayCalendar(sectionName, section); map.put(parsed.getName(), parsed); map.putIfAbsent(parsed.getName().toUpperCase(Locale.ENGLISH), parsed); } } catch (RuntimeException ex) { log.log(Level.SEVERE, "Error processing resource as Holiday Calendar INI file: " + resource, ex); return ImmutableMap.of(); } } return ImmutableMap.copyOf(map); }
public void test_of_combined() { HolidayCalendar test = HolidayCalendars.of("Thu/Fri+Fri/Sat"); assertEquals(test.getName(), "Fri/Sat+Thu/Fri"); assertEquals(test.toString(), "HolidayCalendar[Fri/Sat+Thu/Fri]"); HolidayCalendar test2 = HolidayCalendars.of("Thu/Fri+Fri/Sat"); assertEquals(test, test2); }
public void test_NO_HOLIDAYS() { HolidayCalendar test = HolidayCalendars.NO_HOLIDAYS; LocalDateUtils.stream(LocalDate.of(2011, 1, 1), LocalDate.of(2015, 1, 31)).forEach(date -> { assertEquals(test.isBusinessDay(date), true); assertEquals(test.isHoliday(date), false); }); assertEquals(test.getName(), "NoHolidays"); assertEquals(test.toString(), "HolidayCalendar[NoHolidays]"); }
public void test_SAT_SUN() { HolidayCalendar test = HolidayCalendars.SAT_SUN; LocalDateUtils.stream(LocalDate.of(2011, 1, 1), LocalDate.of(2015, 1, 31)).forEach(date -> { boolean isBusinessDay = date.getDayOfWeek() != SATURDAY && date.getDayOfWeek() != SUNDAY; assertEquals(test.isBusinessDay(date), isBusinessDay); assertEquals(test.isHoliday(date), !isBusinessDay); }); assertEquals(test.getName(), "Sat/Sun"); assertEquals(test.toString(), "HolidayCalendar[Sat/Sun]"); }
public void test_FRI_SAT() { HolidayCalendar test = HolidayCalendars.FRI_SAT; LocalDateUtils.stream(LocalDate.of(2011, 1, 1), LocalDate.of(2015, 1, 31)).forEach(date -> { boolean isBusinessDay = date.getDayOfWeek() != FRIDAY && date.getDayOfWeek() != SATURDAY; assertEquals(test.isBusinessDay(date), isBusinessDay); assertEquals(test.isHoliday(date), !isBusinessDay); }); assertEquals(test.getName(), "Fri/Sat"); assertEquals(test.toString(), "HolidayCalendar[Fri/Sat]"); }
public void test_THU_FRI() { HolidayCalendar test = HolidayCalendars.THU_FRI; LocalDateUtils.stream(LocalDate.of(2011, 1, 1), LocalDate.of(2015, 1, 31)).forEach(date -> { boolean isBusinessDay = date.getDayOfWeek() != THURSDAY && date.getDayOfWeek() != FRIDAY; assertEquals(test.isBusinessDay(date), isBusinessDay); assertEquals(test.isHoliday(date), !isBusinessDay); }); assertEquals(test.getName(), "Thu/Fri"); assertEquals(test.toString(), "HolidayCalendar[Thu/Fri]"); }
public void test_valid1() { ImmutableMap<String, HolidayCalendar> lookup = HolidayCalendarIniLookup.loadFromIni("HolidayCalendarDataValid1.ini"); assertEquals(lookup.size(), 1); HolidayCalendar test = lookup.get("TEST-VALID"); assertTrue(test.isHoliday(date(2015, 1, 1))); assertTrue(test.isHoliday(date(2015, 1, 6))); assertTrue(test.isHoliday(date(2015, 4, 5))); assertTrue(test.isHoliday(date(2015, 12, 25))); assertTrue(test.isHoliday(date(2016, 1, 1))); assertEquals(test.getName(), "TEST-VALID"); assertEquals(test.toString(), "HolidayCalendar[TEST-VALID]"); }
public void test_valid2() { ImmutableMap<String, HolidayCalendar> lookup = HolidayCalendarIniLookup.loadFromIni("HolidayCalendarDataValid2.ini"); assertEquals(lookup.size(), 1); HolidayCalendar test = lookup.get("TEST-VALID"); assertTrue(test.isHoliday(date(2015, 1, 1))); assertTrue(test.isHoliday(date(2015, 1, 6))); assertTrue(test.isHoliday(date(2015, 4, 5))); assertTrue(test.isHoliday(date(2015, 12, 25))); assertTrue(test.isHoliday(date(2016, 1, 1))); assertEquals(test.getName(), "TEST-VALID"); assertEquals(test.toString(), "HolidayCalendar[TEST-VALID]"); }
public void test_combinedWith() { HolidayCalendar base1 = new MockHolCal(); HolidayCalendar base2 = HolidayCalendars.FRI_SAT; HolidayCalendar test = base1.combinedWith(base2); assertEquals(test.toString(), "HolidayCalendar[Fri/Sat+Mock]"); assertEquals(test.getName(), "Fri/Sat+Mock"); assertEquals(test.equals(base1.combinedWith(base2)), true); assertEquals(test.equals(ANOTHER_TYPE), false); assertEquals(test.equals(null), false); assertEquals(test.hashCode(), base1.combinedWith(base2).hashCode()); assertEquals(test.isHoliday(THU_2014_07_10), false); assertEquals(test.isHoliday(FRI_2014_07_11), true); assertEquals(test.isHoliday(SAT_2014_07_12), true); assertEquals(test.isHoliday(SUN_2014_07_13), true); assertEquals(test.isHoliday(MON_2014_07_14), false); assertEquals(test.isHoliday(TUE_2014_07_15), false); assertEquals(test.isHoliday(WED_2014_07_16), true); assertEquals(test.isHoliday(THU_2014_07_17), false); assertEquals(test.isHoliday(FRI_2014_07_18), true); assertEquals(test.isHoliday(SAT_2014_07_19), true); assertEquals(test.isHoliday(SUN_2014_07_20), true); assertEquals(test.isHoliday(MON_2014_07_21), false); }
public void test_combined_differentStartYear1() { Iterable<LocalDate> holidays1 = Arrays.asList(WED_2015_04_01); ImmutableHolidayCalendar base1 = ImmutableHolidayCalendar.of(TEST_ID, holidays1, SATURDAY, SUNDAY); Iterable<LocalDate> holidays2 = Arrays.asList(MON_2014_07_14, TUE_2015_03_31); ImmutableHolidayCalendar base2 = ImmutableHolidayCalendar.of(TEST_ID2, holidays2, SATURDAY, SUNDAY); HolidayCalendar test = ImmutableHolidayCalendar.combined(base1, base2); assertEquals(test.getName(), "Test1+Test2"); assertEquals(test.isHoliday(THU_2014_07_10), false); assertEquals(test.isHoliday(FRI_2014_07_11), false); assertEquals(test.isHoliday(SAT_2014_07_12), true); assertEquals(test.isHoliday(SUN_2014_07_13), true); assertEquals(test.isHoliday(MON_2014_07_14), true); assertEquals(test.isHoliday(TUE_2014_07_15), false); assertEquals(test.isHoliday(MON_2015_03_30), false); assertEquals(test.isHoliday(TUE_2015_03_31), true); assertEquals(test.isHoliday(WED_2015_04_01), true); assertEquals(test.isHoliday(THU_2015_04_02), false); }
public void test_combined_differentStartYear2() { Iterable<LocalDate> holidays1 = Arrays.asList(MON_2014_07_14, TUE_2015_03_31); ImmutableHolidayCalendar base1 = ImmutableHolidayCalendar.of(TEST_ID, holidays1, SATURDAY, SUNDAY); Iterable<LocalDate> holidays2 = Arrays.asList(WED_2015_04_01); ImmutableHolidayCalendar base2 = ImmutableHolidayCalendar.of(TEST_ID2, holidays2, SATURDAY, SUNDAY); HolidayCalendar test = ImmutableHolidayCalendar.combined(base1, base2); assertEquals(test.getName(), "Test1+Test2"); assertEquals(test.isHoliday(THU_2014_07_10), false); assertEquals(test.isHoliday(FRI_2014_07_11), false); assertEquals(test.isHoliday(SAT_2014_07_12), true); assertEquals(test.isHoliday(SUN_2014_07_13), true); assertEquals(test.isHoliday(MON_2014_07_14), true); assertEquals(test.isHoliday(TUE_2014_07_15), false); assertEquals(test.isHoliday(MON_2015_03_30), false); assertEquals(test.isHoliday(TUE_2015_03_31), true); assertEquals(test.isHoliday(WED_2015_04_01), true); assertEquals(test.isHoliday(THU_2015_04_02), false); }
public void test_combineWith_satSun() { Iterable<LocalDate> holidays = Arrays.asList(WED_2014_07_16); ImmutableHolidayCalendar base = ImmutableHolidayCalendar.of(TEST_ID, holidays, SATURDAY, SUNDAY); HolidayCalendar test = base.combinedWith(HolidayCalendars.FRI_SAT); assertEquals(test.getName(), "Fri/Sat+Test1"); assertEquals(test.isHoliday(THU_2014_07_10), false); assertEquals(test.isHoliday(FRI_2014_07_11), true); assertEquals(test.isHoliday(SAT_2014_07_12), true); assertEquals(test.isHoliday(SUN_2014_07_13), true); assertEquals(test.isHoliday(MON_2014_07_14), false); assertEquals(test.isHoliday(TUE_2014_07_15), false); assertEquals(test.isHoliday(WED_2014_07_16), true); assertEquals(test.isHoliday(THU_2014_07_17), false); assertEquals(test.isHoliday(FRI_2014_07_18), true); assertEquals(test.isHoliday(SAT_2014_07_19), true); assertEquals(test.isHoliday(SUN_2014_07_20), true); assertEquals(test.isHoliday(MON_2014_07_21), false); }
public void test_combinedWith() { Iterable<LocalDate> holidays1 = Arrays.asList(WED_2014_07_16); ImmutableHolidayCalendar base1 = ImmutableHolidayCalendar.of(TEST_ID, holidays1, SATURDAY, SUNDAY); Iterable<LocalDate> holidays2 = Arrays.asList(MON_2014_07_14); ImmutableHolidayCalendar base2 = ImmutableHolidayCalendar.of(TEST_ID2, holidays2, FRIDAY, SATURDAY); HolidayCalendar test = base1.combinedWith(base2); assertEquals(test.getName(), "Test1+Test2"); assertEquals(test.isHoliday(THU_2014_07_10), false); assertEquals(test.isHoliday(FRI_2014_07_11), true); assertEquals(test.isHoliday(SAT_2014_07_12), true); assertEquals(test.isHoliday(SUN_2014_07_13), true); assertEquals(test.isHoliday(MON_2014_07_14), true); assertEquals(test.isHoliday(TUE_2014_07_15), false); assertEquals(test.isHoliday(WED_2014_07_16), true); assertEquals(test.isHoliday(THU_2014_07_17), false); assertEquals(test.isHoliday(FRI_2014_07_18), true); assertEquals(test.isHoliday(SAT_2014_07_19), true); assertEquals(test.isHoliday(SUN_2014_07_20), true); assertEquals(test.isHoliday(MON_2014_07_21), false); }
public void test_combined_splitYears() { Iterable<LocalDate> holidays1 = Arrays.asList(TUE_2018_07_17); ImmutableHolidayCalendar base1 = ImmutableHolidayCalendar.of(TEST_ID, holidays1, SATURDAY, SUNDAY); Iterable<LocalDate> holidays2 = Arrays.asList(WED_2015_04_01); ImmutableHolidayCalendar base2 = ImmutableHolidayCalendar.of(TEST_ID2, holidays2, SATURDAY, SUNDAY); HolidayCalendar test = ImmutableHolidayCalendar.combined(base1, base2); assertEquals(test.getName(), "Test1+Test2"); assertEquals(test.isHoliday(SAT_2014_07_12), true); assertEquals(test.isHoliday(SUN_2014_07_13), true); assertEquals(test.isHoliday(SAT_2015_03_28), true); assertEquals(test.isHoliday(SUN_2015_03_29), true); assertEquals(test.isHoliday(MON_2015_03_30), false); assertEquals(test.isHoliday(TUE_2015_03_31), false); assertEquals(test.isHoliday(WED_2015_04_01), true); assertEquals(test.isHoliday(THU_2015_04_02), false); assertEquals(test.isHoliday(SAT_2018_07_14), true); assertEquals(test.isHoliday(SUN_2018_07_15), true); assertEquals(test.isHoliday(MON_2018_07_16), false); assertEquals(test.isHoliday(TUE_2018_07_17), true); assertEquals(test.isHoliday(WED_2018_07_18), false); }