package ru.hflabs.rcd.web.model;
import lombok.Getter;
import lombok.Setter;
import ru.hflabs.rcd.model.criteria.FilterCriteria;
import ru.hflabs.util.core.FormatUtil;
import javax.swing.*;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import java.io.Serializable;
/**
* Класс <class>PageRequestBean</class> реализует класс, содержащий информацию о запрашиваемой страницы объектов
*
* @see FilterCriteria
*/
@Getter
@Setter
@XmlAccessorType(XmlAccessType.PROPERTY)
public class PageRequestBean implements Serializable {
private static final long serialVersionUID = 6823481588460871997L;
/** Целевая страница по умолчанию */
public static final int DEFAULT_PAGE = 1;
/** Предпочтительный размер страницы */
@Max(FilterCriteria.COUNT_DEFAULT)
private Integer pageSize = null;
/** Целевая страница */
@Min(DEFAULT_PAGE)
@Max(Integer.MAX_VALUE)
private Integer page = DEFAULT_PAGE;
/** Строка поиска */
private String search;
/** Ключ сортировки */
private String sortOrderKey;
/** Значение сортировки */
private SortOrder sortOrderValue = SortOrder.UNSORTED;
public void setPage(Integer page) {
this.page = (page != null) ? page : DEFAULT_PAGE;
}
public void setSearch(String search) {
this.search = FormatUtil.parseString(search);
}
public void setSortOrderKey(String sortOrderKey) {
this.sortOrderKey = FormatUtil.parseString(sortOrderKey);
}
public FilterCriteria createFilterCriteria() {
return new FilterCriteria()
.injectSearch(search)
.injectSort(sortOrderKey, sortOrderValue);
}
}