package ru.hflabs.rcd.accessor; import com.google.common.base.Function; import ru.hflabs.rcd.model.Essence; import ru.hflabs.rcd.model.path.MetaFieldNamedPath; import ru.hflabs.rcd.model.rule.Rule; /** * Интерфейс <class>RuleFieldAccessor</class> декларирует методы доступа/установки параметров правила * * @see Rule */ public interface RuleFieldAccessor<NP extends MetaFieldNamedPath, T extends Essence, R extends Rule<NP, T, R>> extends FieldAccessor<T, R> { /** * Возвращает именованный путь правила * * @param rule целевое правило * @return Возвращает именованный путь */ NP applyNamedPath(R rule); /** * Возвращает идентификатор связанной сущности * * @param rule целевое правило * @return Возвращает идентификатор связанной сущности */ String applyRelativeId(Rule<?, ?, ?> rule); /** * Создает и возвращает функцию доступа к именованному пути * * @return Создает и возвращает функцию доступа к именованному пути */ Function<R, NP> getNamedPathFunction(); }