OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [javax/] [xml/] [datatype/] [Duration.java] - Blame information for rev 772

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 772 jeremybenn
/* Duration.java --
2
   Copyright (C) 2004, 2005, 2006  Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
package javax.xml.datatype;
39
 
40
import java.math.BigDecimal;
41
import java.util.Calendar;
42
import java.util.Date;
43
import java.util.GregorianCalendar;
44
import javax.xml.datatype.DatatypeConstants;
45
import javax.xml.namespace.QName;
46
 
47
/**
48
 * An immutable time space as specified in XML Schema 1.0.
49
 *
50
 * @author (a href='mailto:dog@gnu.org'>Chris Burdess</a)
51
 * @since 1.5
52
 */
53
public abstract class Duration
54
{
55
 
56
  /**
57
   * Returns the name of the XML Schema data type this value maps to.
58
   */
59
  public QName getXMLSchemaType()
60
  {
61
    int state = 0;
62
    state |= isSet(DatatypeConstants.YEARS) ? 32 : 0;
63
    state |= isSet(DatatypeConstants.MONTHS) ? 16 : 0;
64
    state |= isSet(DatatypeConstants.DAYS) ? 8 : 0;
65
    state |= isSet(DatatypeConstants.HOURS) ? 4 : 0;
66
    state |= isSet(DatatypeConstants.MINUTES) ? 2 : 0;
67
    state |= isSet(DatatypeConstants.SECONDS) ? 1 : 0;
68
    switch (state)
69
      {
70
      case 63:
71
        return DatatypeConstants.DURATION;
72
      case 15:
73
        return DatatypeConstants.DURATION_DAYTIME;
74
      case 48:
75
        return DatatypeConstants.DURATION_YEARMONTH;
76
      default:
77
        throw new IllegalStateException();
78
      }
79
  }
80
 
81
  /**
82
   * Returns the sign of this value.
83
   */
84
  public abstract int getSign();
85
 
86
  /**
87
   * Returns the years in this duration as an int, or 0 if not present.
88
   */
89
  public int getYears()
90
  {
91
    Number val = getField(DatatypeConstants.YEARS);
92
    return (val == null) ? 0 : val.intValue();
93
  }
94
 
95
  /**
96
   * Returns the months in this duration as an int, or 0 if not present.
97
   */
98
  public int getMonths()
99
  {
100
    Number val = getField(DatatypeConstants.MONTHS);
101
    return (val == null) ? 0 : val.intValue();
102
  }
103
 
104
  /**
105
   * Returns the days in this duration as an int, or 0 if not present.
106
   */
107
  public int getDays()
108
  {
109
    Number val = getField(DatatypeConstants.DAYS);
110
    return (val == null) ? 0 : val.intValue();
111
  }
112
 
113
  /**
114
   * Returns the hours in this duration as an int, or 0 if not present.
115
   */
116
  public int getHours()
117
  {
118
    Number val = getField(DatatypeConstants.HOURS);
119
    return (val == null) ? 0 : val.intValue();
120
  }
121
 
122
  /**
123
   * Returns the minutes in this duration as an int, or 0 if not present.
124
   */
125
  public int getMinutes()
126
  {
127
    Number val = getField(DatatypeConstants.MINUTES);
128
    return (val == null) ? 0 : val.intValue();
129
  }
130
 
131
  /**
132
   * Returns the seconds in this duration as an int, or 0 if not present.
133
   */
134
  public int getSeconds()
135
  {
136
    Number val = getField(DatatypeConstants.SECONDS);
137
    return (val == null) ? 0 : val.intValue();
138
  }
139
 
140
  /**
141
   * Returns the duration length in milliseconds.
142
   * Because the length of a month or year may vary depending on the year,
143
   * the <code>startInstant</code> parameter is used to specify the duration
144
   * offset.
145
   */
146
  public long getTimeInMillis(Calendar startInstant)
147
  {
148
    Calendar cal = (Calendar) startInstant.clone();
149
    long t1 = cal.getTimeInMillis();
150
    addTo(cal);
151
    long t2 = cal.getTimeInMillis();
152
    return t2 - t1;
153
  }
154
 
155
  /**
156
   * Returns the duration length in milliseconds.
157
   * Because the length of a month or year may vary depending on the year,
158
   * the <code>startInstant</code> parameter is used to specify the duration
159
   * offset.
160
   */
161
  public long getTimeInMillis(Date startInstant)
162
  {
163
    Date date = (Date) startInstant.clone();
164
    long t1 = date.getTime();
165
    addTo(date);
166
    long t2 = date.getTime();
167
    return t2 - t1;
168
  }
169
 
170
  /**
171
   * Returns the value of the specified field, or <code>null</code> if the
172
   * field is undefined.
173
   */
174
  public abstract Number getField(DatatypeConstants.Field field);
175
 
176
  /**
177
   * Indicates whether the specified field is set.
178
   */
179
  public abstract boolean isSet(DatatypeConstants.Field field);
180
 
181
  /**
182
   * Returns the result of adding the specified duration to this duration.
183
   */
184
  public abstract Duration add(Duration rhs);
185
 
186
  /**
187
   * Adds this duration to the specified calendar.
188
   */
189
  public abstract void addTo(Calendar calendar);
190
  /*{
191
    switch (getSign())
192
      {
193
      case -1:
194
        calendar.add(Calendar.YEAR, -getYears());
195
        calendar.add(Calendar.MONTH, -getMonths());
196
        calendar.add(Calendar.DATE, -getDays());
197
        calendar.add(Calendar.HOUR, -getHours());
198
        calendar.add(Calendar.MINUTE, -getMinutes());
199
        calendar.add(Calendar.SECOND, -getSeconds());
200
        break;
201
      case 1:
202
        calendar.add(Calendar.YEAR, getYears());
203
        calendar.add(Calendar.MONTH, getMonths());
204
        calendar.add(Calendar.DATE, getDays());
205
        calendar.add(Calendar.HOUR, getHours());
206
        calendar.add(Calendar.MINUTE, getMinutes());
207
        calendar.add(Calendar.SECOND, getSeconds());
208
      }
209
  }*/
210
 
211
  /**
212
   * Adds this duration to the specified date.
213
   */
214
  public void addTo(Date date)
215
  {
216
    Calendar calendar = new GregorianCalendar();
217
    calendar.setTimeInMillis(date.getTime());
218
    addTo(calendar);
219
    date.setTime(calendar.getTimeInMillis());
220
  }
221
 
222
  /**
223
   * Returns the result of subtracting the given duration from this
224
   * duration.
225
   */
226
  public Duration subtract(Duration rhs)
227
  {
228
    // TODO
229
    throw new UnsupportedOperationException();
230
  }
231
 
232
  /**
233
   * Returns the result of multiplying this duration by the given factor.
234
   */
235
  public Duration multiply(int factor)
236
  {
237
    return multiply(BigDecimal.valueOf((long) factor));
238
  }
239
 
240
  /**
241
   * Returns the result of multiplying this duration by the given factor.
242
   */
243
  public abstract Duration multiply(BigDecimal factor);
244
 
245
  /**
246
   * Returns the unary negative of this duration.
247
   */
248
  public abstract Duration negate();
249
 
250
  /**
251
   * Converts the years and months fields into the days field using a
252
   * specific time instant as the reference point.
253
   */
254
  public abstract Duration normalizeWith(Calendar startTimeInstant);
255
 
256
  /**
257
   * Partial order relation comparison with this duration, in accordance
258
   * with XML Schema 1.0 Part 2, Section 3.2.7.6.2.
259
   */
260
  public abstract int compare(Duration duration);
261
 
262
  public boolean isLongerThan(Duration duration)
263
  {
264
    // TODO
265
    throw new UnsupportedOperationException();
266
  }
267
 
268
  public boolean isShorterThan(Duration duration)
269
  {
270
    // TODO
271
    throw new UnsupportedOperationException();
272
  }
273
 
274
  public boolean equals(java.lang.Object duration)
275
  {
276
    // TODO
277
    throw new UnsupportedOperationException();
278
  }
279
 
280
  public abstract int hashCode();
281
 
282
  /**
283
   * Returns the lexical representation of this duration.
284
   */
285
  public String toString()
286
  {
287
    // TODO
288
    throw new UnsupportedOperationException();
289
  }
290
 
291
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.