/** * Return constraints that are indexed * * @param query * @return */ protected TemporalConstraintsSet getBoundedTime(final Query query) { if (query == null) { return null; } final TemporalConstraintsSet constraints = new ExtractTimeFilterVisitor( reader.getComponents().getAdapter().getTimeDescriptors()).getConstraints(query); return constraints.isEmpty() ? constraints : reader.clipIndexedTemporalConstraints(constraints); }
/** * Please note we are only visiting literals involved in spatial operations. * * @param literal , hopefully a Geometry or Envelope * @param data Incoming BoundingBox (or Envelope or CRS) * @return ReferencedEnvelope updated to reflect literal */ @Override public Object visit(final Literal expression, final Object data) { final Object value = expression.getValue(); return btime(value); }
private boolean containsTime(final Function function) { boolean yes = false; for (final Expression expression : function.getParameters()) { yes |= expressionContainsTime(expression); } return yes; }
public TemporalConstraintsSet getConstraints(final Query query) { return getConstraints(query.getFilter()); }
return toSet(new TemporalRange((Date) data, (Date) data)); } else if (data instanceof Timestamp) { return toSet(new TemporalRange((Timestamp) data, (Timestamp) data)); } else if (data instanceof Number) { final long val = ((Number) data).longValue(); return toSet(new TemporalRange(new Date(val), new Date(val))); } else if (data instanceof TemporalRange) { return toSet((TemporalRange) data); } else if (data instanceof TemporalConstraints) { return (TemporalConstraints) data; return new TemporalConstraints(); return toSet(new TemporalRange(s, e)); } else if (data instanceof Instant) { final Position beginPosition = ((Instant) data).getPosition(); s = beginPosition.getTime(); return toSet(new TemporalRange(s, s)); return btime(convertedDate);
@Override public Object visit(final Not filter, final Object data) { final Object output = filter.getFilter().accept(this, data); if (output instanceof ParameterTimeConstraint) { return not((ParameterTimeConstraint) output); } else if (output instanceof TemporalConstraintsSet) { final TemporalConstraintsSet newRangeSet = new TemporalConstraintsSet(); final TemporalConstraintsSet rangeSet = (TemporalConstraintsSet) output; for (final Map.Entry<String, TemporalConstraints> entry : rangeSet.getSet()) { newRangeSet.getConstraintsFor(entry.getKey()).replaceWithMerged(not(entry.getValue())); } return newRangeSet; } return output; }
@Override public Object visit(final PropertyName expression, final Object data) { final String name = expression.getPropertyName(); if (validateName(expression.getPropertyName())) { // for (final String[] range : validParamRanges) { // if (range[0].equals(name) || range[1].equals(name)) { // return new ParameterTimeConstraint( // range[0] + "_" + range[1]); // } // } return new ParameterTimeConstraint(name); } return new TemporalConstraints(); }
public ExtractTimeFilterVisitor(final TimeDescriptors timeDescriptors) { if (timeDescriptors.hasTime() && (timeDescriptors.getStartRange() != null) && (timeDescriptors.getEndRange() != null)) { addRangeVariables( timeDescriptors.getStartRange().getLocalName(), timeDescriptors.getEndRange().getLocalName()); } }
public TemporalConstraintsSet getConstraints(final Filter filter) { final TemporalConstraintsSet constrainsSet = getRawConstraints(filter); constrainsSet.setExact(!approximation); for (final String[] range : validParamRanges) { if (constrainsSet.hasConstraintsFor(range[0]) || constrainsSet.hasConstraintsFor(range[1])) { final TemporalConstraints start = (constrainsSet.hasConstraintsFor(range[0])) ? constrainsSet.getConstraintsFor(range[0]) : constrainsSet.getConstraintsFor(range[1]); // Note: getConstraints has a side effect that is returns a // constraint--full range, if necessary // so if start and end are both not specific, the prior line // would create the end // thus sconstraints and econstraints will be identical final TemporalConstraints end = (constrainsSet.hasConstraintsFor(range[1])) ? constrainsSet.getConstraintsFor(range[1]) : start; constrainsSet.removeConstraints(range[0], range[1]); final TemporalConstraints constraintsForRange = constrainsSet.getConstraintsForRange(range[0], range[1]); constraintsForRange.replaceWithIntersections( new TemporalConstraints( new TemporalRange( start.getStartRange().getStartTime(), end.getEndRange().getEndTime()), constraintsForRange.getName())); } } return constrainsSet; }
adapter.getFeatureType().getGeometryDescriptor().getLocalName()); final TemporalConstraintsSet timeConstraintSet = new ExtractTimeFilterVisitor(adapter.getTimeDescriptors()).getConstraints(cqlFilter);
@Override public Object visit(final After after, final Object data) { final TemporalConstraints leftResult = btime(after.getExpression1().accept(this, data)); final TemporalConstraints rightResult = btime(after.getExpression2().accept(this, data)); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } // property after value if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( rightResult.getMaxOr(TemporalRange.START_TIME, 1), TemporalRange.END_TIME), leftResult.getName()); } else if (rightResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( TemporalRange.START_TIME, leftResult.getMinOr(TemporalRange.END_TIME, -1)), rightResult.getName()); } // property after property return new TemporalConstraints(); }
@Override public Object visit(final Before before, final Object data) { final TemporalConstraints leftResult = btime(before.getExpression1().accept(this, data)); final TemporalConstraints rightResult = btime(before.getExpression2().accept(this, data)); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } // property before value if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( TemporalRange.START_TIME, rightResult.getMinOr(TemporalRange.END_TIME, -1)), leftResult.getName()); } else if (rightResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( leftResult.getMaxOr(TemporalRange.START_TIME, 1), TemporalRange.END_TIME), rightResult.getName()); } // property after property return new TemporalConstraints(); }