/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.target.logger; import java.math.BigDecimal; import java.util.Map; import org.threeten.bp.LocalDate; import org.threeten.bp.OffsetTime; import com.opengamma.core.position.Counterparty; import com.opengamma.core.position.Trade; import com.opengamma.core.security.Security; import com.opengamma.core.security.SecurityLink; import com.opengamma.engine.target.ComputationTargetRequirement; import com.opengamma.engine.target.ComputationTargetType; import com.opengamma.util.money.Currency; /** * Wrapper around a {@link Trade} instance that will log any deep resolution calls. */ public class LoggedResolutionTrade extends AbstractLoggedResolution<Trade> implements Trade { public LoggedResolutionTrade(final Trade underlying, final ResolutionLogger logger) { super(underlying, logger); } // Trade @Override public BigDecimal getQuantity() { return getUnderlying().getQuantity(); } @Override public SecurityLink getSecurityLink() { return getUnderlying().getSecurityLink(); } @Override public Security getSecurity() { final Security security = getUnderlying().getSecurity(); if (security != null) { final SecurityLink link = getSecurityLink(); if ((link.getExternalId() != null) && !link.getExternalId().isEmpty()) { log(new ComputationTargetRequirement(ComputationTargetType.SECURITY, link.getExternalId()), security.getUniqueId()); } if (link.getObjectId() != null) { log(ComputationTargetType.SECURITY, security); } } return security; } @Override public Map<String, String> getAttributes() { return getUnderlying().getAttributes(); } @Override public void setAttributes(Map<String, String> attributes) { getUnderlying().setAttributes(attributes); } @Override public void addAttribute(String key, String value) { getUnderlying().addAttribute(key, value); } @Override public Counterparty getCounterparty() { return getUnderlying().getCounterparty(); } @Override public LocalDate getTradeDate() { return getUnderlying().getTradeDate(); } @Override public OffsetTime getTradeTime() { return getUnderlying().getTradeTime(); } @Override public Double getPremium() { return getUnderlying().getPremium(); } @Override public Currency getPremiumCurrency() { return getUnderlying().getPremiumCurrency(); } @Override public LocalDate getPremiumDate() { return getUnderlying().getPremiumDate(); } @Override public OffsetTime getPremiumTime() { return getUnderlying().getPremiumTime(); } }