/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.master.historicaltimeseries.impl;
import java.util.Iterator;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesInfoDocument;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesInfoSearchRequest;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesInfoSearchResult;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesMaster;
import com.opengamma.master.impl.AbstractSearchIterator;
import com.opengamma.util.ArgumentChecker;
/**
* An iterator that searches a time-series master as an iterator.
* <p>
* Large systems may store a large amount of data in each master.
* A simple search request that pulls back the entire database is unrealistic.
* This remote iterator allows the database to be queried in a consistent way remotely.
*/
public class HistoricalTimeSeriesInfoSearchIterator extends AbstractSearchIterator<HistoricalTimeSeriesInfoDocument, HistoricalTimeSeriesMaster, HistoricalTimeSeriesInfoSearchRequest> {
/**
* Creates an instance based on a request.
* <p>
* The request will be altered during the iteration.
*
* @param master the underlying master, not null
* @param request the request object, not null
* @return an iterable suitable for use in a for-each loop, not null
*/
public static Iterable<HistoricalTimeSeriesInfoDocument> iterable(final HistoricalTimeSeriesMaster master, final HistoricalTimeSeriesInfoSearchRequest request) {
ArgumentChecker.notNull(master, "master");
ArgumentChecker.notNull(request, "request");
return new Iterable<HistoricalTimeSeriesInfoDocument>() {
@Override
public Iterator<HistoricalTimeSeriesInfoDocument> iterator() {
return new HistoricalTimeSeriesInfoSearchIterator(master, request);
}
};
}
/**
* Creates an instance based on a request.
* <p>
* The request will be altered during the iteration.
*
* @param master the underlying master, not null
* @param request the request object, not null
*/
public HistoricalTimeSeriesInfoSearchIterator(HistoricalTimeSeriesMaster master, HistoricalTimeSeriesInfoSearchRequest request) {
super(master, request);
}
//-------------------------------------------------------------------------
@Override
protected HistoricalTimeSeriesInfoSearchResult doSearch(HistoricalTimeSeriesInfoSearchRequest request) {
return getMaster().search(request);
}
}