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 }