/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame.example;
import static com.opengamma.sesame.config.ConfigBuilder.argument;
import static com.opengamma.sesame.config.ConfigBuilder.arguments;
import static com.opengamma.sesame.config.ConfigBuilder.column;
import static com.opengamma.sesame.config.ConfigBuilder.columns;
import static com.opengamma.sesame.config.ConfigBuilder.config;
import static com.opengamma.sesame.config.ConfigBuilder.configureView;
import static com.opengamma.sesame.config.ConfigBuilder.function;
import static com.opengamma.sesame.config.ConfigBuilder.implementations;
import static com.opengamma.sesame.config.ConfigBuilder.nonPortfolioOutput;
import static com.opengamma.sesame.config.ConfigBuilder.nonPortfolioOutputs;
import static com.opengamma.sesame.config.ConfigBuilder.output;
import com.opengamma.core.id.ExternalSchemes;
import com.opengamma.financial.security.cashflow.CashFlowSecurity;
import com.opengamma.financial.security.equity.EquitySecurity;
import com.opengamma.sesame.OutputNames;
import com.opengamma.sesame.config.ViewConfig;
/**
* Mini DSL for building instances of {@link ViewConfig} and related classes in code. See the
* {@link #main} method for an example.
*/
public final class ConfigBuilderExample {
public void main(String[] args) {
ViewConfig example1 =
configureView("columns only",
column(OutputNames.DESCRIPTION),
column(OutputNames.DESCRIPTION,
config(
implementations(EquityDescriptionFn.class,
CashFlowIdDescriptionFn.class),
arguments(
function(DefaultIdSchemeFn.class,
argument("scheme", ExternalSchemes.ACTIVFEED_TICKER))))),
column("Bloomberg Ticker", OutputNames.DESCRIPTION,
output(EquitySecurity.class,
config(
implementations(EquityDescriptionFn.class, CashFlowIdDescriptionFn.class))),
output(CashFlowSecurity.class,
config(
implementations(EquityDescriptionFn.class, CashFlowIdDescriptionFn.class)))),
column("ACTIV Symbol", OutputNames.DESCRIPTION,
output(EquitySecurity.class,
config(
implementations(EquityDescriptionFn.class, CashFlowIdDescriptionFn.class),
arguments(
function(DefaultIdSchemeFn.class,
argument("scheme",
ExternalSchemes.ACTIVFEED_TICKER))))),
output(CashFlowSecurity.class,
config(
implementations(EquityDescriptionFn.class, CashFlowIdDescriptionFn.class),
arguments(
function(DefaultIdSchemeFn.class,
argument("scheme",
ExternalSchemes.ACTIVFEED_TICKER)))))));
System.out.println(example1);
ViewConfig example2 =
configureView("columns and other outputs",
columns(
column(OutputNames.DESCRIPTION),
column(OutputNames.DESCRIPTION,
config(
implementations(EquityDescriptionFn.class, CashFlowIdDescriptionFn.class),
arguments(
function(DefaultIdSchemeFn.class,
argument("scheme",
ExternalSchemes.ACTIVFEED_TICKER))))),
column("Bloomberg Ticker", OutputNames.DESCRIPTION,
output(EquitySecurity.class,
config(
implementations(EquityDescriptionFn.class, CashFlowIdDescriptionFn.class))),
output(CashFlowSecurity.class,
config(
implementations(EquityDescriptionFn.class, CashFlowIdDescriptionFn.class)))),
column("ACTIV Symbol", OutputNames.DESCRIPTION,
output(EquitySecurity.class,
config(
implementations(EquityDescriptionFn.class, CashFlowIdDescriptionFn.class),
arguments(
function(DefaultIdSchemeFn.class,
argument("scheme",
ExternalSchemes.ACTIVFEED_TICKER))))),
output(CashFlowSecurity.class,
config(
implementations(EquityDescriptionFn.class, CashFlowIdDescriptionFn.class),
arguments(
function(DefaultIdSchemeFn.class,
argument("scheme",
ExternalSchemes.ACTIVFEED_TICKER))))))),
nonPortfolioOutputs(
nonPortfolioOutput("USD Discounting Curve",
output(OutputNames.DISCOUNTING_MULTICURVE_BUNDLE))));
System.out.println(example2);
ViewConfig example3 =
configureView("other outputs only",
nonPortfolioOutput("USD Discounting Curve",
output(OutputNames.DISCOUNTING_MULTICURVE_BUNDLE))); // TODO some function config
System.out.println(example3);
}
}