/** * Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.timeseries; import com.opengamma.core.change.BasicChangeManager; import com.opengamma.core.change.ChangeEvent; import com.opengamma.core.change.ChangeListener; import com.opengamma.core.change.ChangeManager; import com.opengamma.core.change.ChangeProvider; import com.opengamma.core.change.ChangeType; import com.opengamma.core.historicaltimeseries.HistoricalTimeSeriesSource; import com.opengamma.id.ObjectId; import com.opengamma.util.ArgumentChecker; /** * A {@link ChangeProvider} that translates historical time series changes from a {@link HistoricalTimeSeriesSource} to one common representing changes in any hts. */ public class HistoricalTimeSeriesSourceChangeProvider implements ChangeProvider { /** * Object used for registering changes in HTS */ public static final ObjectId ALL_HISTORICAL_TIME_SERIES = ObjectId.of("OpenGamma", "AllHistoricalTimeSeries"); private final HistoricalTimeSeriesSource _htsSource; public HistoricalTimeSeriesSourceChangeProvider(final HistoricalTimeSeriesSource htsSource) { _htsSource = ArgumentChecker.notNull(htsSource, "htsSource"); } private final BasicChangeManager _changeManager = new BasicChangeManager() { @Override public synchronized void addChangeListener(final ChangeListener listener) { ArgumentChecker.notNull(listener, "listener"); if (getListeners().isEmpty()) { getUnderlying().changeManager().addChangeListener(_changeListener); } super.addChangeListener(listener); } @Override public synchronized void removeChangeListener(final ChangeListener listener) { super.removeChangeListener(listener); if (getListeners().isEmpty()) { getUnderlying().changeManager().removeChangeListener(_changeListener); } } }; private final ChangeListener _changeListener = new ChangeListener() { @Override public void entityChanged(final ChangeEvent event) { _changeManager.entityChanged(ChangeType.CHANGED, ALL_HISTORICAL_TIME_SERIES, event.getVersionFrom(), event.getVersionTo(), event.getVersionInstant()); } }; protected ChangeProvider getUnderlying() { return _htsSource; } @Override public ChangeManager changeManager() { return _changeManager; } }