package ru.hflabs.rcd.service;
import ru.hflabs.rcd.model.Identifying;
import ru.hflabs.rcd.model.criteria.CriteriaHolder;
import ru.hflabs.rcd.model.criteria.FilterCriteria;
/**
* Интерфейс <class>ICriteriaBuilder</class> декларирует методы сервиса построения критерии на основе фильтра
*
* @see Identifying
* @see CriteriaHolder
*/
public interface ICriteriaBuilder<E extends Identifying, C extends CriteriaHolder<Q>, Q> {
/**
* Создает и возвращает пустой критерий для обработки фильтра
*
* @param criteriaClass целевой класс критерии
* @return Возвращает пустой критерий
*/
C createEmptyCriteria(Class<E> criteriaClass);
/**
* Формирует и возвращает критерий
*
* @param criteriaClass целевой класс критерии
* @param filter фильтр построения критерии
* @return Возвращает построенный критерий запроса
*/
C createCriteria(Class<E> criteriaClass, FilterCriteria filter);
}