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, ReadableInstant endInstant);
052
053 //-----------------------------------------------------------------------
054 /**
055 * Sets the chronology of this time interval.
056 *
057 * @param chrono the chronology to use, null means ISO default
058 */
059 void setChronology(Chronology chrono);
060
061 //-----------------------------------------------------------------------
062 /**
063 * Sets the start of this time interval.
064 *
065 * @param millisInstant the start of the time interval,
066 * millisecond instant from 1970-01-01T00:00:00Z
067 * @throws IllegalArgumentException if the end is before the start
068 */
069 void setStartMillis(long millisInstant);
070
071 /**
072 * Sets the start of this time interval as an Instant.
073 *
074 * @param instant the start of the time interval
075 * @throws IllegalArgumentException if the end is before the start
076 */
077 void setStart(ReadableInstant instant);
078
079 //-----------------------------------------------------------------------
080 /**
081 * Sets the end of this time interval.
082 *
083 * @param millisInstant the end of the time interval,
084 * millisecond instant from 1970-01-01T00:00:00Z
085 * @throws IllegalArgumentException if the end is before the start
086 */
087 void setEndMillis(long millisInstant);
088
089 /**
090 * Sets the end of this time interval as an Instant.
091 *
092 * @param instant the end of the time interval
093 * @throws IllegalArgumentException if the end is before the start
094 */
095 void setEnd(ReadableInstant instant);
096
097 //-----------------------------------------------------------------------
098 /**
099 * Sets the duration of this time interval, preserving the start instant.
100 *
101 * @param duration new duration for interval
102 * @throws IllegalArgumentException if the end is before the start
103 * @throws ArithmeticException if the end instant exceeds the capacity of a long
104 */
105 void setDurationAfterStart(ReadableDuration duration);
106
107 /**
108 * Sets the duration of this time interval, preserving the end instant.
109 *
110 * @param duration new duration for interval
111 * @throws IllegalArgumentException if the end is before the start
112 * @throws ArithmeticException if the start instant exceeds the capacity of a long
113 */
114 void setDurationBeforeEnd(ReadableDuration duration);
115
116 //-----------------------------------------------------------------------
117 /**
118 * Sets the period of this time interval, preserving the start instant.
119 *
120 * @param period new period for interval, null means zero length
121 * @throws IllegalArgumentException if the end is before the start
122 * @throws ArithmeticException if the end instant exceeds the capacity of a long
123 */
124 void setPeriodAfterStart(ReadablePeriod period);
125
126 /**
127 * Sets the period of this time interval, preserving the end instant.
128 *
129 * @param period new period for interval, null means zero length
130 * @throws IllegalArgumentException if the end is before the start
131 * @throws ArithmeticException if the start instant exceeds the capacity of a long
132 */
133 void setPeriodBeforeEnd(ReadablePeriod period);
134
135 }