Skip to content

Commit

Permalink
Add PortfolioItem#withInfo for more easily updating the info/attribut…
Browse files Browse the repository at this point in the history
…es on a collection of PortfolioItems (#2133)
  • Loading branch information
ashleyheath committed Feb 10, 2020
1 parent b2b0b96 commit fd976ae
Show file tree
Hide file tree
Showing 63 changed files with 178 additions and 105 deletions.
Expand Up @@ -77,6 +77,7 @@
import com.opengamma.strata.product.AttributeType;
import com.opengamma.strata.product.GenericSecurity;
import com.opengamma.strata.product.GenericSecurityTrade;
import com.opengamma.strata.product.PortfolioItemInfo;
import com.opengamma.strata.product.SecurityId;
import com.opengamma.strata.product.SecurityInfo;
import com.opengamma.strata.product.SecurityPriceInfo;
Expand Down Expand Up @@ -2002,7 +2003,7 @@ public Optional<Trade> parseOtherTrade(String typeUpper, CsvRow row, TradeInfo i
public void test_load_unknownTypeFixedViaResolver() {
Trade trade = new Trade() {
@Override
public Trade withInfo(TradeInfo info) {
public Trade withInfo(PortfolioItemInfo info) {
throw new UnsupportedOperationException();
}

Expand Down Expand Up @@ -2032,7 +2033,7 @@ public Optional<Trade> parseOtherTrade(String typeUpper, CsvRow row, TradeInfo i
public void test_load_overrideTypeViaResolver() {
Trade trade = new Trade() {
@Override
public Trade withInfo(TradeInfo info) {
public Trade withInfo(PortfolioItemInfo info) {
throw new UnsupportedOperationException();
}

Expand Down
Expand Up @@ -17,6 +17,7 @@
import org.joda.beans.gen.PropertyDefinition;
import org.joda.beans.impl.light.LightMetaBean;

import com.opengamma.strata.product.PortfolioItemInfo;
import com.opengamma.strata.product.ResolvedProduct;
import com.opengamma.strata.product.ResolvedTrade;
import com.opengamma.strata.product.Trade;
Expand Down Expand Up @@ -45,7 +46,7 @@ public TradeInfo getInfo() {
}

@Override
public Trade withInfo(TradeInfo info) {
public Trade withInfo(PortfolioItemInfo info) {
return this;
}

Expand Down
Expand Up @@ -174,8 +174,8 @@ public double getQuantity() {

//-------------------------------------------------------------------------
@Override
public GenericSecurityPosition withInfo(PositionInfo info) {
return new GenericSecurityPosition(info, security, longQuantity, shortQuantity);
public GenericSecurityPosition withInfo(PortfolioItemInfo info) {
return new GenericSecurityPosition(PositionInfo.from(info), security, longQuantity, shortQuantity);
}

@Override
Expand Down
Expand Up @@ -109,8 +109,8 @@ public GenericSecurity getProduct() {

//-------------------------------------------------------------------------
@Override
public GenericSecurityTrade withInfo(TradeInfo info) {
return new GenericSecurityTrade(info, security, quantity, price);
public GenericSecurityTrade withInfo(PortfolioItemInfo info) {
return new GenericSecurityTrade(TradeInfo.from(info), security, quantity, price);
}

@Override
Expand Down
Expand Up @@ -43,6 +43,16 @@ public default Optional<StandardId> getId() {
return getInfo().getId();
}

/**
* Returns an instance with the specified info.
*
* @param info the new info
* @return the instance with the specified info
*/
public default PortfolioItem withInfo(PortfolioItemInfo info) {
throw new UnsupportedOperationException();
}

/**
* Summarizes the portfolio item.
* <p>
Expand Down
Expand Up @@ -65,7 +65,7 @@ public default PortfolioItemSummary summarize() {
* @param info the new info
* @return the instance with the specified info
*/
public abstract Position withInfo(PositionInfo info);
public abstract Position withInfo(PortfolioItemInfo info);

/**
* Returns an instance with the specified quantity.
Expand Down
Expand Up @@ -83,6 +83,16 @@ public static PositionInfo of(StandardId positionId) {
return new PositionInfo(positionId, ImmutableMap.of());
}

/**
* Obtains an instance based on the supplied info.
*
* @param info the base info
* @return the position information
*/
public static PositionInfo from(PortfolioItemInfo info) {
return empty().combinedWith(info);
}

/**
* Returns a builder used to create an instance of the bean.
*
Expand Down
Expand Up @@ -32,6 +32,6 @@ public interface ProductTrade
* @return the instance with the specified info
*/
@Override
public abstract ProductTrade withInfo(TradeInfo info);
public abstract ProductTrade withInfo(PortfolioItemInfo info);

}
Expand Up @@ -46,7 +46,7 @@ public interface ResolvableSecurityPosition
* @return the instance with the specified info
*/
@Override
public abstract ResolvableSecurityPosition withInfo(PositionInfo info);
public abstract ResolvableSecurityPosition withInfo(PortfolioItemInfo info);

/**
* Returns an instance with the specified quantity.
Expand Down
Expand Up @@ -56,7 +56,7 @@ public default SecuritizedProductTrade<?> resolveTarget(ReferenceData refData) {
* @return the instance with the specified info
*/
@Override
public abstract ResolvableSecurityTrade withInfo(TradeInfo info);
public abstract ResolvableSecurityTrade withInfo(PortfolioItemInfo info);

/**
* Returns an instance with the specified quantity.
Expand Down
Expand Up @@ -48,6 +48,6 @@ public interface ResolvableTrade<T extends ResolvedTrade>
* @return the instance with the specified info
*/
@Override
public abstract ResolvableTrade<T> withInfo(TradeInfo info);
public abstract ResolvableTrade<T> withInfo(PortfolioItemInfo info);

}
Expand Up @@ -40,7 +40,7 @@ public default SecurityId getSecurityId() {
* @return the instance with the specified info
*/
@Override
public abstract SecuritizedProductPosition<P> withInfo(PositionInfo info);
public abstract SecuritizedProductPosition<P> withInfo(PortfolioItemInfo info);

/**
* Returns an instance with the specified quantity.
Expand Down
Expand Up @@ -34,7 +34,7 @@ public interface SecuritizedProductTrade<P extends SecuritizedProduct>
* @return the instance with the specified info
*/
@Override
public abstract SecuritizedProductTrade<P> withInfo(TradeInfo info);
public abstract SecuritizedProductTrade<P> withInfo(PortfolioItemInfo info);

/**
* Returns an instance with the specified quantity.
Expand Down
Expand Up @@ -172,8 +172,8 @@ public double getQuantity() {

//-------------------------------------------------------------------------
@Override
public SecurityPosition withInfo(PositionInfo info) {
return new SecurityPosition(info, securityId, longQuantity, shortQuantity);
public SecurityPosition withInfo(PortfolioItemInfo info) {
return new SecurityPosition(PositionInfo.from(info), securityId, longQuantity, shortQuantity);
}

@Override
Expand Down
Expand Up @@ -32,7 +32,7 @@ public interface SecurityQuantityTrade
* @return the instance with the specified info
*/
@Override
public abstract SecurityQuantityTrade withInfo(TradeInfo info);
public abstract SecurityQuantityTrade withInfo(PortfolioItemInfo info);

/**
* Returns an instance with the specified quantity.
Expand Down
Expand Up @@ -103,8 +103,8 @@ public PortfolioItemSummary summarize() {

//-------------------------------------------------------------------------
@Override
public SecurityTrade withInfo(TradeInfo info) {
return new SecurityTrade(info, securityId, quantity, price);
public SecurityTrade withInfo(PortfolioItemInfo info) {
return new SecurityTrade(TradeInfo.from(info), securityId, quantity, price);
}

@Override
Expand Down
Expand Up @@ -43,6 +43,6 @@ public default PortfolioItemSummary summarize() {
* @param info the new info
* @return the instance with the specified info
*/
public abstract Trade withInfo(TradeInfo info);
public abstract Trade withInfo(PortfolioItemInfo info);

}
Expand Up @@ -113,6 +113,16 @@ public static TradeInfo of(LocalDate tradeDate) {
return new TradeInfo(null, null, tradeDate, null, null, null, ImmutableMap.of());
}

/**
* Obtains an instance based on the supplied info.
*
* @param info the base info
* @return the trade information
*/
public static TradeInfo from(PortfolioItemInfo info) {
return empty().combinedWith(info);
}

/**
* Returns a builder used to create an instance of the bean.
*
Expand Down Expand Up @@ -202,7 +212,7 @@ public TradeInfo overrideWith(PortfolioItemInfo other) {

/**
* Returns a builder populated with the values of this instance.
*
*
* @return a builder populated with the values of this instance
*/
public TradeInfoBuilder toBuilder() {
Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.opengamma.strata.basics.Resolvable;
import com.opengamma.strata.basics.currency.Currency;
import com.opengamma.strata.collect.ArgChecker;
import com.opengamma.strata.product.PortfolioItemInfo;
import com.opengamma.strata.product.PortfolioItemSummary;
import com.opengamma.strata.product.PositionInfo;
import com.opengamma.strata.product.ProductType;
Expand Down Expand Up @@ -150,8 +151,8 @@ public double getQuantity() {

//-------------------------------------------------------------------------
@Override
public BillPosition withInfo(PositionInfo info) {
return new BillPosition(info, product, longQuantity, shortQuantity);
public BillPosition withInfo(PortfolioItemInfo info) {
return new BillPosition(PositionInfo.from(info), product, longQuantity, shortQuantity);
}

@Override
Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.opengamma.strata.basics.currency.CurrencyAmount;
import com.opengamma.strata.basics.currency.Payment;
import com.opengamma.strata.collect.ArgChecker;
import com.opengamma.strata.product.PortfolioItemInfo;
import com.opengamma.strata.product.PortfolioItemSummary;
import com.opengamma.strata.product.ProductType;
import com.opengamma.strata.product.ResolvableTrade;
Expand Down Expand Up @@ -144,8 +145,8 @@ private LocalDate calculateSettlementDate(ReferenceData refData) {
}

@Override
public BillTrade withInfo(TradeInfo info) {
return new BillTrade(info, product, quantity, price);
public BillTrade withInfo(PortfolioItemInfo info) {
return new BillTrade(TradeInfo.from(info), product, quantity, price);
}

@Override
Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.opengamma.strata.basics.Resolvable;
import com.opengamma.strata.basics.currency.Currency;
import com.opengamma.strata.collect.ArgChecker;
import com.opengamma.strata.product.PortfolioItemInfo;
import com.opengamma.strata.product.PortfolioItemSummary;
import com.opengamma.strata.product.PositionInfo;
import com.opengamma.strata.product.ProductType;
Expand Down Expand Up @@ -150,8 +151,8 @@ public double getQuantity() {

//-------------------------------------------------------------------------
@Override
public BondFutureOptionPosition withInfo(PositionInfo info) {
return new BondFutureOptionPosition(info, product, longQuantity, shortQuantity);
public BondFutureOptionPosition withInfo(PortfolioItemInfo info) {
return new BondFutureOptionPosition(PositionInfo.from(info), product, longQuantity, shortQuantity);
}

@Override
Expand Down
Expand Up @@ -24,6 +24,7 @@

import com.opengamma.strata.basics.ReferenceData;
import com.opengamma.strata.collect.ArgChecker;
import com.opengamma.strata.product.PortfolioItemInfo;
import com.opengamma.strata.product.PortfolioItemSummary;
import com.opengamma.strata.product.ProductType;
import com.opengamma.strata.product.ResolvableTrade;
Expand Down Expand Up @@ -87,8 +88,8 @@ private static void applyDefaults(Builder builder) {

//-------------------------------------------------------------------------
@Override
public BondFutureOptionTrade withInfo(TradeInfo info) {
return new BondFutureOptionTrade(info, product, quantity, price);
public BondFutureOptionTrade withInfo(PortfolioItemInfo info) {
return new BondFutureOptionTrade(TradeInfo.from(info), product, quantity, price);
}

@Override
Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.opengamma.strata.basics.Resolvable;
import com.opengamma.strata.basics.currency.Currency;
import com.opengamma.strata.collect.ArgChecker;
import com.opengamma.strata.product.PortfolioItemInfo;
import com.opengamma.strata.product.PortfolioItemSummary;
import com.opengamma.strata.product.PositionInfo;
import com.opengamma.strata.product.ProductType;
Expand Down Expand Up @@ -150,8 +151,8 @@ public double getQuantity() {

//-------------------------------------------------------------------------
@Override
public BondFuturePosition withInfo(PositionInfo info) {
return new BondFuturePosition(info, product, longQuantity, shortQuantity);
public BondFuturePosition withInfo(PortfolioItemInfo info) {
return new BondFuturePosition(PositionInfo.from(info), product, longQuantity, shortQuantity);
}

@Override
Expand Down
Expand Up @@ -24,6 +24,7 @@

import com.opengamma.strata.basics.ReferenceData;
import com.opengamma.strata.collect.ArgChecker;
import com.opengamma.strata.product.PortfolioItemInfo;
import com.opengamma.strata.product.PortfolioItemSummary;
import com.opengamma.strata.product.ProductType;
import com.opengamma.strata.product.ResolvableTrade;
Expand Down Expand Up @@ -85,8 +86,8 @@ private static void applyDefaults(Builder builder) {

//-------------------------------------------------------------------------
@Override
public BondFutureTrade withInfo(TradeInfo info) {
return new BondFutureTrade(info, product, quantity, price);
public BondFutureTrade withInfo(PortfolioItemInfo info) {
return new BondFutureTrade(TradeInfo.from(info), product, quantity, price);
}

@Override
Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.opengamma.strata.basics.Resolvable;
import com.opengamma.strata.basics.currency.Currency;
import com.opengamma.strata.collect.ArgChecker;
import com.opengamma.strata.product.PortfolioItemInfo;
import com.opengamma.strata.product.PortfolioItemSummary;
import com.opengamma.strata.product.PositionInfo;
import com.opengamma.strata.product.ProductType;
Expand Down Expand Up @@ -150,8 +151,8 @@ public double getQuantity() {

//-------------------------------------------------------------------------
@Override
public CapitalIndexedBondPosition withInfo(PositionInfo info) {
return new CapitalIndexedBondPosition(info, product, longQuantity, shortQuantity);
public CapitalIndexedBondPosition withInfo(PortfolioItemInfo info) {
return new CapitalIndexedBondPosition(PositionInfo.from(info), product, longQuantity, shortQuantity);
}

@Override
Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.opengamma.strata.basics.currency.Payment;
import com.opengamma.strata.basics.schedule.SchedulePeriod;
import com.opengamma.strata.collect.ArgChecker;
import com.opengamma.strata.product.PortfolioItemInfo;
import com.opengamma.strata.product.PortfolioItemSummary;
import com.opengamma.strata.product.ProductType;
import com.opengamma.strata.product.ResolvableTrade;
Expand Down Expand Up @@ -90,8 +91,8 @@ private static void applyDefaults(Builder builder) {

//-------------------------------------------------------------------------
@Override
public CapitalIndexedBondTrade withInfo(TradeInfo info) {
return new CapitalIndexedBondTrade(info, product, quantity, price);
public CapitalIndexedBondTrade withInfo(PortfolioItemInfo info) {
return new CapitalIndexedBondTrade(TradeInfo.from(info), product, quantity, price);
}

@Override
Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.opengamma.strata.basics.Resolvable;
import com.opengamma.strata.basics.currency.Currency;
import com.opengamma.strata.collect.ArgChecker;
import com.opengamma.strata.product.PortfolioItemInfo;
import com.opengamma.strata.product.PortfolioItemSummary;
import com.opengamma.strata.product.PositionInfo;
import com.opengamma.strata.product.ProductType;
Expand Down Expand Up @@ -150,8 +151,8 @@ public double getQuantity() {

//-------------------------------------------------------------------------
@Override
public FixedCouponBondPosition withInfo(PositionInfo info) {
return new FixedCouponBondPosition(info, product, longQuantity, shortQuantity);
public FixedCouponBondPosition withInfo(PortfolioItemInfo info) {
return new FixedCouponBondPosition(PositionInfo.from(info), product, longQuantity, shortQuantity);
}

@Override
Expand Down

0 comments on commit fd976ae

Please sign in to comment.