public TableSearchQuery(@Context UriInfo ui) {

		if (ui == null) {
			return;
		}

		MultivaluedMap<String, String> queryParameters = ui.getQueryParameters();
		EntityFilterType[] filterTypes = EntityFilterType.values();

		for (Map.Entry<String, List<String>> param : queryParameters.entrySet()) {
			for (EntityFilterType entityFilterType : filterTypes) {
				if (param.getKey().endsWith(entityFilterType.getSuffix())
					&& !param.getValue().get(0).isEmpty()) {

					String key = param.getKey().replaceFirst(entityFilterType.getSuffix(), "");
					EntityFilter entityFilter = new EntityFilter(entityFilterType, param.getValue());
					//handle MIN_MAX
					if (filterParameters.get(key) != null
						&& EntityFilterType.MIN.equals(entityFilter.getEntityFilterType())) {

						entityFilter.setEntityFilterType(EntityFilterType.MIN_MAX);
						entityFilter.getValues().add(filterParameters.get(key).getValue());
					} else if (filterParameters.get(key) != null
						&& EntityFilterType.MAX.equals(entityFilter.getEntityFilterType())) {

						entityFilter.setEntityFilterType(EntityFilterType.MIN_MAX);
						filterParameters.get(key).getValues().add(entityFilter.getValue());
						entityFilter.setValues(filterParameters.get(key).getValues());
					}
					filterParameters.put(key, entityFilter);
					break;
				}
			}
		}
	}