MarketSecuritiesTableEngineParams.java

package org.vlaskin.moexiss.service.engine.params;

import lombok.Getter;
import lombok.Setter;
import org.vlaskin.moexiss.params.Language;
import org.vlaskin.moexiss.params.Order;

import java.util.Collection;
import java.util.List;

/**
 * Параметры таблицы инструментов рынка.
 *
 * <p>Поддерживает фильтры по активам, инструментам, типам и коллекции, а также сортировку и
 * выбор данных основной, ближайшей или предыдущей сессии. Коллекции копируются при установке.
 */
@Getter
@Setter
public class MarketSecuritiesTableEngineParams
{
    protected final String engine;
    protected final String market;

    protected Language language = Language.RU;
    protected int first = 0;
    protected String sortColumn;
    protected Order sortOrder = Order.ASC;
    protected boolean leaders = false;
    protected boolean nearest = false;
    protected boolean previousSession = false;
    protected String primaryBoard;
    protected List<String> assets;
    protected String index;
    protected List<String> securities;
    protected List<String> securityTypes;
    protected String securityCollection;

    /**
     * @param engine код торговой системы
     * @param market код рынка
     */
    public MarketSecuritiesTableEngineParams(String engine, String market)
    {
        this.engine = engine;
        this.market = market;
    }

    /** @return неизменяемый список кодов классов активов либо {@code null} */
    public List<String> getAssets()
    {
        return copyOf(assets);
    }

    /** @param assets коды классов активов либо {@code null} */
    public void setAssets(Collection<String> assets)
    {
        this.assets = copyOf(assets);
    }

    /** @return неизменяемый список кодов инструментов либо {@code null} */
    public List<String> getSecurities()
    {
        return copyOf(securities);
    }

    /** @param securities коды инструментов либо {@code null} */
    public void setSecurities(Collection<String> securities)
    {
        this.securities = copyOf(securities);
    }

    /** @return неизменяемый список типов инструментов либо {@code null} */
    public List<String> getSecurityTypes()
    {
        return copyOf(securityTypes);
    }

    /** @param securityTypes типы инструментов либо {@code null} */
    public void setSecurityTypes(Collection<String> securityTypes)
    {
        this.securityTypes = copyOf(securityTypes);
    }

    private static <T> List<T> copyOf(Collection<T> values)
    {
        return values == null ? null : List.copyOf(values);
    }
}