/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.integration.regression;
import java.util.List;
import com.google.common.base.Function;
import com.opengamma.master.config.ConfigDocument;
import com.opengamma.master.config.ConfigMaster;
import com.opengamma.master.config.ConfigSearchRequest;
import com.opengamma.master.convention.ConventionDocument;
import com.opengamma.master.convention.ConventionMaster;
import com.opengamma.master.convention.ConventionSearchRequest;
import com.opengamma.master.exchange.ExchangeDocument;
import com.opengamma.master.exchange.ExchangeMaster;
import com.opengamma.master.exchange.ExchangeSearchRequest;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesInfoDocument;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesInfoSearchRequest;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesMaster;
import com.opengamma.master.holiday.HolidayDocument;
import com.opengamma.master.holiday.HolidayMaster;
import com.opengamma.master.holiday.HolidaySearchRequest;
import com.opengamma.master.legalentity.LegalEntityDocument;
import com.opengamma.master.legalentity.LegalEntityMaster;
import com.opengamma.master.legalentity.LegalEntitySearchRequest;
import com.opengamma.master.marketdatasnapshot.MarketDataSnapshotDocument;
import com.opengamma.master.marketdatasnapshot.MarketDataSnapshotMaster;
import com.opengamma.master.marketdatasnapshot.MarketDataSnapshotSearchRequest;
import com.opengamma.master.portfolio.PortfolioDocument;
import com.opengamma.master.portfolio.PortfolioMaster;
import com.opengamma.master.portfolio.PortfolioSearchRequest;
import com.opengamma.master.position.PositionDocument;
import com.opengamma.master.position.PositionMaster;
import com.opengamma.master.position.PositionSearchRequest;
import com.opengamma.master.security.SecurityDocument;
import com.opengamma.master.security.SecurityMaster;
import com.opengamma.master.security.SecuritySearchRequest;
/**
* Helper class which holds a set of queries for use in the {@link DatabaseDump} utility.
*/
final class MasterQueryManager {
private final Function<SecurityMaster, ? extends Iterable<SecurityDocument>> _securityQuery;
private final Function<PositionMaster, ? extends Iterable<PositionDocument>> _positionQuery;
private final Function<PortfolioMaster, ? extends Iterable<PortfolioDocument>> _portfolioQuery;
private final Function<ConfigMaster, ? extends Iterable<ConfigDocument>> _configQuery;
private final Function<HistoricalTimeSeriesMaster, ? extends Iterable<HistoricalTimeSeriesInfoDocument>> _htsQuery;
private final Function<HolidayMaster, ? extends Iterable<HolidayDocument>> _holidayQuery;
private final Function<ExchangeMaster, ? extends Iterable<ExchangeDocument>> _exchangeQuery;
private final Function<MarketDataSnapshotMaster, ? extends Iterable<MarketDataSnapshotDocument>> _marketDataSnapshotQuery;
private final Function<LegalEntityMaster, ? extends Iterable<LegalEntityDocument>> _legalEntityQuery;
private final Function<ConventionMaster, ? extends Iterable<ConventionDocument>> _conventionQuery;
public MasterQueryManager(Function<SecurityMaster, ? extends Iterable<SecurityDocument>> securityQuery, Function<PositionMaster, ? extends Iterable<PositionDocument>> positionQuery,
Function<PortfolioMaster, ? extends Iterable<PortfolioDocument>> portfolioQuery, Function<ConfigMaster, ? extends Iterable<ConfigDocument>> configQuery,
Function<HistoricalTimeSeriesMaster, ? extends Iterable<HistoricalTimeSeriesInfoDocument>> htsQuery, Function<HolidayMaster, ? extends Iterable<HolidayDocument>> holidayQuery,
Function<ExchangeMaster, ? extends Iterable<ExchangeDocument>> exchangeQuery, Function<MarketDataSnapshotMaster, ? extends Iterable<MarketDataSnapshotDocument>> marketDataSnapshotQuery,
Function<LegalEntityMaster, ? extends Iterable<LegalEntityDocument>> legalEntityQuery,
Function<ConventionMaster, ? extends Iterable<ConventionDocument>> conventionQuery) {
super();
_securityQuery = securityQuery;
_positionQuery = positionQuery;
_portfolioQuery = portfolioQuery;
_configQuery = configQuery;
_htsQuery = htsQuery;
_holidayQuery = holidayQuery;
_exchangeQuery = exchangeQuery;
_marketDataSnapshotQuery = marketDataSnapshotQuery;
_legalEntityQuery = legalEntityQuery;
_conventionQuery = conventionQuery;
}
public Function<SecurityMaster, ? extends Iterable<SecurityDocument>> getSecurityQuery() {
return _securityQuery;
}
public Function<PositionMaster, ? extends Iterable<PositionDocument>> getPositionQuery() {
return _positionQuery;
}
public Function<PortfolioMaster, ? extends Iterable<PortfolioDocument>> getPortfolioQuery() {
return _portfolioQuery;
}
public Function<ConfigMaster, ? extends Iterable<ConfigDocument>> getConfigQuery() {
return _configQuery;
}
public Function<HistoricalTimeSeriesMaster, ? extends Iterable<HistoricalTimeSeriesInfoDocument>> getHtsQuery() {
return _htsQuery;
}
public Function<HolidayMaster, ? extends Iterable<HolidayDocument>> getHolidayQuery() {
return _holidayQuery;
}
public Function<ExchangeMaster, ? extends Iterable<ExchangeDocument>> getExchangeQuery() {
return _exchangeQuery;
}
public Function<MarketDataSnapshotMaster, ? extends Iterable<MarketDataSnapshotDocument>> getMarketDataSnapshotQuery() {
return _marketDataSnapshotQuery;
}
public Function<LegalEntityMaster, ? extends Iterable<LegalEntityDocument>> getLegalEntityQuery() {
return _legalEntityQuery;
}
public Function<ConventionMaster, ? extends Iterable<ConventionDocument>> getConventionQuery() {
return _conventionQuery;
}
public static MasterQueryManager queryAll() {
return new MasterQueryManager(new SecurityQueryAll(),
new PositionQueryAll(),
new PortfolioQueryAll(),
new ConfigQueryAll(),
new HtsQueryAll(),
new HolidayQueryAll(),
new ExchangeQueryAll(),
new MarketDataSnapshotQueryAll(),
new OrgQueryAll(),
new ConventionQueryAll());
}
//no getAll() on AbstractMaster so have to write out for each one:
private static class SecurityQueryAll implements Function<SecurityMaster, List<SecurityDocument>> {
@Override
public List<SecurityDocument> apply(SecurityMaster input) {
return input.search(new SecuritySearchRequest()).getDocuments();
}
}
private static class PositionQueryAll implements Function<PositionMaster, List<PositionDocument>> {
@Override
public List<PositionDocument> apply(PositionMaster input) {
return input.search(new PositionSearchRequest()).getDocuments();
}
}
private static class PortfolioQueryAll implements Function<PortfolioMaster, List<PortfolioDocument>> {
@Override
public List<PortfolioDocument> apply(PortfolioMaster input) {
return input.search(new PortfolioSearchRequest()).getDocuments();
}
}
private static class ConfigQueryAll implements Function<ConfigMaster, List<ConfigDocument>> {
@Override
public List<ConfigDocument> apply(ConfigMaster input) {
return input.search(new ConfigSearchRequest<>()).getDocuments();
}
}
private static class HtsQueryAll implements Function<HistoricalTimeSeriesMaster, List<HistoricalTimeSeriesInfoDocument>> {
@Override
public List<HistoricalTimeSeriesInfoDocument> apply(HistoricalTimeSeriesMaster input) {
return input.search(new HistoricalTimeSeriesInfoSearchRequest()).getDocuments();
}
}
private static class HolidayQueryAll implements Function<HolidayMaster, List<HolidayDocument>> {
@Override
public List<HolidayDocument> apply(HolidayMaster input) {
return input.search(new HolidaySearchRequest()).getDocuments();
}
}
private static class ExchangeQueryAll implements Function<ExchangeMaster, List<ExchangeDocument>> {
@Override
public List<ExchangeDocument> apply(ExchangeMaster input) {
return input.search(new ExchangeSearchRequest()).getDocuments();
}
}
private static class MarketDataSnapshotQueryAll implements Function<MarketDataSnapshotMaster, List<MarketDataSnapshotDocument>> {
@Override
public List<MarketDataSnapshotDocument> apply(MarketDataSnapshotMaster input) {
return input.search(new MarketDataSnapshotSearchRequest()).getDocuments();
}
}
private static class OrgQueryAll implements Function<LegalEntityMaster, List<LegalEntityDocument>> {
@Override
public List<LegalEntityDocument> apply(LegalEntityMaster input) {
return input.search(new LegalEntitySearchRequest()).getDocuments();
}
}
private static class ConventionQueryAll implements Function<ConventionMaster, List<ConventionDocument>> {
@Override
public List<ConventionDocument> apply(ConventionMaster input) {
return input.search(new ConventionSearchRequest()).getDocuments();
}
}
}