package ru.hflabs.rcd.service.document; import ru.hflabs.rcd.RoleNames; import ru.hflabs.rcd.model.document.MetaField; import ru.hflabs.rcd.model.path.DictionaryNamedPath; import ru.hflabs.rcd.model.path.MetaFieldNamedPath; import ru.hflabs.rcd.service.IDocumentService; import ru.hflabs.rcd.service.IManyToOneService; import ru.hflabs.rcd.service.INamedPathService; import javax.annotation.security.RolesAllowed; import java.util.Collection; import java.util.Map; import java.util.Set; /** * Интерфейс <class>IMetaFieldService</class> декларирует методы для работы с МЕТА-полями справочников * * @see MetaField */ public interface IMetaFieldService extends IDocumentService<MetaField>, INamedPathService<MetaFieldNamedPath, MetaField>, IManyToOneService<MetaField> { /** * @param path именованный путь справочника * @return Возвращает коллекцию МЕТА-полей справочника */ @RolesAllowed(RoleNames.OPERATOR) Collection<MetaField> findMetaFieldsByNamedPath(DictionaryNamedPath path); /** * @param path именнованный путь МЕТА-поля * @param quietly флаг безопасной проверки существования поля * @return Возвращает МЕТА-поле или <code>NULL</code>, если установлен флаг <i>quietly</i> и такого поля не найдено * @see #findUniqueByNamedPath(Object, boolean) */ @RolesAllowed(RoleNames.OPERATOR) MetaField findMetaFieldByNamedPath(MetaFieldNamedPath path, boolean quietly); /** * @param paths именованные пути МЕТА-полей * @param quietly флаг безопасной проверки существования поля * @return Возвращает коллекцию МЕТА-полей по их именованным путям */ @RolesAllowed(RoleNames.OPERATOR) Map<MetaFieldNamedPath, MetaField> findMetaFieldByNamedPath(Set<MetaFieldNamedPath> paths, boolean quietly); /** * @param dictionaryId идентификатор справочника * @param fillTransitive флаг необходимости заполнения транзитивных зависимостей * @param quietly флаг безопасной проверки существования поля * @return Возвращает {@link MetaField#FLAG_PRIMARY первичное}-поле или <code>NULL</code>, если установлен флаг <i>quietly</i> и такого поля не найдено */ @RolesAllowed(RoleNames.OPERATOR) MetaField findPrimaryMetaField(String dictionaryId, boolean fillTransitive, boolean quietly); /** * @param path именованный путь справочника * @param quietly флаг безопасной проверки существования поля * @return Возвращает {@link MetaField#FLAG_PRIMARY первичное}-поле или <code>NULL</code>, если установлен флаг <i>quietly</i> и такого поля не найдено */ @RolesAllowed(RoleNames.OPERATOR) MetaField findPrimaryMetaFieldByNamedPath(DictionaryNamedPath path, boolean quietly); }