package ru.hflabs.rcd.service.rule;
import ru.hflabs.rcd.RoleNames;
import ru.hflabs.rcd.model.rule.RecodeRule;
import ru.hflabs.rcd.service.IDocumentService;
import ru.hflabs.rcd.service.IManyToOneService;
import javax.annotation.security.RolesAllowed;
import java.util.Collection;
/**
* Интерфейс <class>IRecodeRuleService</class> декларирует методы для работы с правилами перекодирования
*
* @see RecodeRule
*/
public interface IRecodeRuleService extends IDocumentService<RecodeRule>, IRuleService<RecodeRule>, IManyToOneService<RecodeRule> {
/**
* Выполняет поиск правил привязанных к идентификаторам исходных полей
*
* @param recodeRuleSetId идентификатор набора правил
* @param fromFieldIDs коллекция идентификаторов исходных полей
* @param fillTransitive флаг заполнения транзитивных зависимостей
* @return Возвращает коллекцию найденных правил
*/
@RolesAllowed(RoleNames.OPERATOR)
Collection<RecodeRule> findAllByFieldIDs(String recodeRuleSetId, Collection<String> fromFieldIDs, boolean fillTransitive);
/**
* Выполняет модификацию правил перекодирования
*
* @param toCreate коллекция правил для создания
* @param toUpdate коллекция правил для обновления
* @param toClose коллекция правил для закрытия
* @param needValidation флаг, указывающий на необходимость валидации модифицируемых правил
* @return Возвращает коллекцию модифицированных правил
*/
@RolesAllowed(RoleNames.ADMINISTRATOR)
Collection<RecodeRule> modify(Collection<RecodeRule> toCreate, Collection<RecodeRule> toUpdate, Collection<RecodeRule> toClose, boolean needValidation);
}