in orderbook-core/src/main/java/com/epam/deltix/orderbook/core/api/OrderBookFactory.java [57:105]
public static <Quote extends OrderBookQuote> OrderBook<Quote> create(final OrderBookOptions options) {
if (Objects.isNull(options)) {
throw new IllegalArgumentException("Options not allowed to be null.");
}
final DataModelType quoteLevels = options.getQuoteLevels().orElse(Defaults.QUOTE_LEVELS);
final OrderBookType orderBookType = options.getBookType().orElse(Defaults.ORDER_BOOK_TYPE);
final OrderBook<Quote> book;
switch (quoteLevels) {
case LEVEL_ONE:
if (orderBookType == OrderBookType.SINGLE_EXCHANGE) {
book = L1OrderBookFactory.newSingleExchangeBook(options);
} else {
throw new IllegalArgumentException("Unsupported book type: " + orderBookType + " for quote levels: " + quoteLevels);
}
break;
case LEVEL_TWO:
switch (orderBookType) {
case SINGLE_EXCHANGE:
book = L2OrderBookFactory.newSingleExchangeBook(options);
break;
case AGGREGATED:
book = L2OrderBookFactory.newAggregatedBook(options);
break;
case CONSOLIDATED:
book = L2OrderBookFactory.newConsolidatedBook(options);
break;
default:
throw new IllegalArgumentException("Unsupported book type: " + orderBookType + " for quote levels: " + quoteLevels);
}
break;
case LEVEL_THREE:
switch (orderBookType) {
case SINGLE_EXCHANGE:
book = L3OrderBookFactory.newSingleExchangeBook(options);
break;
case CONSOLIDATED:
book = L3OrderBookFactory.newConsolidatedBook(options);
break;
case AGGREGATED:
default:
throw new IllegalArgumentException("Unsupported book type: " + orderBookType + " for quote levels: " + quoteLevels);
}
break;
default:
throw new IllegalArgumentException("Unsupported quote levels: " + quoteLevels);
}
return book;
}