001: /*
002: * Copyright 2001-2005 Stephen Colebourne
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.joda.time;
017:
018: /**
019: * Writable interface for an interval.
020: *
021: * @author Stephen Colebourne
022: * @author Brian S O'Neill
023: * @since 1.0
024: */
025: public interface ReadWritableInterval extends ReadableInterval {
026:
027: /**
028: * Sets this interval from two millisecond instants.
029: *
030: * @param startInstant the start of the time interval
031: * @param endInstant the start of the time interval
032: * @throws IllegalArgumentException if the end is before the start
033: */
034: void setInterval(long startInstant, long endInstant);
035:
036: /**
037: * Sets this interval to be the same as another.
038: *
039: * @param interval the interval to copy
040: * @throws IllegalArgumentException if the end is before the start
041: */
042: void setInterval(ReadableInterval interval);
043:
044: /**
045: * Sets this interval from two instants.
046: *
047: * @param startInstant the start of the time interval
048: * @param endInstant the start of the time interval
049: * @throws IllegalArgumentException if the end is before the start
050: */
051: void setInterval(ReadableInstant startInstant,
052: ReadableInstant endInstant);
053:
054: //-----------------------------------------------------------------------
055: /**
056: * Sets the chronology of this time interval.
057: *
058: * @param chrono the chronology to use, null means ISO default
059: */
060: void setChronology(Chronology chrono);
061:
062: //-----------------------------------------------------------------------
063: /**
064: * Sets the start of this time interval.
065: *
066: * @param millisInstant the start of the time interval,
067: * millisecond instant from 1970-01-01T00:00:00Z
068: * @throws IllegalArgumentException if the end is before the start
069: */
070: void setStartMillis(long millisInstant);
071:
072: /**
073: * Sets the start of this time interval as an Instant.
074: *
075: * @param instant the start of the time interval
076: * @throws IllegalArgumentException if the end is before the start
077: */
078: void setStart(ReadableInstant instant);
079:
080: //-----------------------------------------------------------------------
081: /**
082: * Sets the end of this time interval.
083: *
084: * @param millisInstant the end of the time interval,
085: * millisecond instant from 1970-01-01T00:00:00Z
086: * @throws IllegalArgumentException if the end is before the start
087: */
088: void setEndMillis(long millisInstant);
089:
090: /**
091: * Sets the end of this time interval as an Instant.
092: *
093: * @param instant the end of the time interval
094: * @throws IllegalArgumentException if the end is before the start
095: */
096: void setEnd(ReadableInstant instant);
097:
098: //-----------------------------------------------------------------------
099: /**
100: * Sets the duration of this time interval, preserving the start instant.
101: *
102: * @param duration new duration for interval
103: * @throws IllegalArgumentException if the end is before the start
104: * @throws ArithmeticException if the end instant exceeds the capacity of a long
105: */
106: void setDurationAfterStart(ReadableDuration duration);
107:
108: /**
109: * Sets the duration of this time interval, preserving the end instant.
110: *
111: * @param duration new duration for interval
112: * @throws IllegalArgumentException if the end is before the start
113: * @throws ArithmeticException if the start instant exceeds the capacity of a long
114: */
115: void setDurationBeforeEnd(ReadableDuration duration);
116:
117: //-----------------------------------------------------------------------
118: /**
119: * Sets the period of this time interval, preserving the start instant.
120: *
121: * @param period new period for interval, null means zero length
122: * @throws IllegalArgumentException if the end is before the start
123: * @throws ArithmeticException if the end instant exceeds the capacity of a long
124: */
125: void setPeriodAfterStart(ReadablePeriod period);
126:
127: /**
128: * Sets the period of this time interval, preserving the end instant.
129: *
130: * @param period new period for interval, null means zero length
131: * @throws IllegalArgumentException if the end is before the start
132: * @throws ArithmeticException if the start instant exceeds the capacity of a long
133: */
134: void setPeriodBeforeEnd(ReadablePeriod period);
135:
136: }
|