private boolean isParameterName(ComparisonFilter filter) { return XPATH_OM_PARAMETER_NAMED_VALUE_NAME.equals(filter.getValueReference()); }
private boolean isParameterValue(ComparisonFilter filter) { return XPATH_OM_PARAMETER_NAMED_VALUE_VALUE.equals(filter.getValueReference()); }
private boolean isParameterName(ComparisonFilter filter) { return XPATH_OM_PARAMETER_NAMED_VALUE_NAME.equals(filter.getValueReference()); }
private boolean isParameterValue(ComparisonFilter filter) { return XPATH_OM_PARAMETER_NAMED_VALUE_VALUE.equals(filter.getValueReference()); }
private void checkFilter(ComparisonFilter filter) throws CodedException { if (!filter.hasValueReference()) { throw new MissingParameterValueException(ResultFilterConstants.RESULT_FILTER + ".valueReference"); } else if (!(filter.getValueReference().startsWith(".") || filter.getValueReference().startsWith("om:result"))) { throw new InvalidParameterValueException(ResultFilterConstants.RESULT_FILTER + ".valueReference", filter.getValueReference()); } if (filter.getOperator() == null) { throw new MissingParameterValueException(ResultFilterConstants.RESULT_FILTER + ".operator"); } if (filter.getValue() == null) { throw new MissingParameterValueException(ResultFilterConstants.RESULT_FILTER + ".value"); } }
return Restrictions.eq(filter.getValueReference(), v); case PropertyIsGreaterThan: return Restrictions.gt(filter.getValueReference(), v); case PropertyIsGreaterThanOrEqualTo: return Restrictions.ge(filter.getValueReference(), v); case PropertyIsLessThan: return Restrictions.lt(filter.getValueReference(), v); case PropertyIsLessThanOrEqualTo: return Restrictions.le(filter.getValueReference(), v); case PropertyIsLike: if (!(v instanceof String)) { case PropertyIsNull: case PropertyIsNil: return Restrictions.isNull(filter.getValueReference()); case PropertyIsNotEqualTo: return Restrictions.ne(filter.getValueReference(), v); default: return unsupported(filter);
private Set<Filter<?>> checkForBetweenComparisonFilter(Collection<Filter<?>> set) throws OwsExceptionReport { Set<Filter<?>> prepared = new LinkedHashSet<>(); ComparisonFilter ge = null; for (Filter<?> filter : set) { if (filter instanceof ComparisonFilter) { if (filter.getOperator().equals(FilterConstants.ComparisonOperator.PropertyIsGreaterThanOrEqualTo)) { ge = (ComparisonFilter) filter; } else if (filter.getOperator().equals(FilterConstants.ComparisonOperator.PropertyIsLessThanOrEqualTo) && ge != null) { ComparisonFilter le = (ComparisonFilter) filter; prepared.add(new ComparisonFilter(FilterConstants.ComparisonOperator.PropertyIsBetween, ge.getValueReference(), ge.getValue(), le.getValue())); ge = null; } else { prepared.add(filter); } } else { prepared.add(filter); } } if (ge != null) { prepared.add(ge); } return prepared; } }
@Override public String toString() { String result = "ComparisonFilter: "; if (isSetValueUpper()) { return result + getValueReference() + " " + getValue() + " " + getOperator().name() + " " + getValueUpper(); } else { return result + getValueReference() + " " + getOperator().name() + " " + getValue(); } }
@Override public String toString() { String result = "ComparisonFilter: "; if (isSetValueUpper()) { return result + getValueReference() + " " + getValue() + " " + getOperator().name() + " " + getValueUpper(); } else { return result + getValueReference() + " " + getOperator().name() + " " + getValue(); } }
/** * Transforms a {@code PropertyIsBetween} filter into an {@code PropertyIsGreaterThanOrEqualTo} and * {@code PropertyIsLessThanOrEqualTo} filter. * * @param filter the filter * * @return the simplified filter */ private Filter<?> simplifyPropertyIsBetween(ComparisonFilter filter) { String valueReference = filter.getValueReference(); String lower = filter.getValue(); String upper = filter.getValueUpper(); return Filters.and(Filters.ge(valueReference, lower), Filters.le(valueReference, upper)); }
@Override protected Criterion createDatasetCriterion(String property, ComparisonFilter filter) { Object value; if (isMatchDomainIds()) { filter.setValueReference(DescribableEntity.PROPERTY_DOMAIN_ID); value = filter.getValue(); } else { filter.setValueReference(DescribableEntity.PROPERTY_ID); Optional<Long> id = parseLong(filter.getValue()); if (!id.isPresent()) { return unsupported(filter); } value = id.get(); } String alias = addAlias(property); filter.setValueReference(QueryUtils.createAssociation(alias, filter.getValueReference())); return createComparison(filter, value); }
switch (filter.getValueReference()) { case VR_RESULT: return createResultCriterion(filter);
private Map<NameValue, Set<String>> checkForNameValue(ComparisonFilter filter, Map<NameValue, Set<String>> map) throws CodedException { switch (filter.getOperator()) { case PropertyIsEqualTo: if (isParameterName(filter)) { addValue(NameValue.NAME, filter, map); } else if (isParameterValue(filter)) { addValue(NameValue.VALUE, filter, map); } else { throw new NoApplicableCodeException().withMessage( "Currently only the valueReference values '{}' and '{}' are supported! The requested valueReference is '{}'", XPATH_OM_PARAMETER_NAMED_VALUE_NAME, XPATH_OM_PARAMETER_NAMED_VALUE_VALUE, filter.getValueReference()); } return map; default: throw new NoApplicableCodeException().withMessage("Currently only the operator '{}' is supported!", PropertyIsEqualTo.toString()); } }
private Map<NameValue, Set<String>> checkForNameValue(ComparisonFilter filter, Map<NameValue, Set<String>> map) throws CodedException { switch (filter.getOperator()) { case PropertyIsEqualTo: if (isParameterName(filter)) { addValue(NameValue.NAME, filter, map); } else if (isParameterValue(filter)) { addValue(NameValue.VALUE, filter, map); } else { throw new NoApplicableCodeException().withMessage( "Currently only the valueReference values '{}' and '{}' are supported! The requested valueReference is '{}'", XPATH_OM_PARAMETER_NAMED_VALUE_NAME, XPATH_OM_PARAMETER_NAMED_VALUE_VALUE, filter.getValueReference()); } return map; default: throw new NoApplicableCodeException().withMessage("Currently only the operator '{}' is supported!", PropertyIsEqualTo.toString()); } }
private ComparisonFilter convertComparisonFilter(org.n52.shetland.ogc.filter.ComparisonFilter filter) { ComparisonFilter comparisonFilter = new ComparisonFilter(); comparisonFilter.setOperator(convertComparisonOperator(filter.getOperator())); comparisonFilter.setEscapeString(filter.getEscapeString()); comparisonFilter.setMatchCase(filter.isMatchCase()); comparisonFilter.setSingleChar(filter.getSingleChar()); comparisonFilter.setValue(filter.getValue()); comparisonFilter.setValueReference(filter.getValueReference()); comparisonFilter.setValueUpper(filter.getValueUpper()); comparisonFilter.setWildCard(filter.getWildCard()); return comparisonFilter; }
private ComparisonFilter convertComparisonFilter(org.n52.shetland.ogc.filter.ComparisonFilter filter) { ComparisonFilter comparisonFilter = new ComparisonFilter(); comparisonFilter.setOperator(convertComparisonOperator(filter.getOperator())); comparisonFilter.setEscapeString(filter.getEscapeString()); comparisonFilter.setMatchCase(filter.isMatchCase()); comparisonFilter.setSingleChar(filter.getSingleChar()); comparisonFilter.setValue(filter.getValue()); comparisonFilter.setValueReference(filter.getValueReference()); comparisonFilter.setValueUpper(filter.getValueUpper()); comparisonFilter.setWildCard(filter.getWildCard()); return comparisonFilter; }
/** * Get the Hibernate Criterion for the requested result filter * * @param resultFilter * Requested result filter * * @return Hibernate Criterion * * @throws CodedException * If the requested result filter is not supported */ public static Criterion getCriterionForComparisonFilter(ComparisonFilter resultFilter) throws CodedException { if (FilterConstants.ComparisonOperator.PropertyIsLike.equals(resultFilter.getOperator())) { checkValueReferenceForResultFilter(resultFilter.getValueReference()); if (resultFilter.isSetEscapeString()) { return HibernateCriterionHelper.getLikeExpression(DatasetEntity.DESCRIPTION, checkValueForWildcardSingleCharAndEscape(resultFilter), MatchMode.ANYWHERE, '$', true); } else { return Restrictions.like(DatasetEntity.DESCRIPTION, checkValueForWildcardSingleCharAndEscape(resultFilter), MatchMode.ANYWHERE); } } else { throw new NoApplicableCodeException().withMessage( "The requested comparison filter {} is not supported! Only {} is supported!", resultFilter .getOperator().name(), FilterConstants.ComparisonOperator.PropertyIsLike.name()); } }
/** * Get the Hibernate Criterion for the requested result filter * * @param resultFilter * Requested result filter * * @return Hibernate Criterion * * @throws CodedException * If the requested result filter is not supported */ public static Criterion getCriterionForComparisonFilter(ComparisonFilter resultFilter) throws CodedException { if (FilterConstants.ComparisonOperator.PropertyIsLike.equals(resultFilter.getOperator())) { checkValueReferenceForResultFilter(resultFilter.getValueReference()); if (resultFilter.isSetEscapeString()) { return HibernateCriterionHelper.getLikeExpression(DatasetEntity.DESCRIPTION, checkValueForWildcardSingleCharAndEscape(resultFilter), MatchMode.ANYWHERE, '$', true); } else { return Restrictions.like(DatasetEntity.DESCRIPTION, checkValueForWildcardSingleCharAndEscape(resultFilter), MatchMode.ANYWHERE); } } else { throw new NoApplicableCodeException().withMessage( "The requested comparison filter {} is not supported! Only {} is supported!", resultFilter .getOperator().name(), FilterConstants.ComparisonOperator.PropertyIsLike.name()); } }
public ComparisonFilter copy() { ComparisonFilter copy = new ComparisonFilter(); if (isSetEscapeString()) { copy.setEscapeString(getEscapeString()); } if (isSetOperator()) { copy.setOperator(getOperator()); } if (isSetSingleChar()) { copy.setSingleChar(getSingleChar()); } if (isSetValue()) { copy.setValue(getValue()); } if (isSetValueUpper()) { copy.setValueUpper(getValueUpper()); } if (isSetWildCard()) { copy.setWildCard(getWildCard()); } copy.setValueReference(getValueReference()); copy.setMatchCase(isMatchCase()); return copy; }
public ComparisonFilter copy() { ComparisonFilter copy = new ComparisonFilter(); if (isSetEscapeString()) { copy.setEscapeString(getEscapeString()); } if (isSetOperator()) { copy.setOperator(getOperator()); } if (isSetSingleChar()) { copy.setSingleChar(getSingleChar()); } if (isSetValue()) { copy.setValue(getValue()); } if (isSetValueUpper()) { copy.setValueUpper(getValueUpper()); } if (isSetWildCard()) { copy.setWildCard(getWildCard()); } copy.setValueReference(getValueReference()); copy.setMatchCase(isMatchCase()); return copy; }