private void validateIncrementEntry()

in java/runner/src/intTest/java/com/epam/deltix/data/connectors/validator/L2DataValidator.java [378:433]


    private void validateIncrementEntry(PackageHeaderInfo headerInfo, L2EntryNew entryNew) {
        MarketSide<OrderBookQuote> quotes = book.getMarketSide(entryNew.getSide());
        if (entryNew.getLevel() > quotes.depth()) {
            sendMessageToLogger(headerInfo, entryNew.getExchangeId(), "Incorrect level. Greater than level's count + 1", Severity.ERROR);
            return;
        }

        if (entryNew.getLevel() == 0) {
            if (quotes.depth() == 0) return;
            if (entryNew.getSide() == QuoteSide.ASK) {
                if (Decimal64Utils.isGreater(entryNew.getPrice(), quotes.getQuote(0).getPrice())) {
                    sendMessageToLogger(headerInfo, entryNew.getExchangeId(), "Incorrect price. Prices after this entry wouldn't be sorted", Severity.ERROR);
                }
            } else {
                if (Decimal64Utils.isLess(entryNew.getPrice(), quotes.getQuote(0).getPrice())) {
                    sendMessageToLogger(headerInfo, entryNew.getExchangeId(), "Incorrect price. Prices after this entry wouldn't be sorted", Severity.ERROR);
                }
            }
            if (checkEqualLevels) {
                if (Decimal64Utils.isEqual(entryNew.getPrice(), quotes.getQuote(0).getPrice())) {
                    sendMessageToLogger(headerInfo, entryNew.getExchangeId(), "Incorrect price. Prices after this entry wouldn't be strictly sorted (without equal levels)", Severity.ERROR);
                }
            }
        } else if (entryNew.getLevel() == quotes.depth()) {
            if (entryNew.getSide() == QuoteSide.ASK) {
                if (Decimal64Utils.isLess(entryNew.getPrice(), quotes.getQuote(quotes.depth() - 1).getPrice())) {
                    sendMessageToLogger(headerInfo, entryNew.getExchangeId(), "Incorrect price. Prices after this entry wouldn't be sorted", Severity.ERROR);
                }
            } else {
                if (Decimal64Utils.isGreater(entryNew.getPrice(), quotes.getQuote(quotes.depth() - 1).getPrice())) {
                    sendMessageToLogger(headerInfo, entryNew.getExchangeId(), "Incorrect price. Prices after this entry wouldn't be sorted", Severity.ERROR);
                }
            }
            if (checkEqualLevels) {
                if (Decimal64Utils.isEqual(entryNew.getPrice(), quotes.getQuote(quotes.depth() - 1).getPrice())) {
                    sendMessageToLogger(headerInfo, entryNew.getExchangeId(), "Incorrect price. Prices after this entry wouldn't be strictly sorted (without equal levels)", Severity.ERROR);
                }
            }
        } else {
            if (entryNew.getSide() == QuoteSide.ASK) {
                if (Decimal64Utils.isLess(entryNew.getPrice(), quotes.getQuote(entryNew.getLevel() - 1).getPrice()) || Decimal64Utils.isGreater(entryNew.getPrice(), quotes.getQuote(entryNew.getLevel()).getPrice())) {
                    sendMessageToLogger(headerInfo, entryNew.getExchangeId(), "Incorrect price. Prices after this entry wouldn't be sorted", Severity.ERROR);
                }
            } else {
                if (Decimal64Utils.isGreater(entryNew.getPrice(), quotes.getQuote(entryNew.getLevel() - 1).getPrice()) || Decimal64Utils.isLess(entryNew.getPrice(), quotes.getQuote(entryNew.getLevel()).getPrice())) {
                    sendMessageToLogger(headerInfo, entryNew.getExchangeId(), "Incorrect price. Prices after this entry wouldn't be sorted", Severity.ERROR);
                }
            }
            if (checkEqualLevels) {
                if (Decimal64Utils.isEqual(entryNew.getPrice(), quotes.getQuote(entryNew.getLevel() - 1).getPrice()) || Decimal64Utils.isEqual(entryNew.getPrice(), quotes.getQuote(entryNew.getLevel()).getPrice())) {
                    sendMessageToLogger(headerInfo, entryNew.getExchangeId(), "Incorrect price. Prices after this entry wouldn't be strictly sorted (without equal levels)", Severity.ERROR);
                }

            }
        }
    }