/*******************************************************************************
* Copyright (c) 2013 Luigi Sgro. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Luigi Sgro - initial API and implementation
******************************************************************************/
package com.quantcomponents.core.calendar;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.Set;
import java.util.TimeZone;
import com.quantcomponents.core.model.BareDate;
/**
* Configurable implementation of {@link AbstractPeriodicTradingCalendar}
*/
public class PeriodicTradingCalendar extends AbstractPeriodicTradingCalendar implements ITradingCalendar {
private final String name;
private final String description;
private final TimeZone timeZone;
private final String[] exchanges;
private final Boolean includeAfterHours;
private final Set<BareDate> bankHolidays;
private final Map<String, ITradingDay> specialTradingDays;
private final Map<Integer, ITradingDay> weekTradingDays;
private final Calendar calendar = Calendar.getInstance();
private final Date startDate;
private final Date endDate;
public PeriodicTradingCalendar(String name, String description, TimeZone timeZone, String[] exchanges, Boolean includeAfterHours, Set<BareDate> bankHolidays, Map<Integer, ITradingDay> weekTradingDays, Map<String, ITradingDay> specialTradingDays, Date startDate, Date endDate) {
this.name = name;
this.description = description;
this.timeZone = timeZone;
this.exchanges = exchanges;
this.includeAfterHours = includeAfterHours;
this.bankHolidays = bankHolidays;
this.weekTradingDays = weekTradingDays;
this.specialTradingDays = specialTradingDays;
this.startDate = startDate;
this.endDate = endDate;
calendar.setTimeZone(timeZone);
}
@Override
public String getName() {
return name;
}
@Override
public String getDescription() {
return description;
}
@Override
public TimeZone getTimeZone() {
return timeZone;
}
@Override
public Boolean isIncludeAfterHours() {
return includeAfterHours;
}
@Override
public String[] getExchanges() {
return exchanges;
}
@Override
public Date getStartDate() {
return startDate;
}
@Override
public Date getEndDate() {
return endDate;
}
@Override
protected Set<BareDate> getClosingDays() {
return bankHolidays;
}
@Override
protected Map<Integer, ITradingDay> getWeekTradingDays() {
return weekTradingDays;
}
@Override
protected Map<String, ? extends ITradingDay> getSpecialTradingDays() {
return specialTradingDays;
}
}