public TemporalRange union(TemporalRange range) { Date start = startTime.before(range.getStartTime()) ? startTime : range.getStartTime(); Date end = endTime.after(range.getEndTime()) ? endTime : range.getEndTime(); if (start.after(end)) return new TemporalRange(START_TIME, START_TIME); return new TemporalRange(start, end); }
public TemporalRange asTemporalRange() { return new TemporalRange(new Date(getMin()), new Date(getMax())); }
public TemporalRange intersect(TemporalRange range) { Date start = startTime.after(range.getStartTime()) ? startTime : range.getStartTime(); Date end = endTime.before(range.getEndTime()) ? endTime : range.getEndTime(); if (start.after(end)) return new TemporalRange(START_TIME, START_TIME); return new TemporalRange(start, end); }
public void fromBinary(final byte[] data) { final ByteBuffer buffer = ByteBuffer.wrap(data); final int s = VarintUtils.readUnsignedInt(buffer); for (int i = 0; i < s; i++) { final TemporalRange range = new TemporalRange(); range.fromBinary(buffer); add(range); } }
@Override public Object visit(final PropertyIsLessThan filter, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) filter.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) filter.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( TemporalRange.START_TIME, new Date(rightResult.getStartRange().getStartTime().getTime() - 1)), leftResult.getName()); } else { return new ParameterTimeConstraint( new TemporalRange( new Date(leftResult.getStartRange().getStartTime().getTime() + 1), TemporalRange.END_TIME), rightResult.getName()); } }
@Override public Object visit(final PropertyIsGreaterThan filter, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) filter.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) filter.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( new Date(rightResult.getStartRange().getStartTime().getTime() + 1), TemporalRange.END_TIME), leftResult.getName()); } else { return new ParameterTimeConstraint( new TemporalRange( TemporalRange.START_TIME, new Date(leftResult.getStartRange().getStartTime().getTime() - 1)), rightResult.getName()); } }
private TemporalConstraints not(final TemporalConstraints constraints) { final ParameterTimeConstraint notRanges = new ParameterTimeConstraint(constraints.getName()); notRanges.empty(); Date lastMax = TemporalRange.START_TIME; for (final TemporalRange range : constraints.getRanges()) { if (range.getStartTime().after(TemporalRange.START_TIME)) { notRanges.add(new TemporalRange(lastMax, new Date(range.getStartTime().getTime() - 1))); } lastMax = range.getEndTime(); } if (!constraints.isEmpty() && (TemporalRange.END_TIME.after(constraints.getEndRange().getEndTime()))) { notRanges.add(new TemporalRange(lastMax, TemporalRange.END_TIME)); } return notRanges; }
@Override public Object visit(final PropertyIsGreaterThanOrEqualTo filter, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) filter.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) filter.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange(rightResult.getStartRange().getStartTime(), TemporalRange.END_TIME), leftResult.getName()); } else { return new ParameterTimeConstraint( new TemporalRange(TemporalRange.START_TIME, leftResult.getStartRange().getStartTime()), rightResult.getName()); } }
@Override public Object visit(final PropertyIsLessThanOrEqualTo filter, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) filter.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) filter.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange(TemporalRange.START_TIME, rightResult.getStartRange().getStartTime()), leftResult.getName()); } else { return new ParameterTimeConstraint( new TemporalRange(leftResult.getStartRange().getStartTime(), TemporalRange.END_TIME), rightResult.getName()); } }
@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 PropertyIsEqualTo filter, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) filter.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) filter.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( rightResult.getStartRange().getStartTime(), rightResult.getEndRange().getEndTime()), leftResult.getName()); } else { return new ParameterTimeConstraint( new TemporalRange( leftResult.getStartRange().getStartTime(), leftResult.getEndRange().getEndTime()), rightResult.getName()); } }
public static final TemporalConstraints findIntersections( final TemporalConstraints sideL, final TemporalConstraints sideR) { if (sideL.constraints.isEmpty()) { return sideR; } if (sideR.constraints.isEmpty()) { return sideL; } final TemporalConstraints newSet = new TemporalConstraints(sideL.name); for (final TemporalRange lRange : sideL.constraints) { for (final TemporalRange rRange : sideR.constraints) { if (lRange.getEndTime().before(rRange.getStartTime()) || rRange.getEndTime().before(lRange.getStartTime())) { continue; } newSet.add( new TemporalRange( max(lRange.getStartTime(), rRange.getStartTime()), min(lRange.getEndTime(), rRange.getEndTime()))); } } return newSet; }
@Override public Object visit(final PropertyIsBetween filter, final Object data) { final TemporalConstraints propertyExp = (TemporalConstraints) filter.getExpression().accept(this, data); final TemporalConstraints lowerBound = (TemporalConstraints) filter.getLowerBoundary().accept(this, data); final TemporalConstraints upperBound = (TemporalConstraints) filter.getUpperBoundary().accept(this, data); if (propertyExp.isEmpty()) { return new TemporalConstraints(); } return new ParameterTimeConstraint( new TemporalRange( lowerBound.getStartRange().getStartTime(), upperBound.getEndRange().getEndTime()), propertyExp.getName()); }
@Override public Object visit(final Meets meets, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) meets.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) meets.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } // property ends value if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( TemporalRange.START_TIME, rightResult.getMinOr(TemporalRange.END_TIME, 0)), leftResult.getName()); } else if (rightResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint(rightResult.getName()); } // property ended by property return new TemporalConstraints(); }
@Override public Object visit(final BegunBy begunBy, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) begunBy.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) begunBy.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } // property begun by value if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( rightResult.getMinOr(TemporalRange.START_TIME, 0), TemporalRange.END_TIME), leftResult.getName()); } else if (rightResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint(leftResult.getRanges(), rightResult.getName()); } // property begins property return new TemporalConstraints(); }
private static TemporalRange getStatsRange( final Map<StatisticsId, InternalDataStatistics<SimpleFeature, ?, ?>> statsMap, final AttributeDescriptor attr) { final TemporalRange timeRange = new TemporalRange(); if (attr != null) { final FeatureTimeRangeStatistics stat = ((FeatureTimeRangeStatistics) statsMap.get( VectorStatisticsQueryBuilder.newBuilder().factory().timeRange().fieldName( attr.getLocalName()).build().getId())); if (stat != null) { timeRange.setStartTime(stat.getMinTime()); timeRange.setEndTime(stat.getMaxTime()); } } return timeRange; }
@Override public Object visit(final TContains contains, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) contains.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) contains.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } // property contains value if (leftResult instanceof ParameterTimeConstraint) { return new TemporalConstraints( new TemporalRange( TemporalRange.START_TIME, rightResult.getMaxOr(TemporalRange.END_TIME, -1)), leftResult.getName()); } else if (rightResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint(leftResult.getRanges(), rightResult.getName()); } // property contains property return new TemporalConstraints(); }
@Override public Object visit(final Begins begins, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) begins.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) begins.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } // property begins value if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint(rightResult.getRanges(), leftResult.getName()); } else if (rightResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( leftResult.getMinOr(TemporalRange.START_TIME, 0), TemporalRange.END_TIME), rightResult.getName()); } // property begins property return new TemporalConstraints(); }
@Override public Object visit(final Ends ends, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) ends.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) ends.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } // property ends value if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint(rightResult.getRanges(), leftResult.getName()); } else if (rightResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( TemporalRange.START_TIME, leftResult.getMaxOr(TemporalRange.END_TIME, 0)), rightResult.getName()); } // property ended by property return new TemporalConstraints(); }
@Override public Object visit(final EndedBy endedBy, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) endedBy.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) endedBy.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } // property ended by value if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( TemporalRange.START_TIME, rightResult.getMaxOr(TemporalRange.END_TIME, 0)), leftResult.getName()); } else if (rightResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint(leftResult.getRanges(), rightResult.getName()); } // property ended by property return new TemporalConstraints(); }