/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.datasets;
import org.threeten.bp.LocalDate;
import com.opengamma.financial.convention.calendar.MondayToFridayCalendar;
/**
*
*/
public class CalendarGBP extends MondayToFridayCalendar {
/**
* Calendar for Target non-good business days. Only for test purposes, is not accurate enough for production.
*/
private static final long serialVersionUID = 1L;
/**
* Constructor
* @param name The name
*/
public CalendarGBP(final String name) {
super(name);
final int startYear = 2012;
final int endYear = 2063;
for (int loopy = startYear; loopy <= endYear; loopy++) {
addNonWorkingDay(LocalDate.of(loopy, 1, 1));
addNonWorkingDay(LocalDate.of(loopy, 12, 25));
addNonWorkingDay(LocalDate.of(loopy, 12, 26));
}
final LocalDate easter[] = new LocalDate[] {LocalDate.of(2012, 4, 8), LocalDate.of(2013, 3, 31), LocalDate.of(2014, 4, 20), LocalDate.of(2015, 4, 5),
LocalDate.of(2016, 3, 27), LocalDate.of(2017, 4, 16), LocalDate.of(2018, 4, 1), LocalDate.of(2019, 4, 21), LocalDate.of(2020, 4, 12),
LocalDate.of(2021, 4, 4), LocalDate.of(2022, 4, 17), LocalDate.of(2023, 4, 9), LocalDate.of(2024, 3, 31), LocalDate.of(2025, 4, 20),
LocalDate.of(2026, 4, 5), LocalDate.of(2027, 3, 28), LocalDate.of(2028, 4, 16), LocalDate.of(2029, 4, 1), LocalDate.of(2030, 4, 21),
LocalDate.of(2031, 4, 13), LocalDate.of(2032, 3, 28), LocalDate.of(2033, 4, 17), LocalDate.of(2034, 4, 9), LocalDate.of(2035, 3, 25),
LocalDate.of(2036, 4, 13), LocalDate.of(2037, 4, 5), LocalDate.of(2038, 4, 25), LocalDate.of(2039, 4, 10), LocalDate.of(2040, 4, 1),
LocalDate.of(2041, 4, 21), LocalDate.of(2042, 4, 6), LocalDate.of(2043, 3, 29), LocalDate.of(2044, 4, 17), LocalDate.of(2045, 4, 9),
LocalDate.of(2046, 3, 25), LocalDate.of(2047, 4, 14), LocalDate.of(2048, 4, 5), LocalDate.of(2049, 4, 18) };
for (final LocalDate element : easter) {
addNonWorkingDay(element.minusDays(2)); // Easter Friday
addNonWorkingDay(element.plusDays(1)); // Easter Monday
}
//bank holidays (ex. Christmas, new year and Easter)
addNonWorkingDay(LocalDate.of(2012, 5, 7));
addNonWorkingDay(LocalDate.of(2012, 6, 4));
addNonWorkingDay(LocalDate.of(2012, 6, 5));
addNonWorkingDay(LocalDate.of(2012, 8, 27));
addNonWorkingDay(LocalDate.of(2013, 5, 6));
addNonWorkingDay(LocalDate.of(2013, 5, 27));
addNonWorkingDay(LocalDate.of(2013, 8, 26));
addNonWorkingDay(LocalDate.of(2014, 5, 5));
addNonWorkingDay(LocalDate.of(2014, 5, 26));
addNonWorkingDay(LocalDate.of(2014, 8, 25));
addNonWorkingDay(LocalDate.of(2015, 5, 4));
addNonWorkingDay(LocalDate.of(2015, 5, 25));
addNonWorkingDay(LocalDate.of(2015, 8, 31));
addNonWorkingDay(LocalDate.of(2015, 12, 28)); //boxing day
addNonWorkingDay(LocalDate.of(2016, 5, 2));
addNonWorkingDay(LocalDate.of(2016, 5, 30));
addNonWorkingDay(LocalDate.of(2016, 8, 29));
addNonWorkingDay(LocalDate.of(2016, 12, 27)); //Christmas Day (substitute day)
addNonWorkingDay(LocalDate.of(2017, 1, 2));
addNonWorkingDay(LocalDate.of(2017, 5, 1));
addNonWorkingDay(LocalDate.of(2017, 5, 29));
addNonWorkingDay(LocalDate.of(2017, 8, 28));
addNonWorkingDay(LocalDate.of(2018, 5, 7));
addNonWorkingDay(LocalDate.of(2018, 5, 28));
addNonWorkingDay(LocalDate.of(2018, 8, 27));
addNonWorkingDay(LocalDate.of(2019, 5, 6));
addNonWorkingDay(LocalDate.of(2019, 5, 27));
addNonWorkingDay(LocalDate.of(2019, 8, 26));
}
}