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 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); } }
public byte[] toBinary() { final ByteBuffer buf = ByteBuffer.allocate(getBufferSize()); toBinary(buf); return buf.array(); }
public static ConstraintSet createConstraints( final TemporalRange temporalRange, final boolean isDefault) { return new ConstraintSet( TimeDefinition.class, new ConstraintData( new NumericRange( temporalRange.getStartTime().getTime(), temporalRange.getEndTime().getTime()), isDefault)); }
@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()); } }
public TemporalRange asTemporalRange() { return new TemporalRange(new Date(getMin()), new Date(getMax())); }
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; }
public Date getMinOr(final Date min, int exclusivityIncrement) { return (constraints.isEmpty()) ? min : exclusivityIncrement == 0 ? constraints.getFirst().getStartTime() : new Date(constraints.getFirst().getStartTime().getTime() + exclusivityIncrement); }
public Date getMaxOr(final Date max, int exclusivityIncrement) { return (constraints.isEmpty()) ? max : exclusivityIncrement == 0 ? constraints.getLast().getEndTime() : new Date(constraints.getLast().getEndTime().getTime() + exclusivityIncrement); }
public void fromBinary(final byte[] data) { final ByteBuffer buf = ByteBuffer.wrap(data); fromBinary(buf); }
startRange.asTemporalRange().union(endRange.asTemporalRange()), true); } else if (endRange != null) {
private static Constraints createTemporalConstraints( final TemporalConstraints temporalConstraints) { final List<ConstraintSet> constraints = new ArrayList<>(); for (final TemporalRange range : temporalConstraints.getRanges()) { constraints.add( new ConstraintSet( TimeDefinition.class, new ConstraintData( new NumericRange(range.getStartTime().getTime(), range.getEndTime().getTime()), false))); } return new Constraints(constraints); }
@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()); } }
@Override public Object visit(final OverlappedBy overlappedBy, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) overlappedBy.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) overlappedBy.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } // property overlappedBy value if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( rightResult.getMinOr(TemporalRange.START_TIME, 1), TemporalRange.END_TIME), leftResult.getName()); } else if (rightResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( TemporalRange.START_TIME, leftResult.getMaxOr(TemporalRange.END_TIME, -1)), rightResult.getName()); } // property overlappedBy property return new TemporalConstraints(); }
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 static Constraints createConstraints( final TemporalConstraints temporalConstraints, final boolean isDefault) { final List<ConstraintSet> constraints = new ArrayList<>(); for (final TemporalRange range : temporalConstraints.getRanges()) { constraints.add( new ConstraintSet( TimeDefinition.class, new ConstraintData( new NumericRange(range.getStartTime().getTime(), range.getEndTime().getTime()), isDefault))); } return new Constraints(constraints); }
@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 MetBy metBy, final Object data) { final TemporalConstraints leftResult = (TemporalConstraints) metBy.getExpression1().accept(this, data); final TemporalConstraints rightResult = (TemporalConstraints) metBy.getExpression2().accept(this, data); if (leftResult.isEmpty() || rightResult.isEmpty()) { return new TemporalConstraints(); } // property ends value if (leftResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( rightResult.getMaxOr(TemporalRange.START_TIME, 0), TemporalRange.END_TIME), leftResult.getName()); } else if (rightResult instanceof ParameterTimeConstraint) { return new ParameterTimeConstraint( new TemporalRange( TemporalRange.START_TIME, leftResult.getMinOr(TemporalRange.END_TIME, 0)), rightResult.getName()); } // property ends property return new TemporalConstraints(); }
public byte[] toBinary() { int bufferSize = VarintUtils.unsignedIntByteLength(constraints.size()); for (final TemporalRange range : constraints) { bufferSize += range.getBufferSize(); } final ByteBuffer buffer = ByteBuffer.allocate(bufferSize); VarintUtils.writeUnsignedInt(constraints.size(), buffer); for (final TemporalRange range : constraints) { range.toBinary(buffer); } return buffer.array(); }
public void add(final TemporalRange range) { int pos = 0; TemporalRange nextNeighbor = null; for (final TemporalRange aRange : constraints) { nextNeighbor = aRange; if (nextNeighbor.getStartTime().after(range.getStartTime())) { break; } else if (nextNeighbor.getEndTime().after(range.getStartTime()) || nextNeighbor.getEndTime().equals(range.getStartTime())) { if (range.getEndTime().before(nextNeighbor.getEndTime())) { // subsummed return; } else { // replaced with larger range constraints.set(pos, new TemporalRange(nextNeighbor.getStartTime(), range.getEndTime())); return; } } pos++; } if ((nextNeighbor != null) && nextNeighbor.getStartTime().before(range.getEndTime())) { constraints.add( pos, new TemporalRange( range.getStartTime(), TemporalConstraints.max(nextNeighbor.getEndTime(), range.getEndTime()))); } else { constraints.add(pos, range); } }