package be.mentoringsystems.merke.model; import be.mentoringsystems.merke.helper.ConversionHelper; import com.fasterxml.jackson.annotation.JsonAnySetter; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; /** * * @author anthonyarents */ public class QueryParams { private int start = 0; private int limit = 0; private FilterMap filter = new FilterMap(); private SortingMap sort = new SortingMap(); private List initializeExtra = new ArrayList(); // return message can be used to return statusses like "data generated" to other methods. private String returnmessage; public String getReturnmessage() { return returnmessage; } public void setReturnmessage(final String returnmessage) { this.returnmessage = returnmessage; } public String getLoadConfig() { return ConversionHelper.toString(this.getFilterValue("loadconfig")); } public void setLoadConfig(final String val) { this.addFilter("loadconfig", val); } public List getInitializeExtra() { return initializeExtra; } public void setInitializeExtra(final List initializeExtra) { this.initializeExtra = initializeExtra; } public void addInitializeExtra(final String property) { this.initializeExtra.add(property); } public FilterMap getFilter() { return filter; } public void setFilter(final FilterMap filter) { this.filter = filter; } public void setSearch(final String search) { this.addFilter("search", search); } @JsonAnySetter public void addFilter(final String property, final Object value) { if (!StringUtils.isEmpty(property) && !StringUtils.startsWith(property, "_")) { Filter filter = getFilter(property); if (filter == null) { filter = new Filter(); filter.setProperty(property); filter.setValue(value); this.filter.addFilter(filter); } else { filter.setValue(value); } } } public void addSorting(final String property, final String direction) { if (!StringUtils.isEmpty(property)) { Sorting sorting = new Sorting(); sorting.setProperty(property); sorting.setDirection(direction); getSort().getSortings().add(sorting); } } public Filter getFilter(final String property) { if (this.getFilter() == null) { return null; } else { return this.filter.getFilter(property); } } public Object getFilterValue(final String property) { if (this.getFilter() == null) { return null; } else { return this.getFilter().getValue(property); } } public int getLimit() { return limit; } public void setLimit(final int limit) { this.limit = limit; } public SortingMap getSort() { return sort; } public void setSort(final SortingMap sort) { this.sort = sort; } public int getStart() { return start; } public void setStart(final int start) { this.start = start; } }