private static Range getIntersectedRange(CompositePartialTime cpt, Range r, Duration d) { Time beginTime = r.beginTime(); Time endTime = r.endTime(); if (beginTime != TIME_UNKNOWN && endTime != TIME_UNKNOWN) { Time t1 = cpt.intersect(r.beginTime()); if (t1 instanceof PartialTime) { ((PartialTime) t1).withStandardFields(); } Time t2 = cpt.intersect(r.endTime()); if (t2 instanceof PartialTime) { ((PartialTime) t2).withStandardFields(); } return new Range(t1, t2, d); } else if (beginTime != TIME_UNKNOWN && endTime == TIME_UNKNOWN) { Time t1 = cpt.intersect(r.beginTime()); if (t1 instanceof PartialTime) { ((PartialTime) t1).withStandardFields(); } Time t2 = t1.add(d); if (t2 instanceof PartialTime) { ((PartialTime) t2).withStandardFields(); } return new Range(t1, t2, d); } else { throw new RuntimeException("Unsupported range: " + r); } }
public Range offset(Duration d, int offsetFlags, int rangeFlags) { Time b2 = begin; if ((rangeFlags & RANGE_OFFSET_BEGIN) != 0) { b2 = (begin != null) ? begin.offset(d,offsetFlags) : null; } Time e2 = end; if ((rangeFlags & RANGE_OFFSET_END) != 0) { e2 = (end != null) ? end.offset(d,offsetFlags) : null; } return new Range(this, b2, e2, duration); }
public Range add(Duration d, int flags) { Duration d2 = duration.add(d); Time b2 = begin; Time e2 = end; if ((flags & RANGE_EXPAND_FIX_BEGIN) == 0) { b2 = (end != null) ? end.offset(d2.multiplyBy(-1),0) : null; } else if ((flags & RANGE_EXPAND_FIX_END) == 0) { e2 = (begin != null) ? begin.offset(d2,0) : null; } return new Range(this, b2, e2, d2); }
public Range add(Duration d, int flags) { Duration d2 = duration.add(d); Time b2 = begin; Time e2 = end; if ((flags & RANGE_EXPAND_FIX_BEGIN) == 0) { b2 = (end != null) ? end.offset(d2.multiplyBy(-1)) : null; } else if ((flags & RANGE_EXPAND_FIX_END) == 0) { e2 = (begin != null) ? begin.offset(d2) : null; } return new Range(this, b2, e2, d2); }
public Range offset(Duration d, int flags) { Time b2 = begin; if ((flags & RANGE_OFFSET_BEGIN) != 0) { b2 = (begin != null) ? begin.offset(d) : null; } Time e2 = end; if ((flags & RANGE_OFFSET_END) != 0) { e2 = (end != null) ? end.offset(d) : null; } return new Range(this, b2, e2, duration); }
@Override public Range getRange(int flags, Duration granularity) { return new Range(null, null, this); } // Unanchored range
public Range add(Duration d, int flags) { Duration d2 = duration.add(d); Time b2 = begin; Time e2 = end; if ((flags & RANGE_EXPAND_FIX_BEGIN) == 0) { b2 = (end != null) ? end.offset(d2.multiplyBy(-1),0) : null; } else if ((flags & RANGE_EXPAND_FIX_END) == 0) { e2 = (begin != null) ? begin.offset(d2,0) : null; } return new Range(this, b2, e2, d2); }
public Range offset(Duration d, int offsetFlags, int rangeFlags) { Time b2 = begin; if ((rangeFlags & RANGE_OFFSET_BEGIN) != 0) { b2 = (begin != null) ? begin.offset(d,offsetFlags) : null; } Time e2 = end; if ((rangeFlags & RANGE_OFFSET_END) != 0) { e2 = (end != null) ? end.offset(d,offsetFlags) : null; } return new Range(this, b2, e2, duration); }
Range likelyRange = null; if ((flags & (DUR_RESOLVE_FROM_AS_REF | RESOLVE_TO_FUTURE)) != 0) { likelyRange = new Range(refTime, maxTime, this); } else if ((flags & (DUR_RESOLVE_TO_AS_REF | RESOLVE_TO_PAST)) != 0) { likelyRange = new Range(minTime, refTime, this); } else { Duration halfDuration = this.divideBy(2); likelyRange = new Range(refTime.subtract(halfDuration), refTime.add(halfDuration), this);
@Override public Range resolve(Time refTime, int flags) { if (refTime == null) { return this; } if (isGrounded()) return this; if ((flags & RANGE_RESOLVE_TIME_REF) != 0 && (begin == TIME_REF || end == TIME_REF)) { Time groundedBegin = begin; Duration groundedDuration = duration; if (begin == TIME_REF) { groundedBegin = (Time) begin.resolve(refTime, flags); groundedDuration = (duration != null) ? duration.resolve(refTime, flags | DUR_RESOLVE_FROM_AS_REF) : null; } Time groundedEnd = end; if (end == TIME_REF) { groundedEnd = (Time) end.resolve(refTime, flags); groundedDuration = (duration != null) ? duration.resolve(refTime, flags | DUR_RESOLVE_TO_AS_REF) : null; } return new Range(this, groundedBegin, groundedEnd, groundedDuration); } else { return this; } }
@Override public SUTime.Range getRange(int flags, SUTime.Duration granularity) { return new SUTime.Range(this,this); }
@Override public Temporal intersect(Temporal t) { if (t instanceof Time) { return new RelativeTime((Time) t, TemporalOp.INTERSECT, this); } else if (t instanceof Range) { Range rt = (Range) t; // Assume begin/end defined (TODO: handle if duration defined) Time b = Time.max(begin, rt.begin); Time e = Time.min(end, rt.end); return new Range(b, e); } else if (t instanceof Duration) { return new InexactTime(null, (Duration) t, this); } return null; }
@Override public Range setTimeZone(DateTimeZone tz) { return new Range(this, (Time) Temporal.setTimeZone(begin, tz), (Time) Temporal.setTimeZone(end, tz), duration); }
@Override public Range getRange(int flags, Duration granularity) { return new Range(this, this); }
@Override public Range getRange(int flags, Duration granularity) { return new Range(this, this); }
@Override public Range getRange(int flags, Duration granularity) { return new Range(this, this); }
@Override public Range getRange(int flags, Duration granularity) { return new Range(null, null, this); } // Unanchored range
public Range add(Duration d, int flags) { Duration d2 = duration.add(d); Time b2 = begin; Time e2 = end; if ((flags & RANGE_EXPAND_FIX_BEGIN) == 0) { b2 = (end != null) ? end.offset(d2.multiplyBy(-1),0) : null; } else if ((flags & RANGE_EXPAND_FIX_END) == 0) { e2 = (begin != null) ? begin.offset(d2,0) : null; } return new Range(this, b2, e2, d2); }
public Range offset(Duration d, int offsetFlags, int rangeFlags) { Time b2 = begin; if ((rangeFlags & RANGE_OFFSET_BEGIN) != 0) { b2 = (begin != null) ? begin.offset(d,offsetFlags) : null; } Time e2 = end; if ((rangeFlags & RANGE_OFFSET_END) != 0) { e2 = (end != null) ? end.offset(d,offsetFlags) : null; } return new Range(this, b2, e2, duration); }