private TradeInfo parseTradeInfo(CsvRow row) { TradeInfoBuilder infoBuilder = TradeInfo.builder(); String scheme = row.findField(ID_SCHEME_FIELD).orElse(DEFAULT_TRADE_SCHEME); row.findValue(ID_FIELD).ifPresent(id -> infoBuilder.id(StandardId.of(scheme, id))); String schemeCpty = row.findValue(CPTY_SCHEME_FIELD).orElse(DEFAULT_CPTY_SCHEME); row.findValue(CPTY_FIELD).ifPresent(cpty -> infoBuilder.counterparty(StandardId.of(schemeCpty, cpty))); row.findValue(TRADE_DATE_FIELD).ifPresent(dateStr -> infoBuilder.tradeDate(LoaderUtils.parseDate(dateStr))); row.findValue(TRADE_TIME_FIELD).ifPresent(timeStr -> infoBuilder.tradeTime(LoaderUtils.parseTime(timeStr))); row.findValue(TRADE_ZONE_FIELD).ifPresent(zoneStr -> infoBuilder.zone(ZoneId.of(zoneStr))); row.findValue(SETTLEMENT_DATE_FIELD).ifPresent(dateStr -> infoBuilder.settlementDate(LoaderUtils.parseDate(dateStr))); resolver.parseTradeInfo(row, infoBuilder); return infoBuilder.build(); }
/** * Converts an FpML 'BuyerSeller.model' to a {@code BuySell}. * <p> * The {@link TradeInfo} builder is updated with the counterparty. * * @param baseEl the FpML payer receiver model element * @param tradeInfoBuilder the builder of the trade info * @return the pay/receive flag * @throws RuntimeException if unable to parse */ public BuySell parseBuyerSeller(XmlElement baseEl, TradeInfoBuilder tradeInfoBuilder) { String buyerPartyReference = baseEl.getChild("buyerPartyReference").getAttribute(FpmlDocument.HREF); String sellerPartyReference = baseEl.getChild("sellerPartyReference").getAttribute(FpmlDocument.HREF); if (ourPartyHrefIds.isEmpty() || ourPartyHrefIds.contains(buyerPartyReference)) { tradeInfoBuilder.counterparty(StandardId.of(FPML_PARTY_SCHEME, parties.get(sellerPartyReference).get(0))); return BuySell.BUY; } else if (ourPartyHrefIds.contains(sellerPartyReference)) { tradeInfoBuilder.counterparty(StandardId.of(FPML_PARTY_SCHEME, parties.get(buyerPartyReference).get(0))); return BuySell.SELL; } else { throw new FpmlParseException(Messages.format( "Neither buyerPartyReference nor sellerPartyReference contain our party ID: {}", ourPartyHrefIds)); } }
public void test_builder() { TradeInfo test = TradeInfo.builder() .counterparty(COUNTERPARTY) .build(); assertEquals(test.getId(), Optional.empty()); assertEquals(test.getCounterparty(), Optional.of(COUNTERPARTY)); assertEquals(test.getTradeDate(), Optional.empty()); assertEquals(test.getTradeTime(), Optional.empty()); assertEquals(test.getZone(), Optional.empty()); assertEquals(test.getSettlementDate(), Optional.empty()); assertEquals(test.getAttributeTypes(), ImmutableSet.of()); assertEquals(test.getAttributes(), ImmutableMap.of()); assertThrowsIllegalArg(() -> test.getAttribute(AttributeType.DESCRIPTION)); assertEquals(test.findAttribute(AttributeType.DESCRIPTION), Optional.empty()); }
public void test_builder_withers() { TradeInfo test = TradeInfo.builder() .counterparty(COUNTERPARTY) .build() .withId(ID) .withAttribute(AttributeType.DESCRIPTION, "A"); assertEquals(test.getId(), Optional.of(ID)); assertEquals(test.getCounterparty(), Optional.of(COUNTERPARTY)); assertEquals(test.getTradeDate(), Optional.empty()); assertEquals(test.getTradeTime(), Optional.empty()); assertEquals(test.getZone(), Optional.empty()); assertEquals(test.getSettlementDate(), Optional.empty()); assertEquals(test.getAttributeTypes(), ImmutableSet.of(AttributeType.DESCRIPTION)); assertEquals(test.getAttributes(), ImmutableMap.of(AttributeType.DESCRIPTION, "A")); assertEquals(test.getAttribute(AttributeType.DESCRIPTION), "A"); assertEquals(test.findAttribute(AttributeType.DESCRIPTION), Optional.of("A")); }
StandardId proposedCounterparty = StandardId.of(FPML_PARTY_SCHEME, parties.get(receiverPartyReference).get(0)); if (currentCounterparty == null) { tradeInfoBuilder.counterparty(proposedCounterparty); } else if (!currentCounterparty.equals(proposedCounterparty)) { throw new FpmlParseException(Messages.format( StandardId proposedCounterparty = StandardId.of(FPML_PARTY_SCHEME, parties.get(payerPartyReference).get(0)); if (currentCounterparty == null) { tradeInfoBuilder.counterparty(proposedCounterparty); } else if (!currentCounterparty.equals(proposedCounterparty)) { throw new FpmlParseException(Messages.format(
public void test_toBuilder() { TradeInfo test = TradeInfo.builder() .counterparty(COUNTERPARTY) .build() .toBuilder() .id(ID) .build(); assertEquals(test.getId(), Optional.of(ID)); assertEquals(test.getCounterparty(), Optional.of(COUNTERPARTY)); }
public void test_serialization() { TradeInfo test = TradeInfo.builder() .counterparty(COUNTERPARTY) .tradeDate(date(2014, 6, 20)) .tradeTime(LocalTime.MIDNIGHT) .zone(ZoneOffset.UTC) .settlementDate(date(2014, 6, 20)) .build(); assertSerialization(test); }
public void coverage() { TradeInfo test = TradeInfo.builder() .addAttribute(AttributeType.DESCRIPTION, "A") .counterparty(COUNTERPARTY) .tradeDate(date(2014, 6, 20)) .tradeTime(LocalTime.MIDNIGHT) .zone(ZoneId.systemDefault()) .settlementDate(date(2014, 6, 20)) .build(); coverImmutableBean(test); TradeInfo test2 = TradeInfo.builder() .id(StandardId.of("OG-Id", "1")) .counterparty(StandardId.of("OG-Party", "Other2")) .tradeDate(date(2014, 6, 21)) .tradeTime(LocalTime.NOON) .zone(ZoneOffset.UTC) .settlementDate(date(2014, 6, 21)) .build(); coverBeanEquals(test, test2); }
private static Trade trade() { SecurityInfo info = SecurityInfo.of(SecurityId.of("OG-Test", "1"), 20, CurrencyAmount.of(USD, 10)); GenericSecurity security = GenericSecurity.of(info); TradeInfo tradeInfo = TradeInfo.builder() .counterparty(StandardId.of("cpty", "a")) .build(); return GenericSecurityTrade.builder() .info(tradeInfo) .security(security) .quantity(123) .price(456) .build(); }
private static Trade trade(String counterparty, double notional) { TradeInfo tradeInfo = TradeInfo.builder() .counterparty(StandardId.of("cpty", counterparty)) .build(); Fra fra = Fra.builder() .buySell(BUY) .notional(notional) .startDate(date(2015, 8, 5)) .endDate(date(2015, 11, 5)) .paymentDate(AdjustableDate.of(date(2015, 8, 7))) .fixedRate(0.25d) .index(GBP_LIBOR_3M) .build(); return FraTrade.builder() .info(tradeInfo) .product(fra) .build(); } }