package ru.hflabs.rcd.model.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* Аннотация <class>Indexed</class> определяет набор полей, которые участвуют в поиске/сортировке/фильтрации
*/
@Target(TYPE)
@Retention(RUNTIME)
public @interface Indexed {
/**
* @return Возвращает название поля с первичным ключем
*/
String id();
/**
* @return Возвращает набор полей для индексации
*/
Field[] fields();
/**
* Аннотация <class>Field</class> описывает параметры индексации поля
*/
@interface Field {
/**
* @return Возвращает название индексируемого поля
*/
String value();
/**
* @return Возвращает массив дополнительных псевдонимов для поля
*/
String[] alias() default {};
/**
* @return Возвращает флаг участия поля в поиске
*/
boolean search() default false;
/**
* @return Возвращает флаг участия поля в фильтрации
*/
boolean filter() default true;
/**
* @return Возвращает флаг участия поля в сортировке
*/
boolean sort() default true;
}
}