/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.view.helper;
import java.util.Set;
import com.opengamma.engine.value.ValueProperties;
/**
* Identifies and describes a possible or available output from an input set (e.g. a portfolio or view definition).
*/
public interface AvailableOutput {
/**
* Returns the name of the output value, e.g. {@code Present Value}.
*
* @return the value name, not null
*/
String getValueName();
/**
* Tests if the output is available on a position.
*
* @return true if available
*/
boolean isAvailableOnPosition();
/**
* Returns the security types this output is available on.
*
* @return the security types
*/
Set<String> getSecurityTypes();
/**
* Tests if the output is available on a position in the given security type.
*
* @param securityType the security type to test for
* @return true if available
*/
boolean isAvailableOn(final String securityType);
/**
* Tests if the output is available on a portfolio node.
*
* @return true if available
*/
boolean isAvailableOnPortfolioNode();
/**
* Returns the maximal property set on all the output is available on.
*
* @return the property set, not null
*/
ValueProperties getProperties();
/**
* Returns the maximal property set on positions in the given security type.
*
* @param securityType security type to consider
* @return the property set, not null
*/
ValueProperties getPositionProperties(String securityType);
/**
* Returns the maximal property set on portfolio nodes.
*
* @return the property set, not null
*/
ValueProperties getPortfolioNodeProperties();
}