/** * Loads one or more CSV format trade files. * <p> * CSV files sometimes contain a Unicode Byte Order Mark. * This method uses {@link UnicodeBom} to interpret it. * * @param resources the CSV resources * @return the loaded trades, trade-level errors are captured in the result */ public ValueWithFailures<List<Trade>> load(ResourceLocator... resources) { return load(Arrays.asList(resources)); }
public void test_load_failures() { TradeCsvLoader test = TradeCsvLoader.standard(); ValueWithFailures<List<Trade>> trades = test.load(FILE); assertEquals(trades.getFailures().size(), 0, trades.getFailures().toString()); }
@Test public void test_load_fx_forwards_with_legs_in_same_direction() throws Exception { TradeCsvLoader standard = TradeCsvLoader.standard(); ResourceLocator locator = ResourceLocator.of("classpath:com/opengamma/strata/loader/csv/fxtrades_legs_same_direction.csv"); ValueWithFailures<List<Trade>> loadedData = standard.load(locator); assertEquals(loadedData.getFailures().size(), 1, loadedData.getFailures().toString()); FailureItem failureItem = loadedData.getFailures().get(0); assertEquals(failureItem.getReason().toString(), "PARSING"); assertEquals( failureItem.getMessage(), "CSV file trade could not be parsed at line 2: FxSingle legs must not have the same direction: Pay, Pay"); List<Trade> loadedTrades = loadedData.getValue(); assertEquals(loadedTrades.size(), 0); }
public void test_load_genericSecurity() { TradeCsvLoader test = TradeCsvLoader.standard(); ValueWithFailures<List<Trade>> trades = test.load(FILE); List<GenericSecurityTrade> filtered = trades.getValue().stream() .flatMap(filtering(GenericSecurityTrade.class)) .collect(toImmutableList()); assertEquals(filtered.size(), 1); GenericSecurityTrade expected1 = GenericSecurityTrade.builder() .info(TradeInfo.builder() .id(StandardId.of("OG", "123433")) .tradeDate(date(2017, 6, 1)) .settlementDate(date(2017, 6, 3)) .build()) .security( GenericSecurity.of( SecurityInfo.of( SecurityId.of("OG-Security", "AAPL"), SecurityPriceInfo.of(5, CurrencyAmount.of(USD, 0.01), 10)))) .quantity(12) .price(14.5) .build(); assertBeanEquals(expected1, filtered.get(0)); }
public void test_load_security() { TradeCsvLoader test = TradeCsvLoader.standard(); ValueWithFailures<List<Trade>> trades = test.load(FILE); List<SecurityTrade> filtered = trades.getValue().stream() .flatMap(filtering(SecurityTrade.class)) .collect(toImmutableList()); assertEquals(filtered.size(), 2); SecurityTrade expected1 = SecurityTrade.builder() .info(TradeInfo.builder() .id(StandardId.of("OG", "123431")) .tradeDate(date(2017, 6, 1)) .settlementDate(date(2017, 6, 3)) .build()) .securityId(SecurityId.of("OG-Security", "AAPL")) .quantity(12) .price(14.5) .build(); assertBeanEquals(expected1, filtered.get(0)); SecurityTrade expected2 = SecurityTrade.builder() .info(TradeInfo.builder() .id(StandardId.of("OG", "123432")) .tradeDate(date(2017, 6, 1)) .settlementDate(date(2017, 6, 3)) .build()) .securityId(SecurityId.of("BBG", "MSFT")) .quantity(-20) .price(17.8) .build(); assertBeanEquals(expected2, filtered.get(1)); }