/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.core.holiday.impl;
import java.net.URI;
import java.util.Collection;
import org.threeten.bp.LocalDate;
import com.opengamma.core.AbstractRemoteSource;
import com.opengamma.core.holiday.Holiday;
import com.opengamma.core.holiday.HolidaySource;
import com.opengamma.core.holiday.HolidayType;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.ObjectId;
import com.opengamma.id.UniqueId;
import com.opengamma.id.VersionCorrection;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.fudgemsg.FudgeBooleanWrapper;
import com.opengamma.util.money.Currency;
/**
* Provides remote access to an {@link HolidaySource}.
*/
public class RemoteHolidaySource extends AbstractRemoteSource<Holiday> implements HolidaySource {
/**
* Creates an instance.
*
* @param baseUri the base target URI for all RESTful web services, not null
*/
public RemoteHolidaySource(final URI baseUri) {
super(baseUri);
}
//-------------------------------------------------------------------------
@Override
public Holiday get(final UniqueId uniqueId) {
ArgumentChecker.notNull(uniqueId, "uniqueId");
URI uri = DataHolidaySourceResource.uriGet(getBaseUri(), uniqueId);
return accessRemote(uri).get(Holiday.class);
}
@Override
public Holiday get(final ObjectId objectId, final VersionCorrection versionCorrection) {
ArgumentChecker.notNull(objectId, "objectId");
ArgumentChecker.notNull(versionCorrection, "versionCorrection");
URI uri = DataHolidaySourceResource.uriGet(getBaseUri(), objectId, versionCorrection);
return accessRemote(uri).get(Holiday.class);
}
@Override
@SuppressWarnings("unchecked")
public Collection<Holiday> get(HolidayType holidayType,
ExternalIdBundle regionOrExchangeIds) {
ArgumentChecker.notNull(holidayType, "holidayType");
ArgumentChecker.notNull(regionOrExchangeIds, "regionOrExchangeIds");
URI uri = DataHolidaySourceResource.uriGet(getBaseUri(), holidayType, regionOrExchangeIds);
return accessRemote(uri).get(Collection.class);
}
@Override
@SuppressWarnings("unchecked")
public Collection<Holiday> get(Currency currency) {
ArgumentChecker.notNull(currency, "currency");
URI uri = DataHolidaySourceResource.uriGet(getBaseUri(), currency);
return accessRemote(uri).get(Collection.class);
}
//-------------------------------------------------------------------------
@Override
public boolean isHoliday(LocalDate dateToCheck, Currency currency) {
ArgumentChecker.notNull(dateToCheck, "dateToCheck");
ArgumentChecker.notNull(currency, "currency");
URI uri = DataHolidaySourceResource.uriSearchCheck(getBaseUri(), dateToCheck, HolidayType.CURRENCY, currency, null);
return accessRemote(uri).get(FudgeBooleanWrapper.class).isValue();
}
@Override
public boolean isHoliday(LocalDate dateToCheck, HolidayType holidayType, ExternalId regionOrExchangeId) {
return isHoliday(dateToCheck, holidayType, ExternalIdBundle.of(regionOrExchangeId));
}
@Override
public boolean isHoliday(LocalDate dateToCheck, HolidayType holidayType, ExternalIdBundle regionOrExchangeIds) {
ArgumentChecker.notNull(dateToCheck, "dateToCheck");
ArgumentChecker.notNull(holidayType, "holidayType");
ArgumentChecker.notNull(regionOrExchangeIds, "regionOrExchangeIds");
URI uri = DataHolidaySourceResource.uriSearchCheck(getBaseUri(), dateToCheck, holidayType, null, regionOrExchangeIds);
return accessRemote(uri).get(FudgeBooleanWrapper.class).isValue();
}
}