/** * Gets the default calendar for a currency. * <p> * This uses data from {@code HolidayCalendarDefaultData.ini} to provide a default. * * @param currency the currency to find the default for * @return the holiday calendar * @throws IllegalArgumentException if there is no default for the currency */ public static HolidayCalendarId defaultByCurrency(Currency currency) { return HolidayCalendarIniLookup.INSTANCE.defaultByCurrency(currency); }
public void test_valid1equals2() { ImmutableMap<String, HolidayCalendar> lookup1 = HolidayCalendarIniLookup.loadFromIni("HolidayCalendarDataValid1.ini"); ImmutableMap<String, HolidayCalendar> lookup2 = HolidayCalendarIniLookup.loadFromIni("HolidayCalendarDataValid2.ini"); assertEquals(lookup1, lookup2); }
private static List<LocalDate> parseYearDates(int year, String str) { List<String> split = Splitter.on(',').splitToList(str); return split.stream() .map(v -> parseDate(year, v)) .collect(toImmutableList()); }
private static HolidayCalendar parseHolidayCalendar(String calendarName, PropertySet section) { String weekendStr = section.value(WEEKEND_KEY); Set<DayOfWeek> weekends = parseWeekends(weekendStr); List<LocalDate> holidays = new ArrayList<>(); for (String key : section.keys()) { if (key.equals(WEEKEND_KEY)) { continue; } String value = section.value(key); if (key.length() == 4) { int year = Integer.parseInt(key); holidays.addAll(parseYearDates(year, value)); } else { holidays.add(LocalDate.parse(key)); } } // build result return ImmutableHolidayCalendar.of(HolidayCalendarId.of(calendarName), holidays, weekends); }
@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 synchronized void test_defaultByCurrency_valid() { ImmutableMap<Currency, HolidayCalendarId> test = HolidayCalendarIniLookup.loadDefaultsFromIni("HolidayCalendarDefaultDataValid.ini"); assertEquals(test.size(), 2); assertEquals(test.get(Currency.GBP), HolidayCalendarIds.GBLO); assertEquals(test.get(Currency.USD), HolidayCalendarIds.NYSE); }
public synchronized void test_invalid1_invalidYear() { List<LogRecord> captured = caputureLog( HolidayCalendarIniLookup.class, () -> HolidayCalendarIniLookup.loadFromIni("HolidayCalendarDataInvalid1.ini")); assertEquals(captured.size(), 1); LogRecord record = captured.get(0); assertEquals(record.getLevel(), Level.SEVERE); assertTrue(record.getThrown().getMessage().contains("Parsed date had incorrect year")); }
public synchronized void test_invalid1_invalidDayOfWeek() { List<LogRecord> captured = caputureLog( HolidayCalendarIniLookup.class, () -> HolidayCalendarIniLookup.loadFromIni("HolidayCalendarDataInvalid2.ini")); assertEquals(captured.size(), 1); LogRecord record = captured.get(0); assertEquals(record.getLevel(), Level.SEVERE); assertTrue(record.getThrown() instanceof DateTimeParseException); assertTrue(record.getThrown().getMessage().contains("'Bob'")); }
public synchronized void test_defaultByCurrency_invalid() { List<LogRecord> captured = caputureLog( HolidayCalendarIniLookup.class, () -> HolidayCalendarIniLookup.loadFromIni("HolidayCalendarDefaultDataInvalid.ini")); assertEquals(captured.size(), 1); LogRecord record = captured.get(0); assertEquals(record.getLevel(), Level.SEVERE); assertTrue(record.getMessage().contains("Error processing resource")); }
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]"); }