}
@Override
@SuppressWarnings("unchecked")
public ProductSearchCriteria buildSearchCriteria(HttpServletRequest request, List<SearchFacetDTO> availableFacets) {
ProductSearchCriteria searchCriteria = new ProductSearchCriteria();
searchCriteria.setPageSize(getDefaultPageSize());
Map<String, String[]> facets = new HashMap<String, String[]>();
for (Iterator<Entry<String,String[]>> iter = request.getParameterMap().entrySet().iterator(); iter.hasNext();){
Map.Entry<String, String[]> entry = iter.next();
String key = entry.getKey();
if (key.equals(ProductSearchCriteria.SORT_STRING)) {
searchCriteria.setSortQuery(StringUtils.join(entry.getValue(), ","));
} else if (key.equals(ProductSearchCriteria.PAGE_NUMBER)) {
searchCriteria.setPage(Integer.parseInt(entry.getValue()[0]));
} else if (key.equals(ProductSearchCriteria.PAGE_SIZE_STRING)) {
int requestedPageSize = Integer.parseInt(entry.getValue()[0]);
int maxPageSize = getMaxPageSize();
searchCriteria.setPageSize(Math.min(requestedPageSize, maxPageSize));
} else if (key.equals(ProductSearchCriteria.QUERY_STRING)) {
continue; // This is handled by the controller
} else {
facets.put(key, entry.getValue());
}
}
searchCriteria.setFilterCriteria(facets);
return searchCriteria;
}