001/* Time.java -- Wrapper around java.util.Date
002   Copyright (C) 1999, 2000, 2002, 2003, 2005, 2006
003   Free Software Foundation, Inc.
004
005This file is part of GNU Classpath.
006
007GNU Classpath is free software; you can redistribute it and/or modify
008it under the terms of the GNU General Public License as published by
009the Free Software Foundation; either version 2, or (at your option)
010any later version.
011
012GNU Classpath is distributed in the hope that it will be useful, but
013WITHOUT ANY WARRANTY; without even the implied warranty of
014MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
015General Public License for more details.
016
017You should have received a copy of the GNU General Public License
018along with GNU Classpath; see the file COPYING.  If not, write to the
019Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02002110-1301 USA.
021
022Linking this library statically or dynamically with other modules is
023making a combined work based on this library.  Thus, the terms and
024conditions of the GNU General Public License cover the whole
025combination.
026
027As a special exception, the copyright holders of this library give you
028permission to link this library with independent modules to produce an
029executable, regardless of the license terms of these independent
030modules, and to copy and distribute the resulting executable under
031terms of your choice, provided that you also meet, for each linked
032independent module, the terms and conditions of the license of that
033module.  An independent module is a module which is not derived from
034or based on this library.  If you modify this library, you may extend
035this exception to your version of the library, but you are not
036obligated to do so.  If you do not wish to do so, delete this
037exception statement from your version. */
038
039
040package java.sql;
041
042import java.text.ParseException;
043import java.text.SimpleDateFormat;
044
045/**
046 * This class is a wrapper around java.util.Date to allow the JDBC
047 * driver to identify the value as a SQL Time.
048 *
049 * @author Aaron M. Renn (arenn@urbanophile.com)
050 */
051public class Time extends java.util.Date
052{
053  static final long serialVersionUID = 8397324403548013681L;
054
055  /**
056   * Used for parsing and formatting this date.
057   */
058  private static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
059
060  /**
061   * This method always throws an IllegalArgumentException.
062   *
063   * @throws IllegalArgumentException when it's called.
064   * @deprecated
065   */
066  public int getDate() throws IllegalArgumentException
067  {
068    throw new IllegalArgumentException();
069  }
070
071  /**
072   * This method always throws an IllegalArgumentException.
073   *
074   * @throws IllegalArgumentException when it's called.
075   * @deprecated
076   */
077  public int getDay() throws IllegalArgumentException
078  {
079    throw new IllegalArgumentException();
080  }
081
082  /**
083   * This method always throws an IllegalArgumentException.
084   *
085   * @throws IllegalArgumentException when it's called.
086   * @deprecated
087   */
088  public int getMonth() throws IllegalArgumentException
089  {
090    throw new IllegalArgumentException();
091  }
092
093  /**
094   * This method always throws an IllegalArgumentException.
095   *
096   * @throws IllegalArgumentException when it's called.
097   * @deprecated
098   */
099  public int getYear() throws IllegalArgumentException
100  {
101    throw new IllegalArgumentException();
102  }
103
104  /**
105   * This method always throws an IllegalArgumentException.
106   *
107   * @throws IllegalArgumentException when it's called.
108   * @deprecated
109   */
110  public void setDate(int newValue) throws IllegalArgumentException
111  {
112    throw new IllegalArgumentException();
113  }
114
115  /**
116   * This method always throws an IllegalArgumentException.
117   *
118   * @throws IllegalArgumentException when it's called.
119   * @deprecated
120   */
121  public void setMonth(int newValue) throws IllegalArgumentException
122  {
123    throw new IllegalArgumentException();
124  }
125
126  /**
127   * This method always throws an IllegalArgumentException.
128   *
129   * @throws IllegalArgumentException when it's called.
130   * @deprecated
131   */
132  public void setYear(int newValue) throws IllegalArgumentException
133  {
134    throw new IllegalArgumentException();
135  }
136
137  /**
138   * This method returns a new instance of this class by parsing a
139   * date in JDBC format into a Java date.
140   *
141   * @param str The string to parse.
142   * @return The resulting <code>java.sql.Time</code> value.
143   */
144  public static Time valueOf (String str)
145  {
146    try
147      {
148        java.util.Date d = (java.util.Date) sdf.parseObject(str);
149
150        if (d == null)
151          throw new IllegalArgumentException(str);
152        else
153          return new Time(d.getTime());
154      }
155    catch (ParseException e)
156      {
157        throw new IllegalArgumentException(str);
158      }
159  }
160
161  /**
162    * This method initializes a new instance of this class with the
163    * specified year, month, and day.
164    *
165    * @param hour The hour for this Time (0-23)
166    * @param minute The minute for this time (0-59)
167    * @param second The second for this time (0-59)
168    * @deprecated
169    */
170  public Time(int hour, int minute, int second)
171  {
172    super(System.currentTimeMillis());
173
174    setHours(hour);
175    setMinutes(minute);
176    setSeconds(second);
177  }
178
179  /**
180   * This method initializes a new instance of this class with the
181   * specified time value representing the number of milliseconds since
182   * Jan 1, 1970 at 12:00 midnight GMT.
183   *
184   * @param date The time value to intialize this <code>Time</code> to.
185   */
186  public Time(long date)
187  {
188    super(date);
189  }
190
191  /**
192   * This method returns this date in JDBC format.
193   *
194   * @return This date as a string.
195   */
196  public String toString ()
197  {
198    return sdf.format (this);
199  }
200
201}