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 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 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 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); } }
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; }
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); }
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)); }
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; }
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); }
scaledRange.setTimeRange(timeRange.getStartTime(), timeRange.getEndTime());
constraints.removeConstraints(range[0], range[1]); if (start.getEndRange().getEndTime().after(end.getStartRange().getStartTime())) { constraints.getConstraintsForRange(range[0], range[1]).add( new TemporalRange( end.getStartRange().getStartTime(), start.getEndRange().getEndTime())); } else { new TemporalRange( start.getStartRange().getStartTime(), end.getEndRange().getEndTime()));
@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()); } }
@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()); }
leftResult.getName()); constraints.add( new TemporalRange(rightResult.getEndRange().getEndTime(), TemporalRange.END_TIME)); return constraints; } else { rightResult.getName()); constraints.add( new TemporalRange(leftResult.getEndRange().getEndTime(), TemporalRange.END_TIME)); return constraints;
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; }
final TemporalRange statsEndRange = getStatsRange(statsMap, timeDescriptors.getEndRange()); final TemporalRange fullRange = new TemporalRange(statsStartRange.getStartTime(), statsEndRange.getEndTime());