/*
* (c) Copyright 2005-2012 JAXIO, www.jaxio.com
* Source code generated by Celerio, a Jaxio product
* Want to use Celerio within your company? email us at info@jaxio.com
* Follow us on twitter: @springfuse
* Template pack-backend-sd:src/main/java/project/repository/support/SearchParameters.p.vm.java
*/
package com.company.demo.repository.support;
import java.io.Serializable;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort.Direction;
/**
* Holds extra informations to be displayed and filled by the spring mvc {@link Controller}.
*/
public class SearchParameters implements Serializable {
private static final long serialVersionUID = 1L;
private static final Logger log = Logger.getLogger(SearchParameters.class);
public static final String ASCENDING = "ascending";
public static final String DESCENDING = "descending";
private int pageNumber = 1;
private int pageSize = 15;
private String sortColumnKey;
private String sortOrder = ASCENDING;
private String searchPattern;
/**
* Limit the search to the passed page number. Must be positive (starts at 1). Its default value is 1.
*/
public void setPageNumber(int pageNumber) {
if (pageNumber <= 0) {
log.warn("trying to access invalid page number: " + pageNumber);
pageNumber = 1;
}
this.pageNumber = pageNumber;
}
/**
* Returns the page number used to limit the search. It is always positive (starts at 1).
*/
public int getPageNumber() {
return this.pageNumber;
}
/**
* Set the max number of items that can be displayed per page. The page size must be positive (starts at 1). It is used to limit the search.
*/
public void setPageSize(int pageSize) {
if (pageSize > 0) {
this.pageSize = pageSize;
} else {
log.warn("trying to set an invalid page size: " + pageSize);
}
}
/**
* Return the max number of search items that can be displayed per page.
*/
public int getPageSize() {
return pageSize;
}
/**
* Indicates that search result must be sort by the passed sortColumnKey.
*
* @param sortColumnKey
*/
public void setSortColumnKey(String sortColumnKey) {
this.sortColumnKey = sortColumnKey;
}
/**
* Returns the column name used to sort the search result.
*/
public String getSortColumnKey() {
return sortColumnKey;
}
public boolean hasSortColumnKey() {
return StringUtils.isNotBlank(sortColumnKey);
}
/**
* Set the sort order.
*
* @param sortOrder either ASCENDING, DESCENDING or an empty String
*/
public void setSortOrder(String sortOrder) {
this.sortOrder = sortOrder;
}
/**
* Return the sort order that is ASCENDING, DESCENDING or an empty String.
*/
public String getSortOrder() {
return sortOrder;
}
/**
* Return the Sort Order for the passed columns. It is used by the view.
*/
public String getSortOrderFor(String sortColumnKey) {
if (getSortColumnKey().equalsIgnoreCase(sortColumnKey)) {
return getSortOrder();
}
return "";
}
/**
* Return the reverse Sort Order for the passed columns. It is used by the view.
*
* @return DESCENDING if sort order is ASCENDING; ASCENDING otherwise.
*/
public String getReverseSortOrderFor(String sortColumnKey) {
if (ASCENDING.equals(getSortOrderFor(sortColumnKey))) {
return DESCENDING;
}
return ASCENDING;
}
/**
* Set the search pattern to apply to all string fields for executing the search.
*
* @param searchPattern
*/
public void setSearchPattern(String searchPattern) {
this.searchPattern = searchPattern;
}
/**
* Returns the search pattern that must be applied to all string fields when executing the search.
*/
public String getSearchPattern() {
return searchPattern;
}
public boolean hasSearchPattern() {
return StringUtils.isNotBlank(searchPattern);
}
/**
* Applies the passed parameters to the passed SearchTemplate.
* Note: filters are not supported for the moment
* @return the passed searchTemplate
*/
public PageRequest toPageRequest() {
if (hasSortColumnKey()) {
return new PageRequest(pageNumber - 1, pageSize, convert(sortOrder), sortColumnKey);
} else {
return new PageRequest(pageNumber - 1, pageSize);
}
}
/**
* Convert PrimeFaces SortOrder to our OrderByDirection.
*/
public static Direction convert(String sortOrder) {
// TODO: auto converter
if (DESCENDING.equalsIgnoreCase(sortOrder))
return Direction.DESC;
else
return Direction.ASC;
}
}