/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.view.rest;
import java.net.URI;
import java.util.HashMap;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import org.threeten.bp.Instant;
import com.google.common.collect.Lists;
import com.opengamma.engine.view.compilation.CompiledViewDefinitionWithGraphs;
import com.opengamma.engine.view.compilation.CompiledViewDefinitionWithGraphsImpl;
import com.opengamma.util.rest.AbstractDataResource;
/**
* RESTful resource for {@link CompiledViewDefinitionWithGraphsImpl}.
*/
public class DataCompiledViewDefinitionResource extends AbstractDataResource {
//CSOFF: just constants
public static final String PATH_VIEW_DEFINITION = "viewDefinition";
public static final String PATH_PORTFOLIO = "portfolio";
public static final String PATH_VALID_FROM = "validFrom";
public static final String PATH_VALID_TO = "validTo";
public static final String PATH_MARKET_DATA_REQUIREMENTS = "marketDataRequirements";
public static final String PATH_COMPUTATION_TARGETS = "computationTargets";
public static final String PATH_COMPILED_CALCULATION_CONFIGURATIONS = "compiledCalculationConfigurations";
public static final String PATH_COMPILED_CALCULATION_CONFIGURATIONS_MAP = "compiledCalculationConfigurationsMap";
public static final String PATH_GRAPHS = "graphs";
//CSON: just constants
private final CompiledViewDefinitionWithGraphs _compiledViewDefinition;
public DataCompiledViewDefinitionResource(CompiledViewDefinitionWithGraphs compiledViewDefinitionWithGraphs) {
_compiledViewDefinition = compiledViewDefinitionWithGraphs;
}
@GET
@Path(PATH_VIEW_DEFINITION)
public Response getViewDefinition() {
return responseOkObject(_compiledViewDefinition.getViewDefinition());
}
@GET
@Path(PATH_PORTFOLIO)
public Response getPortfolio() {
return responseOkObject(_compiledViewDefinition.getPortfolio());
}
@GET
@Path(PATH_COMPILED_CALCULATION_CONFIGURATIONS)
public Response getCompiledCalculationConfigurations() {
return responseOkObject(Lists.newArrayList(_compiledViewDefinition.getCompiledCalculationConfigurations()));
}
@GET
@Path(PATH_COMPILED_CALCULATION_CONFIGURATIONS_MAP)
public Response getCompiledCalculationConfigurationsMap() {
return responseOkObject(new HashMap<>(_compiledViewDefinition.getCompiledCalculationConfigurationsMap()));
}
@GET
@Path(PATH_COMPILED_CALCULATION_CONFIGURATIONS + "/{calcConfigName}")
public Response getCompiledViewCalculationConfiguration(@PathParam("calcConfigName") String calcConfigName) {
return responseOkObject(_compiledViewDefinition.getCompiledCalculationConfiguration(calcConfigName));
}
@GET
@Path(PATH_COMPUTATION_TARGETS)
public Response getComputationTargets() {
return responseOkObject(_compiledViewDefinition.getComputationTargets());
}
@GET
@Path(PATH_MARKET_DATA_REQUIREMENTS)
public Response getMarketDataRequirements() {
return responseOkObject(_compiledViewDefinition.getMarketDataRequirements());
}
@GET
@Path(PATH_VALID_FROM)
public Response getValidFrom() {
Instant validFrom = _compiledViewDefinition.getValidFrom();
return validFrom != null ? responseOkObject(validFrom) : responseOkNoContent();
}
@GET
@Path(PATH_VALID_TO)
public Response getValidTo() {
Instant validTo = _compiledViewDefinition.getValidTo();
return validTo != null ? responseOkObject(validTo) : responseOkNoContent();
}
@Path(PATH_GRAPHS + "/{calcConfigName}")
public DataDependencyGraphExplorerResource getDependencyGraphExplorer(@PathParam("calcConfigName") String calcConfigName) {
return new DataDependencyGraphExplorerResource(_compiledViewDefinition.getDependencyGraphExplorer(calcConfigName));
}
//-------------------------------------------------------------------------
public static URI uriCompiledCalculationConfiguration(URI baseUri, String calcConfigName) {
return UriBuilder.fromUri(baseUri).segment(calcConfigName).build();
}
}