package name.abuchen.portfolio.money.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Holds theExchangeRateTimeSeries time series that are managed by
* {@link ECBExchangeRateProvider}.
*/
/* package */class ECBData
{
private transient boolean isDirty = false;
private long lastModified;
private List<ExchangeRateTimeSeriesImpl> timeSeries = new ArrayList<ExchangeRateTimeSeriesImpl>();
private transient Map<String, ExchangeRateTimeSeriesImpl> currency2series = new HashMap<String, ExchangeRateTimeSeriesImpl>();
public long getLastModified()
{
return lastModified;
}
public void setLastModified(long lastModified)
{
this.lastModified = lastModified;
}
public boolean isDirty()
{
return isDirty;
}
public void setDirty(boolean isDirty)
{
this.isDirty = isDirty;
}
public void addSeries(ExchangeRateTimeSeriesImpl series)
{
// base currency of ECB is always EUR
if (!ECBExchangeRateProvider.EUR.equals(series.getBaseCurrency()))
throw new UnsupportedOperationException();
this.timeSeries.add(series);
this.currency2series.put(series.getTermCurrency(), series);
}
public List<ExchangeRateTimeSeriesImpl> getSeries()
{
return timeSeries;
}
public Map<String, ExchangeRateTimeSeriesImpl> getCurrencyMap()
{
return currency2series;
}
public ECBData copy()
{
ECBData copy = new ECBData();
copy.lastModified = this.lastModified;
for (ExchangeRateTimeSeriesImpl series : timeSeries)
copy.addSeries(new ExchangeRateTimeSeriesImpl(series));
return copy;
}
public void doPostLoadProcessing(ECBExchangeRateProvider provider)
{
currency2series = new HashMap<String, ExchangeRateTimeSeriesImpl>();
for (ExchangeRateTimeSeriesImpl series : timeSeries)
{
series.setProvider(provider);
currency2series.put(series.getTermCurrency(), series);
}
}
}