package jpasearch.repository.query;
import java.io.Serializable;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import jpasearch.repository.query.selector.Selectors;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* @author speralta
*/
public class SearchParameters<FROM> implements Serializable {
private static final long serialVersionUID = 201403271745L;
// sort
private final Set<OrderBy<FROM, ?>> orders;
// pagination
private final int maxResults;
private final int firstResult;
// fetches
private final Set<Path<FROM, ?>> fetches;
// selectors
private final Selectors<FROM> selectors;
// extra namedQueryParameters
private final Map<String, Object> extraParameters;
private final boolean useDistinct;
public SearchParameters(int firstResult, //
int maxResults, //
Selectors<FROM> selectors, //
Set<Path<FROM, ?>> fetches, //
Set<OrderBy<FROM, ?>> orders, //
Map<String, Object> extraParameters, //
boolean useDistinct) {
this.firstResult = firstResult;
this.maxResults = maxResults;
this.selectors = selectors;
this.fetches = Collections.unmodifiableSet(fetches);
this.orders = Collections.unmodifiableSet(orders);
this.extraParameters = Collections.unmodifiableMap(extraParameters);
this.useDistinct = useDistinct;
}
public Set<OrderBy<FROM, ?>> getOrders() {
return orders;
}
public int getMaxResults() {
return maxResults;
}
public int getFirstResult() {
return firstResult;
}
public Set<Path<FROM, ?>> getFetches() {
return fetches;
}
public Selectors<FROM> getSelectors() {
return selectors;
}
public Map<String, Object> getExtraParameters() {
return extraParameters;
}
public boolean isUseDistinct() {
return useDistinct;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}