TradingSession.java

package org.vlaskin.moexiss.params;

import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;
import java.util.Objects;

/** Торговая сессия, используемая статистическими методами MOEX ISS. */
@Slf4j
@AllArgsConstructor
public enum TradingSession
{
    /** Основная сессия. */
    MAIN(1),
    /** Вечерняя сессия. */
    EVENING(2),
    /** Совокупные данные всех сессий. */
    TOTAL(3);

    private final int code;

    /**
     * Находит сессию по числовому коду MOEX ISS.
     *
     * @param code код сессии
     * @return сессия либо {@code null}, если код неизвестен
     */
    public static TradingSession getTradingSession(int code)
    {
        TradingSession result = Arrays.stream(TradingSession.values())
                .filter(tradingSession -> tradingSession.code == code)
                .findFirst().orElse(null);

        if (result == null)
            log.warn("Unknown trading session code '{}'", code);

        return result;
    }

    @Override
    public String toString()
    {
        return Objects.toString(code);
    }
}