Commit d0123c54 by Warren Levy Committed by Warren Levy

ObjectStreamException.java: New file.

	* java/io/ObjectStreamException.java: New file.
	* java/io/OptionalDataException.java: New file.
	* java/io/StreamCorruptedException.java: New file.
	* java/math/BigDecimal.java: New file.
	* java/sql/CallableStatement.java: New file.
	* java/sql/Connection.java: New file.
	* java/sql/DataTruncation.java: New file.
	* java/sql/DatabaseMetaData.java: New file.
	* java/sql/Date.java: New file.
	* java/sql/Driver.java: New file.
	* java/sql/DriverManager.java: New file.
	* java/sql/DriverPropertyInfo.java: New file.
	* java/sql/PreparedStatement.java: New file.
	* java/sql/ResultSet.java: New file.
	* java/sql/ResultSetMetaData.java: New file.
	* java/sql/SQLException.java: New file.
	* java/sql/SQLWarning.java: New file.
	* java/sql/Statement.java: New file.
	* java/sql/Time.java: New file.
	* java/sql/Timestamp.java: New file.
	* java/sql/Types.java: New file.
	* Makefile.am: Added above new files.
	* Makefile.in: Rebuilt.

	* mauve-libgcj: Turned on java.math, java.sql and java.security tests.
	* java/net/MulticastSocket.java (MulticastSocket): Pass values a la
	DatagramSocket constructor instead of null.

java.sql is JDK 1.1 Compliant

From-SVN: r33077
parent 3a2b2c7a
2000-04-10 Warren Levy <warrenl@cygnus.com>
* java/io/ObjectStreamException.java: New file.
* java/io/OptionalDataException.java: New file.
* java/io/StreamCorruptedException.java: New file.
* java/math/BigDecimal.java: New file.
* java/sql/CallableStatement.java: New file.
* java/sql/Connection.java: New file.
* java/sql/DataTruncation.java: New file.
* java/sql/DatabaseMetaData.java: New file.
* java/sql/Date.java: New file.
* java/sql/Driver.java: New file.
* java/sql/DriverManager.java: New file.
* java/sql/DriverPropertyInfo.java: New file.
* java/sql/PreparedStatement.java: New file.
* java/sql/ResultSet.java: New file.
* java/sql/ResultSetMetaData.java: New file.
* java/sql/SQLException.java: New file.
* java/sql/SQLWarning.java: New file.
* java/sql/Statement.java: New file.
* java/sql/Time.java: New file.
* java/sql/Timestamp.java: New file.
* java/sql/Types.java: New file.
* Makefile.am: Added above new files.
* Makefile.in: Rebuilt.
* mauve-libgcj: Turned on java.math, java.sql and java.security tests.
* java/net/MulticastSocket.java (MulticastSocket): Pass values a la
DatagramSocket constructor instead of null.
2000-04-08 Anthony Green <green@cygnus.com> 2000-04-08 Anthony Green <green@cygnus.com>
* include/posix-threads.h (_Jv_MutexUnlock): Replace * include/posix-threads.h (_Jv_MutexUnlock): Replace
......
...@@ -632,6 +632,8 @@ java/io/InputStreamReader.java \ ...@@ -632,6 +632,8 @@ java/io/InputStreamReader.java \
java/io/InterruptedIOException.java \ java/io/InterruptedIOException.java \
java/io/LineNumberInputStream.java \ java/io/LineNumberInputStream.java \
java/io/LineNumberReader.java \ java/io/LineNumberReader.java \
java/io/ObjectStreamException.java \
java/io/OptionalDataException.java \
java/io/OutputStream.java \ java/io/OutputStream.java \
java/io/OutputStreamWriter.java \ java/io/OutputStreamWriter.java \
java/io/PipedInputStream.java \ java/io/PipedInputStream.java \
...@@ -646,6 +648,7 @@ java/io/RandomAccessFile.java \ ...@@ -646,6 +648,7 @@ java/io/RandomAccessFile.java \
java/io/Reader.java \ java/io/Reader.java \
java/io/SequenceInputStream.java \ java/io/SequenceInputStream.java \
java/io/Serializable.java \ java/io/Serializable.java \
java/io/StreamCorruptedException.java \
java/io/StreamTokenizer.java \ java/io/StreamTokenizer.java \
java/io/StringBufferInputStream.java \ java/io/StringBufferInputStream.java \
java/io/StringReader.java \ java/io/StringReader.java \
...@@ -731,6 +734,7 @@ java/lang/reflect/InvocationTargetException.java \ ...@@ -731,6 +734,7 @@ java/lang/reflect/InvocationTargetException.java \
java/lang/reflect/Member.java \ java/lang/reflect/Member.java \
java/lang/reflect/Method.java \ java/lang/reflect/Method.java \
java/lang/reflect/Modifier.java \ java/lang/reflect/Modifier.java \
java/math/BigDecimal.java \
java/math/BigInteger.java \ java/math/BigInteger.java \
java/net/BindException.java \ java/net/BindException.java \
java/net/ConnectException.java \ java/net/ConnectException.java \
...@@ -800,6 +804,23 @@ java/security/spec/KeySpec.java \ ...@@ -800,6 +804,23 @@ java/security/spec/KeySpec.java \
java/security/spec/RSAPrivateCrtKeySpec.java \ java/security/spec/RSAPrivateCrtKeySpec.java \
java/security/spec/RSAPrivateKeySpec.java \ java/security/spec/RSAPrivateKeySpec.java \
java/security/spec/RSAPublicKeySpec.java \ java/security/spec/RSAPublicKeySpec.java \
java/sql/CallableStatement.java \
java/sql/Connection.java \
java/sql/DataTruncation.java \
java/sql/DatabaseMetaData.java \
java/sql/Date.java \
java/sql/Driver.java \
java/sql/DriverManager.java \
java/sql/DriverPropertyInfo.java \
java/sql/PreparedStatement.java \
java/sql/ResultSet.java \
java/sql/ResultSetMetaData.java \
java/sql/SQLException.java \
java/sql/SQLWarning.java \
java/sql/Statement.java \
java/sql/Time.java \
java/sql/Timestamp.java \
java/sql/Types.java \
java/text/BreakIterator.java \ java/text/BreakIterator.java \
java/text/CharacterIterator.java \ java/text/CharacterIterator.java \
java/text/ChoiceFormat.java \ java/text/ChoiceFormat.java \
......
...@@ -84,6 +84,7 @@ GCOBJS = @GCOBJS@ ...@@ -84,6 +84,7 @@ GCOBJS = @GCOBJS@
GCSPEC = @GCSPEC@ GCSPEC = @GCSPEC@
GCTESTSPEC = @GCTESTSPEC@ GCTESTSPEC = @GCTESTSPEC@
INCLTDL = @INCLTDL@ INCLTDL = @INCLTDL@
LD = @LD@
LIBDATASTARTSPEC = @LIBDATASTARTSPEC@ LIBDATASTARTSPEC = @LIBDATASTARTSPEC@
LIBGCJTESTSPEC = @LIBGCJTESTSPEC@ LIBGCJTESTSPEC = @LIBGCJTESTSPEC@
LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
...@@ -94,7 +95,6 @@ LIBTOOL = @LIBTOOL@ ...@@ -94,7 +95,6 @@ LIBTOOL = @LIBTOOL@
LN_S = @LN_S@ LN_S = @LN_S@
MAINT = @MAINT@ MAINT = @MAINT@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
PERL = @PERL@ PERL = @PERL@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
...@@ -104,6 +104,7 @@ THREADINCS = @THREADINCS@ ...@@ -104,6 +104,7 @@ THREADINCS = @THREADINCS@
THREADLIBS = @THREADLIBS@ THREADLIBS = @THREADLIBS@
THREADOBJS = @THREADOBJS@ THREADOBJS = @THREADOBJS@
THREADSPEC = @THREADSPEC@ THREADSPEC = @THREADSPEC@
USE_SYMBOL_UNDERSCORE = @USE_SYMBOL_UNDERSCORE@
VERSION = @VERSION@ VERSION = @VERSION@
ZDEPS = @ZDEPS@ ZDEPS = @ZDEPS@
ZINCS = @ZINCS@ ZINCS = @ZINCS@
...@@ -433,6 +434,8 @@ java/io/InputStreamReader.java \ ...@@ -433,6 +434,8 @@ java/io/InputStreamReader.java \
java/io/InterruptedIOException.java \ java/io/InterruptedIOException.java \
java/io/LineNumberInputStream.java \ java/io/LineNumberInputStream.java \
java/io/LineNumberReader.java \ java/io/LineNumberReader.java \
java/io/ObjectStreamException.java \
java/io/OptionalDataException.java \
java/io/OutputStream.java \ java/io/OutputStream.java \
java/io/OutputStreamWriter.java \ java/io/OutputStreamWriter.java \
java/io/PipedInputStream.java \ java/io/PipedInputStream.java \
...@@ -447,6 +450,7 @@ java/io/RandomAccessFile.java \ ...@@ -447,6 +450,7 @@ java/io/RandomAccessFile.java \
java/io/Reader.java \ java/io/Reader.java \
java/io/SequenceInputStream.java \ java/io/SequenceInputStream.java \
java/io/Serializable.java \ java/io/Serializable.java \
java/io/StreamCorruptedException.java \
java/io/StreamTokenizer.java \ java/io/StreamTokenizer.java \
java/io/StringBufferInputStream.java \ java/io/StringBufferInputStream.java \
java/io/StringReader.java \ java/io/StringReader.java \
...@@ -532,6 +536,7 @@ java/lang/reflect/InvocationTargetException.java \ ...@@ -532,6 +536,7 @@ java/lang/reflect/InvocationTargetException.java \
java/lang/reflect/Member.java \ java/lang/reflect/Member.java \
java/lang/reflect/Method.java \ java/lang/reflect/Method.java \
java/lang/reflect/Modifier.java \ java/lang/reflect/Modifier.java \
java/math/BigDecimal.java \
java/math/BigInteger.java \ java/math/BigInteger.java \
java/net/BindException.java \ java/net/BindException.java \
java/net/ConnectException.java \ java/net/ConnectException.java \
...@@ -601,6 +606,23 @@ java/security/spec/KeySpec.java \ ...@@ -601,6 +606,23 @@ java/security/spec/KeySpec.java \
java/security/spec/RSAPrivateCrtKeySpec.java \ java/security/spec/RSAPrivateCrtKeySpec.java \
java/security/spec/RSAPrivateKeySpec.java \ java/security/spec/RSAPrivateKeySpec.java \
java/security/spec/RSAPublicKeySpec.java \ java/security/spec/RSAPublicKeySpec.java \
java/sql/CallableStatement.java \
java/sql/Connection.java \
java/sql/DataTruncation.java \
java/sql/DatabaseMetaData.java \
java/sql/Date.java \
java/sql/Driver.java \
java/sql/DriverManager.java \
java/sql/DriverPropertyInfo.java \
java/sql/PreparedStatement.java \
java/sql/ResultSet.java \
java/sql/ResultSetMetaData.java \
java/sql/SQLException.java \
java/sql/SQLWarning.java \
java/sql/Statement.java \
java/sql/Time.java \
java/sql/Timestamp.java \
java/sql/Types.java \
java/text/BreakIterator.java \ java/text/BreakIterator.java \
java/text/CharacterIterator.java \ java/text/CharacterIterator.java \
java/text/ChoiceFormat.java \ java/text/ChoiceFormat.java \
...@@ -833,7 +855,7 @@ libgcj.spec.in ...@@ -833,7 +855,7 @@ libgcj.spec.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar TAR = gtar
GZIP_ENV = --best GZIP_ENV = --best
DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include
DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
...@@ -931,13 +953,15 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ ...@@ -931,13 +953,15 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/io/InputStream.P .deps/java/io/InputStreamReader.P \ .deps/java/io/InputStream.P .deps/java/io/InputStreamReader.P \
.deps/java/io/InterruptedIOException.P \ .deps/java/io/InterruptedIOException.P \
.deps/java/io/LineNumberInputStream.P .deps/java/io/LineNumberReader.P \ .deps/java/io/LineNumberInputStream.P .deps/java/io/LineNumberReader.P \
.deps/java/io/OutputStream.P .deps/java/io/OutputStreamWriter.P \ .deps/java/io/ObjectStreamException.P \
.deps/java/io/PipedInputStream.P .deps/java/io/PipedOutputStream.P \ .deps/java/io/OptionalDataException.P .deps/java/io/OutputStream.P \
.deps/java/io/PipedReader.P .deps/java/io/PipedWriter.P \ .deps/java/io/OutputStreamWriter.P .deps/java/io/PipedInputStream.P \
.deps/java/io/PrintStream.P .deps/java/io/PrintWriter.P \ .deps/java/io/PipedOutputStream.P .deps/java/io/PipedReader.P \
.deps/java/io/PushbackInputStream.P .deps/java/io/PushbackReader.P \ .deps/java/io/PipedWriter.P .deps/java/io/PrintStream.P \
.deps/java/io/RandomAccessFile.P .deps/java/io/Reader.P \ .deps/java/io/PrintWriter.P .deps/java/io/PushbackInputStream.P \
.deps/java/io/SequenceInputStream.P .deps/java/io/Serializable.P \ .deps/java/io/PushbackReader.P .deps/java/io/RandomAccessFile.P \
.deps/java/io/Reader.P .deps/java/io/SequenceInputStream.P \
.deps/java/io/Serializable.P .deps/java/io/StreamCorruptedException.P \
.deps/java/io/StreamTokenizer.P .deps/java/io/StringBufferInputStream.P \ .deps/java/io/StreamTokenizer.P .deps/java/io/StringBufferInputStream.P \
.deps/java/io/StringReader.P .deps/java/io/StringWriter.P \ .deps/java/io/StringReader.P .deps/java/io/StringWriter.P \
.deps/java/io/SyncFailedException.P \ .deps/java/io/SyncFailedException.P \
...@@ -1015,12 +1039,13 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ ...@@ -1015,12 +1039,13 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/lang/w_exp.P .deps/java/lang/w_fmod.P \ .deps/java/lang/w_exp.P .deps/java/lang/w_fmod.P \
.deps/java/lang/w_log.P .deps/java/lang/w_pow.P \ .deps/java/lang/w_log.P .deps/java/lang/w_pow.P \
.deps/java/lang/w_remainder.P .deps/java/lang/w_sqrt.P \ .deps/java/lang/w_remainder.P .deps/java/lang/w_sqrt.P \
.deps/java/math/BigInteger.P .deps/java/net/BindException.P \ .deps/java/math/BigDecimal.P .deps/java/math/BigInteger.P \
.deps/java/net/ConnectException.P .deps/java/net/ContentHandler.P \ .deps/java/net/BindException.P .deps/java/net/ConnectException.P \
.deps/java/net/ContentHandlerFactory.P .deps/java/net/DatagramPacket.P \ .deps/java/net/ContentHandler.P .deps/java/net/ContentHandlerFactory.P \
.deps/java/net/DatagramSocket.P .deps/java/net/DatagramSocketImpl.P \ .deps/java/net/DatagramPacket.P .deps/java/net/DatagramSocket.P \
.deps/java/net/FileNameMap.P .deps/java/net/HttpURLConnection.P \ .deps/java/net/DatagramSocketImpl.P .deps/java/net/FileNameMap.P \
.deps/java/net/InetAddress.P .deps/java/net/JarURLConnection.P \ .deps/java/net/HttpURLConnection.P .deps/java/net/InetAddress.P \
.deps/java/net/JarURLConnection.P \
.deps/java/net/MalformedURLException.P .deps/java/net/MulticastSocket.P \ .deps/java/net/MalformedURLException.P .deps/java/net/MulticastSocket.P \
.deps/java/net/NoRouteToHostException.P \ .deps/java/net/NoRouteToHostException.P \
.deps/java/net/PlainDatagramSocketImpl.P \ .deps/java/net/PlainDatagramSocketImpl.P \
...@@ -1065,6 +1090,14 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ ...@@ -1065,6 +1090,14 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/security/spec/RSAPrivateCrtKeySpec.P \ .deps/java/security/spec/RSAPrivateCrtKeySpec.P \
.deps/java/security/spec/RSAPrivateKeySpec.P \ .deps/java/security/spec/RSAPrivateKeySpec.P \
.deps/java/security/spec/RSAPublicKeySpec.P \ .deps/java/security/spec/RSAPublicKeySpec.P \
.deps/java/sql/CallableStatement.P .deps/java/sql/Connection.P \
.deps/java/sql/DataTruncation.P .deps/java/sql/DatabaseMetaData.P \
.deps/java/sql/Date.P .deps/java/sql/Driver.P \
.deps/java/sql/DriverManager.P .deps/java/sql/DriverPropertyInfo.P \
.deps/java/sql/PreparedStatement.P .deps/java/sql/ResultSet.P \
.deps/java/sql/ResultSetMetaData.P .deps/java/sql/SQLException.P \
.deps/java/sql/SQLWarning.P .deps/java/sql/Statement.P \
.deps/java/sql/Time.P .deps/java/sql/Timestamp.P .deps/java/sql/Types.P \
.deps/java/text/BreakIterator.P .deps/java/text/CharacterIterator.P \ .deps/java/text/BreakIterator.P .deps/java/text/CharacterIterator.P \
.deps/java/text/ChoiceFormat.P \ .deps/java/text/ChoiceFormat.P \
.deps/java/text/CollationElementIterator.P \ .deps/java/text/CollationElementIterator.P \
......
/* Copyright (C) 2000 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.io;
/**
* @author Warren Levy <warrenl@cygnus.com>
* @date February 7, 2000.
*/
/* Written using on-line Java Platform 1.2 API Specification.
* Status: Believed complete and correct.
*/
public abstract class ObjectStreamException extends IOException
{
public ObjectStreamException()
{
super();
}
public ObjectStreamException(String msg)
{
super(msg);
}
}
/* Copyright (C) 2000 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.io;
/**
* @author Warren Levy <warrenl@cygnus.com>
* @date February 7, 2000.
*/
/* Written using on-line Java Platform 1.2 API Specification.
* Status: Believed complete and correct.
*/
public class OptionalDataException extends ObjectStreamException
{
public OptionalDataException()
{
super();
}
public OptionalDataException(String msg)
{
super(msg);
}
}
/* Copyright (C) 2000 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.io;
/**
* @author Warren Levy <warrenl@cygnus.com>
* @date February 7, 2000.
*/
/* Written using on-line Java Platform 1.2 API Specification.
* Status: Believed complete and correct.
*/
public class StreamCorruptedException extends ObjectStreamException
{
public StreamCorruptedException()
{
super();
}
public StreamCorruptedException(String msg)
{
super(msg);
}
}
/* java.math.BigDecimal -- Arbitrary precision decimals.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.math;
import java.math.BigInteger;
public class BigDecimal extends Number implements Comparable {
BigInteger num;
int scale;
private final static BigDecimal ZERO =
new BigDecimal (BigInteger.valueOf (0), 0);
private final static BigDecimal ONE =
new BigDecimal (BigInteger.valueOf (1), 0);
public final static int ROUND_UP = 0;
public final static int ROUND_DOWN = 1;
public final static int ROUND_CEILING = 2;
public final static int ROUND_FLOOR = 3;
public final static int ROUND_HALF_UP = 4;
public final static int ROUND_HALF_DOWN = 5;
public final static int ROUND_HALF_EVEN = 6;
public final static int ROUND_UNNECESSARY = 7;
public BigDecimal (BigInteger num)
{
this (num, 0);
}
public BigDecimal (BigInteger num, int scale) throws NumberFormatException
{
if (scale < 0)
throw new NumberFormatException ("scale of " + scale + " is < 0");
this.num = num;
this.scale = scale;
}
public BigDecimal (double num) throws NumberFormatException
{
this (Double.toString (num));
}
public BigDecimal (String num) throws NumberFormatException
{
int point = num.indexOf('.');
this.num = new BigInteger (point == -1 ? num :
num.substring (0, point) +
num.substring (point + 1));
scale = num.length() - (point == -1 ? num.length () : point + 1);
}
public static BigDecimal valueOf (long val)
{
return valueOf (val, 0);
}
public static BigDecimal valueOf (long val, int scale)
throws NumberFormatException
{
if (scale == 0)
switch ((int) val)
{
case 0:
return ZERO;
case 1:
return ONE;
}
return new BigDecimal (BigInteger.valueOf (val), scale);
}
public BigDecimal add (BigDecimal val)
{
// For addition, need to line up decimals. Note that the movePointRight
// method cannot be used for this as it might return a BigDecimal with
// scale == 0 instead of the scale we need.
BigInteger op1 = num;
BigInteger op2 = val.num;
if (scale < val.scale)
op1 = op1.multiply (BigInteger.valueOf (10).pow (val.scale - scale));
else if (scale > val.scale)
op2 = op2.multiply (BigInteger.valueOf (10).pow (scale - val.scale));
return new BigDecimal (op1.add (op2), Math.max (scale, val.scale));
}
public BigDecimal subtract (BigDecimal val)
{
return this.add(val.negate());
}
public BigDecimal multiply (BigDecimal val)
{
return new BigDecimal (num.multiply (val.num), scale + val.scale);
}
public BigDecimal divide (BigDecimal val, int roundingMode)
throws ArithmeticException, IllegalArgumentException
{
return divide (val, scale, roundingMode);
}
public BigDecimal divide(BigDecimal val, int newScale, int roundingMode)
throws ArithmeticException, IllegalArgumentException
{
if (roundingMode < 0 || roundingMode > 7)
throw
new IllegalArgumentException("illegal rounding mode: " + roundingMode);
if (scale < 0)
throw new ArithmeticException ("scale is negative: " + scale);
if (num.signum () == 0) // handle special case of 0.0/0.0
return ZERO;
BigInteger dividend = num.multiply (BigInteger.valueOf (10).pow
(newScale + 1 - (scale - val.scale)));
BigInteger parts[] = dividend.divideAndRemainder (val.num);
// System.out.println("int: " + parts[0]);
// System.out.println("rem: " + parts[1]);
int roundDigit = parts[0].mod (BigInteger.valueOf (10)).intValue ();
BigInteger unrounded = parts[0].divide (BigInteger.valueOf (10));
if (roundDigit == 0 && parts[1].signum () == 0) // no rounding necessary
return new BigDecimal (unrounded, newScale);
int sign = unrounded.signum ();
switch (roundingMode)
{
case ROUND_UNNECESSARY:
throw new ArithmeticException ("newScale is not large enough");
case ROUND_CEILING:
roundingMode = (sign == 1) ? ROUND_UP : ROUND_DOWN;
break;
case ROUND_FLOOR:
roundingMode = (sign == 1) ? ROUND_DOWN : ROUND_UP;
break;
case ROUND_HALF_UP:
roundingMode = (roundDigit >= 5) ? ROUND_UP : ROUND_DOWN;
break;
case ROUND_HALF_DOWN:
roundingMode = (roundDigit > 5) ? ROUND_UP : ROUND_DOWN;
break;
case ROUND_HALF_EVEN:
if (roundDigit < 5)
roundingMode = ROUND_DOWN;
else
{
int rightmost =
unrounded.mod (BigInteger.valueOf (10)).intValue ();
if (rightmost % 2 == 1) // odd, then ROUND_HALF_UP
roundingMode = ROUND_UP;
else // even, then ROUND_HALF_DOWN
roundingMode = (roundDigit > 5) ? ROUND_UP : ROUND_DOWN;
}
break;
}
if (roundingMode == ROUND_UP)
return new BigDecimal (unrounded.add (BigInteger.valueOf (1)), newScale);
// roundingMode == ROUND_DOWN
return new BigDecimal (unrounded, newScale);
}
public int compareTo (BigDecimal val)
{
if (scale == val.scale)
return num.compareTo (val.num);
BigInteger thisParts[] =
num.divideAndRemainder (BigInteger.valueOf (10).pow (scale));
BigInteger valParts[] =
val.num.divideAndRemainder (BigInteger.valueOf (10).pow (val.scale));
int compare;
if ((compare = thisParts[0].compareTo (valParts[0])) != 0)
return compare;
// quotients are the same, so compare remainders
// remove trailing zeros
if (thisParts[1].equals (BigInteger.valueOf (0)) == false)
while (thisParts[1].mod (BigInteger.valueOf (10)).equals
(BigInteger.valueOf (0)))
thisParts[1] = thisParts[1].divide (BigInteger.valueOf (10));
// again...
if (valParts[1].equals(BigInteger.valueOf (0)) == false)
while (valParts[1].mod (BigInteger.valueOf (10)).equals
(BigInteger.valueOf (0)))
valParts[1] = valParts[1].divide (BigInteger.valueOf (10));
// and compare them
return thisParts[1].compareTo (valParts[1]);
}
public int compareTo (Object val)
{
return(compareTo((BigDecimal)val));
}
public boolean equals (Object o)
{
return (o instanceof BigDecimal
&& scale == ((BigDecimal) o).scale
&& compareTo ((BigDecimal) o) == 0);
}
public int hashCode()
{
return intValue() ^ scale;
}
public BigDecimal max (BigDecimal val)
{
switch (compareTo (val))
{
case 1:
return this;
default:
return val;
}
}
public BigDecimal min (BigDecimal val)
{
switch (compareTo (val))
{
case -1:
return this;
default:
return val;
}
}
public BigDecimal movePointLeft (int n)
{
return (n < 0) ? movePointRight (-n) : new BigDecimal (num, scale + n);
}
public BigDecimal movePointRight (int n)
{
if (n < 0)
return movePointLeft (-n);
if (scale >= n)
return new BigDecimal (num, scale - n);
return new BigDecimal (num.multiply
(BigInteger.valueOf (10).pow (n - scale)), 0);
}
public int signum ()
{
return num.signum ();
}
public int scale ()
{
return scale;
}
public BigDecimal abs ()
{
return new BigDecimal (num.abs (), scale);
}
public BigDecimal negate ()
{
return new BigDecimal (num.negate (), scale);
}
public String toString ()
{
String bigStr = num.toString();
if (scale == 0)
return bigStr;
int point = bigStr.length() - scale;
boolean negative = (bigStr.charAt(0) == '-');
StringBuffer sb = new StringBuffer(bigStr.length() + 1 +
(point <= 0 ? -point+1 : 0));
if (negative)
sb.append('-');
while (point <= 0)
{
sb.append('0');
point++;
}
sb.append(bigStr.substring(negative ? 1 : 0));
sb.insert(point, '.');
return sb.toString();
}
public BigInteger toBigInteger ()
{
return scale == 0 ? num : num.divide (BigInteger.valueOf (10).pow (scale));
}
public int intValue ()
{
return toBigInteger ().intValue ();
}
public long longValue ()
{
return toBigInteger().longValue();
}
public float floatValue()
{
return Float.valueOf(toString()).floatValue();
}
public double doubleValue()
{
return Double.valueOf(toString()).doubleValue();
}
}
...@@ -30,12 +30,12 @@ public class MulticastSocket extends DatagramSocket ...@@ -30,12 +30,12 @@ public class MulticastSocket extends DatagramSocket
public MulticastSocket() throws IOException public MulticastSocket() throws IOException
{ {
super(0, null); super(0, ServerSocket.ANY_IF);
} }
public MulticastSocket(int port) throws IOException public MulticastSocket(int port) throws IOException
{ {
super(port, null); super(port, ServerSocket.ANY_IF);
} }
public InetAddress getInterface() throws SocketException public InetAddress getInterface() throws SocketException
......
/* CallableStatement.java -- A statement for calling stored procedures.
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
import java.util.Calendar;
/**
* This interface provides a mechanism for calling stored procedures.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public interface CallableStatement extends PreparedStatement
{
/*************************************************************************/
/**
* This method tests whether the value of the last parameter that was fetched
* was actually a SQL NULL value.
*
* @return <code>true</code> if the last parameter fetched was a NULL,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
wasNull() throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>String</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>String</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract String
getString(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>Object</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as an <code>Object</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract Object
getObject(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>boolean</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>boolean</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
getBoolean(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>byte</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>byte</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract byte
getByte(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>short</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>short</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract short
getShort(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>int</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>int</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getInt(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>long</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>long</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract long
getLong(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>float</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>float</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract float
getFloat(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>double</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>double</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract double
getDouble(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>BigDecimal</code>.
*
* @param index The index of the parameter to return.
* @param scale The number of digits to the right of the decimal to return.
*
* @return The parameter value as a <code>BigDecimal</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract BigDecimal
getBigDecimal(int index, int scale) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* byte array.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a byte array
*
* @exception SQLException If an error occurs.
*/
public abstract byte[]
getBytes(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>java.sql.Date</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>java.sql.Date</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Date
getDate(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>java.sql.Time</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>java.sql.Time</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Time
getTime(int index) throws SQLException;
/*************************************************************************/
/**
* This method returns the value of the specified parameter as a Java
* <code>java.sql.Timestamp</code>.
*
* @param index The index of the parameter to return.
*
* @return The parameter value as a <code>java.sql.Timestamp</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract java.sql.Timestamp
getTimestamp(int index) throws SQLException;
/*************************************************************************/
/**
* This method registers the specified parameter as an output parameter
* of the specified SQL type.
*
* @param index The index of the parameter to register as output.
* @param type The SQL type value from <code>Types</code>.
*
* @exception SQLException If an error occurs.
*/
public abstract void
registerOutParameter(int index, int type) throws SQLException;
/*************************************************************************/
/**
* This method registers the specified parameter as an output parameter
* of the specified SQL type and scale.
*
* @param index The index of the parameter to register as output.
* @param type The SQL type value from <code>Types</code>.
* @param scale The scale of the value that will be returned.
*
* @exception SQLException If an error occurs.
*/
public abstract void
registerOutParameter(int index, int type, int scale) throws SQLException;
} // interface CallableStatement
/* DataTruncation.java -- Warning when data has been truncated.
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This exception is thrown when a piece of data is unexpectedly
* truncated in JDBC.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class DataTruncation extends SQLWarning implements java.io.Serializable
{
/*************************************************************************/
/*
* Instance Variables
*/
/**
* The original size of the data.
* @serialized
*/
private int dataSize;
/**
* The index of the parameter or column whose value was truncated.
* @serialized
*/
private int index;
/**
* Indicates whether or not a parameter value was truncated.
* @serialized
*/
private boolean parameter;
/**
* Indicates whether or not a data column value was truncated.
* @serialized
*/
private boolean read;
/**
* This is the size of the data after truncation.
* @serialized
*/
private int transferSize;
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of <code>DataTruncation</code>
* with the specified values. The descriptive error message for this
* exception will be "Data truncation", the SQL state will be "01004"
* and the vendor specific error code will be set to 0.
*
* @param index The index of the parameter or column that was truncated.
* @param parameter <code>true</code> if a parameter was truncated,
* <code>false</code> otherwise.
* @param read <code>true</code> if a data column was truncated,
* <code>false</code> otherwise.
* @param dataSize The original size of the data.
* @param transferSize The size of the data after truncation.
*/
public
DataTruncation(int index, boolean parameter, boolean read, int dataSize,
int transferSize)
{
super("Data truncation", "01004");
this.index = index;
this.parameter = parameter;
this.read = read;
this.dataSize = dataSize;
this.transferSize = transferSize;
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns the index of the column or parameter that was
* truncated.
*
* @return The index of the column or parameter that was truncated.
*/
public int
getIndex()
{
return(index);
}
/*************************************************************************/
/**
* This method determines whether or not it was a parameter that was
* truncated.
*
* @return <code>true</code> if a parameter was truncated, <code>false</code>
* otherwise.
*/
public boolean
getParameter()
{
return(parameter);
}
/*************************************************************************/
/**
* This method determines whether or not it was a column that was
* truncated.
*
* @return <code>true</code> if a column was truncated, <code>false</code>
* otherwise.
*/
public boolean
getRead()
{
return(read);
}
/*************************************************************************/
/**
* This method returns the original size of the parameter or column that
* was truncated.
*
* @return The original size of the parameter or column that was truncated.
*/
public int
getDataSize()
{
return(dataSize);
}
/*************************************************************************/
/**
* This method returns the size of the parameter or column after it was
* truncated.
*
* @return The size of the parameter or column after it was truncated.
*/
public int
getTransferSize()
{
return(transferSize);
}
} // class DataTruncation
/* Date.java -- Wrapper around java.util.Date
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.text.SimpleDateFormat;
/**
* This class is a wrapper around java.util.Date to allow the JDBC
* driver to identify the value as a SQL Date.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class Date extends java.util.Date implements java.io.Serializable
{
/*
* Class Variables
*/
/**
* Used for parsing and formatting this date.
*/
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
/*************************************************************************/
/*
* Class Methods
*/
/**
* This method returns a new instance of this class by parsing a
* date in JDBC format into a Java date.
*
* @param str The string to parse.
*
* @return The resulting <code>java.sql.Date</code> value.
*/
public static Date
valueOf(String str)
{
try
{
java.util.Date d = (java.util.Date)sdf.parseObject(str);
return(new Date(d.getTime()));
}
catch(Exception e)
{
return(null);
}
}
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of this class with the
* specified year, month, and day.
*
* @param year The year of this date minue 1900.
* @param month The month of this date (0-11).
* @param day The day of this date (1-31).
*
* @deprecated
*/
public
Date(int year, int month, int day)
{
super(year, month, day);
}
/*************************************************************************/
/**
* This method initializes a new instance of this class with the
* specified time value representing the number of seconds since
* Jan 1, 1970 at 12:00 midnight GMT.
*
* @param time The time value to intialize this date to.
*/
public
Date(long date)
{
super(date);
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns this date in JDBC format.
*
* @return This date as a string.
*/
public String
toString()
{
return(sdf.format(this));
}
} // class Date
/* Driver.java -- A JDBC driver
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.util.Properties;
/**
* This interface specifies a mechanism for accessing a JDBC database
* driver. When the class implementing this method is loaded, it should
* register an instance of itself with the <code>DriverManager</code> in
* a static initializer.
* <p>
* Because the <code>DriverManager</code> might attempt to use several
* drivers to find one that can connect to the requested database,
* this driver should not cause large numbers of classes and code to
* be loaded. If another driver is the one that ends up performing the
* request, any loading done by this driver would be wasted.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public interface Driver
{
/**
* This method returns the major version number of the driver.
*
* @return The major version number of the driver.
*/
public abstract int
getMajorVersion();
/*************************************************************************/
/**
* This method returns the minor version number of the driver.
*
* @return The minor version number of the driver.
*/
public abstract int
getMinorVersion();
/*************************************************************************/
/**
* This method tests whether or not the driver is JDBC compliant. This
* method should only return <code>true</code> if the driver has been
* certified as JDBC compliant.
*
* @return <code>true</code> if the driver has been certified JDBC compliant,
* <code>false</code> otherwise.
*/
public abstract boolean
jdbcCompliant();
/*************************************************************************/
/**
* This method returns an array of possible properties that could be
* used to connect to the specified database.
*
* @param url The URL string of the database to connect to.
* @param properties The list of properties the caller is planning to use
* to connect to the database.
*
* @return A list of possible additional properties for a connection to this
* database. This list may be empty.
*
* @exception SQLException If an error occurs.
*/
public abstract DriverPropertyInfo[]
getPropertyInfo(String url, Properties properties) throws SQLException;
/*************************************************************************/
/**
* This method tests whether or not the driver believes it can connect to
* the specified database. The driver should only test whether it
* understands and accepts the URL. It should not necessarily attempt to
* probe the database for a connection.
*
* @param The database URL string.
*
* @return <code>true</code> if the drivers can connect to the database,
* <code>false</code> otherwise.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
acceptsURL(String url) throws SQLException;
/*************************************************************************/
/**
* This method connects to the specified database using the connection
* properties supplied. If the driver does not understand the database
* URL, it should return <code>null</code> instead of throwing an
* exception since the <code>DriverManager</code> will probe a driver
* in this manner.
*
* @param url The URL string for this connection.
* @param properties The list of database connection properties.
*
* @return A <code>Connection</code> object for the newly established
* connection, or <code>null</code> if the URL is not understood.
*
* @exception SQLException If an error occurs.
*/
public abstract Connection
connect(String url, Properties properties) throws SQLException;
} // interface Driver
/* DriverManager.java -- Manage JDBC drivers
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.Vector;
/**
* This class manages the JDBC drivers in the system. It maintains a
* registry of drivers and locates the appropriate driver to handle a
* JDBC database URL.
* <p>
* On startup, <code>DriverManager</code> loads all the managers specified
* by the system property <code>jdbc.drivers</code>. The value of this
* property should be a colon separated list of fully qualified driver
* class names. Additional drivers can be loaded at any time by
* simply loading the driver class with <code>class.forName(String)</code>.
* The driver should automatically register itself in a static
* initializer.
* <p>
* The methods in this class are all <code>static</code>. This class
* cannot be instantiated.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class DriverManager
{
/*
* Class Variables
*/
/**
* This is the log stream for JDBC drivers.
*/
private static PrintStream log_stream;
/**
* This is the log writer for JDBC drivers.
*/
private static PrintWriter log_writer;
/**
* This is the login timeout used by JDBC drivers.
*/
private static int login_timeout;
/**
* This is the list of JDBC drivers that are loaded.
*/
private static Vector drivers;
// Hmm, seems like we might want to do a Hashtable and lookup by something,
// but what would it be?
// Load all drivers on startup
static
{
drivers = new Vector();
String driver_string = System.getProperty("jdbc.drivers");
if (driver_string != null)
{
StringTokenizer st = new StringTokenizer(driver_string);
while (st.hasMoreTokens())
{
String driver_classname = st.nextToken();
try
{
Class.forName(driver_classname); // The driver registers itself
}
catch (Exception e) { ; } // Ignore not founds
}
}
}
/*************************************************************************/
/*
* Class Methods
*/
/**
* This method returns the login timeout in use by JDBC drivers systemwide.
*
* @return The login timeout.
*/
public static int
getLoginTimeout()
{
return(login_timeout);
}
/*************************************************************************/
/**
* This method set the login timeout used by JDBC drivers. This is a
* system-wide parameter that applies to all drivers.
*
* @param login_timeout The new login timeout value.
*/
public static void
setLoginTimeout(int login_timeout)
{
DriverManager.login_timeout = login_timeout;
}
/*************************************************************************/
/**
* This method returns the log stream in use by JDBC.
*
* @return The log stream in use by JDBC.
*
* @deprecated Use <code>getLogWriter()</code> instead.
*/
public static PrintStream
getLogStream()
{
return(log_stream);
}
/*************************************************************************/
/**
* This method sets the log stream in use by JDBC.
*
* @param log_stream The log stream in use by JDBC.
*
* @deprecated Use <code>setLogWriter</code> instead.
*/
public static void
setLogStream(PrintStream log_stream)
{
DriverManager.log_stream = log_stream;
}
/*************************************************************************/
/**
* This method prints the specified line to the log stream.
*
* @param str The string to write to the log stream.
*/
public static void
println(String str)
{
if (log_stream != null) // Watch for user not using logging
log_stream.println(str);
}
/*************************************************************************/
/**
* This method registers a new driver with the manager. This is normally
* called by the driver itself in a static initializer.
*
* @param driver The new <code>Driver</code> to add.
*/
public static void
registerDriver(Driver driver)
{
if (!drivers.contains(driver))
drivers.addElement(driver);
}
/*************************************************************************/
/**
* This method de-registers a driver from the manager.
*
* @param driver The <code>Driver</code> to unregister.
*/
public static void
deregisterDriver(Driver driver)
{
if (drivers.contains(driver))
drivers.removeElement(driver);
}
/*************************************************************************/
/**
* This method returns a list of all the currently loaded JDBC drivers which
* the current caller has access to.
*
* @return An <code>Enumeration</code> of all currently loaded JDBC drivers.
*/
public static Enumeration
getDrivers()
{
return(drivers.elements());
}
/*************************************************************************/
/**
* This method returns a driver that can connect to the specified
* JDBC URL string. This will be selected from among drivers loaded
* at initialization time and those drivers manually loaded by the
* same class loader as the caller.
*
* @param url The JDBC URL string to find a driver for.
*
* @return A <code>Driver</code> that can connect to the specified
* URL, or <code>null</code> if a suitable driver cannot be found.
*
* @exception SQLException If an error occurs.
*/
public static Driver
getDriver(String url) throws SQLException
{
// FIXME: Limit driver search to the appropriate subset of loaded drivers.
Enumeration e = drivers.elements();
while(e.hasMoreElements())
{
Driver d = (Driver)e.nextElement();
if (d.acceptsURL(url))
return(d);
}
return(null);
}
/*************************************************************************/
/**
* This method attempts to return a connection to the specified
* JDBC URL string.
*
* @param url The JDBC URL string to connect to.
*
* @return A <code>Connection</code> to that URL.
*
* @exception SQLException If an error occurs.
*/
public static Connection
getConnection(String url) throws SQLException
{
return(getConnection(url, new Properties()));
}
/*************************************************************************/
/**
* This method attempts to return a connection to the specified
* JDBC URL string using the specified username and password.
*
* @param url The JDBC URL string to connect to.
* @param user The username to connect with.
* @param password The password to connect with.
*
* @return A <code>Connection</code> to that URL.
*
* @exception SQLException If an error occurs.
*/
public static Connection
getConnection(String url, String user, String password) throws SQLException
{
Properties p = new Properties();
p.setProperty("user", user);
p.setProperty("password", password);
return(getConnection(url, p));
}
/*************************************************************************/
/**
* This method attempts to return a connection to the specified
* JDBC URL string using the specified connection properties.
*
* @param url The JDBC URL string to connect to.
* @param properties The connection properties.
*
* @return A <code>Connection</code> to that URL.
*
* @exception SQLException If an error occurs.
*/
public static Connection
getConnection(String url, Properties properties) throws SQLException
{
Driver d = getDriver(url);
if (d == null)
throw new SQLException("Driver not found for URL: " + url);
return(d.connect(url, properties));
}
/*************************************************************************/
/*
* Constructors
*/
// Keep bozos from trying to instantiate us.
private
DriverManager()
{
;
}
} // class DriverManager
/* DriverPropertyInfo.java -- Property information about drivers.
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This class holds a driver property that can be used for querying or
* setting driver configuration parameters.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class DriverPropertyInfo
{
/*
* Instance Variables
*/
/**
* The name of the property.
*/
public String name;
/**
* This is the value of the property.
*/
public String value;
/**
* A description of the property, possibly <code>null</code>.
*/
public String description;
/**
* A flag indicating whether or not a value for this property is required
* in order to connect to the database.
*/
public boolean required;
/**
* If values are restricted to certain choices, this is the list of valid
* ones. Otherwise it is <code>null</code>.
*/
public String[] choices;
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of <code>DriverPropertyInfo</code>
* with the specified name and value. All other fields are defaulted.
*
* @param name The name of the property.
* @param value The value to assign to the property.
*/
public
DriverPropertyInfo(String name, String value)
{
this.name = name;
this.value = value;
}
} // DriverPropertyInfo
/* SQLException.java -- General SQL exception
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This exception is thrown when a database error occurs.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class SQLException extends Exception implements java.io.Serializable
{
/*************************************************************************/
/*
* Instance Variables
*/
/**
* This is the next exception in the chain
* @serialized
*/
private SQLException next;
/**
* This is the state of the SQL statement at the time of the error.
* @serialized
*/
private String SQLState;
/**
* The vendor error code for this error
* @serialized
*/
private int vendorCode;
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of <code>SQLException</code>
* that does not have a descriptive messages and SQL state, and which
* has a vendor error code of 0.
*/
public
SQLException()
{
this(null, null, 0);
}
/*************************************************************************/
/**
* This method initializes a new instance of <code>SQLException</code>
* with the specified descriptive error message. The SQL state of this
* instance will be <code>null</code> and the vendor error code will be 0.
*
* @param message A string describing the nature of the error.
*/
public
SQLException(String message)
{
this(message, null, 0);
}
/*************************************************************************/
/**
* This method initializes a new instance of <code>SQLException</code>
* with the specified descriptive error message and SQL state string.
* The vendor error code of this instance will be 0.
*
* @param message A string describing the nature of the error.
* @param SQLState A string containing the SQL state of the error.
*/
public
SQLException(String message, String SQLState)
{
this(message, SQLState, 0);
}
/*************************************************************************/
/**
* This method initializes a nwe instance of <code>SQLException</code>
* with the specified descriptive error message, SQL state string, and
* vendor code.
*
* @param message A string describing the nature of the error.
* @param SQLState A string containing the SQL state of the error.
* @param vendorCode The vendor error code associated with this error.
*/
public
SQLException(String message, String SQLState, int vendorCode)
{
super(message);
this.SQLState = SQLState;
this.vendorCode = vendorCode;
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns the SQLState information associated with this
* error. The value returned is a <code>String</code> which is formatted
* using the XOPEN SQL state conventions.
*
* @return The SQL state, which may be <code>null</code>.
*/
public String
getSQLState()
{
return(SQLState);
}
/*************************************************************************/
/**
* This method returns the vendor specific error code associated with
* this error.
*
* @return The vendor specific error code associated with this error.
*/
public int
getErrorCode()
{
return(vendorCode);
}
/*************************************************************************/
/**
* This method returns the exception that is chained to this object.
*
* @return The exception chained to this object, which may be
* <code>null</code>.
*/
public SQLException
getNextException()
{
return(next);
}
/*************************************************************************/
/**
* This method adds a new exception to the end of the chain of exceptions
* that are chained to this object.
*
* @param e The exception to add to the end of the chain.
*/
public void
setNextException(SQLException e)
{
if (e == null)
return;
SQLException list_entry = this;
while (list_entry.getNextException() != null)
list_entry = list_entry.getNextException();
list_entry.next = e;
}
} // class SQLException
/* SQLWarning.java -- Database access warnings.
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This exception is thrown when a database warning occurs.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class SQLWarning extends SQLException implements java.io.Serializable
{
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of <code>SQLWxception</code>
* that does not have a descriptive messages and SQL state, and which
* has a vendor error code of 0.
*/
public
SQLWarning()
{
this(null, null, 0);
}
/*************************************************************************/
/**
* This method initializes a new instance of <code>SQLWarning</code>
* with the specified descriptive error message. The SQL state of this
* instance will be <code>null</code> and the vendor error code will be 0.
*
* @param message A string describing the nature of the error.
*/
public
SQLWarning(String message)
{
this(message, null, 0);
}
/*************************************************************************/
/**
* This method initializes a new instance of <code>SQLWarning</code>
* with the specified descriptive error message and SQL state string.
* The vendor error code of this instance will be 0.
*
* @param message A string describing the nature of the error.
* @param SQLState A string containing the SQL state of the error.
*/
public
SQLWarning(String message, String SQLState)
{
this(message, SQLState, 0);
}
/*************************************************************************/
/**
* This method initializes a nwe instance of <code>SQLWarning</code>
* with the specified descriptive error message, SQL state string, and
* vendor code.
*
* @param message A string describing the nature of the error.
* @param SQLState A string containing the SQL state of the error.
* @param vendorCode The vendor error code associated with this error.
*/
public
SQLWarning(String message, String SQLState, int vendorCode)
{
super(message, SQLState, vendorCode);
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns the exception that is chained to this object.
*
* @return The exception chained to this object, which may be
* <code>null</code>.
*/
public SQLWarning
getNextWarning()
{
return((SQLWarning)super.getNextException());
}
/*************************************************************************/
/**
* This method adds a new exception to the end of the chain of exceptions
* that are chained to this object.
*
* @param e The exception to add to the end of the chain.
*/
public void
setNextWarning(SQLWarning e)
{
super.setNextException(e);
}
} // class SQLWarning
/* Statement.java -- Interface for executing SQL statements.
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This interface provides a mechanism for executing SQL statements.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public interface Statement
{
/**
* This method executes the specified SQL SELECT statement and returns a
* (possibly empty) <code>ResultSet</code> with the results of the query.
*
* @param sql The SQL statement to execute.
*
* @return The result set of the SQL statement.
*
* @exception SQLException If an error occurs.
*/
public abstract ResultSet
executeQuery(String sql) throws SQLException;
/*************************************************************************/
/**
* This method executes the specified SQL INSERT, UPDATE, or DELETE statement
* and returns the number of rows affected, which may be 0.
*
* @param sql The SQL statement to execute.
*
* @return The number of rows affected by the SQL statement.
*
* @exception SQLException If an error occurs.
*/
public abstract int
executeUpdate(String sql) throws SQLException;
/*************************************************************************/
/**
* This method closes the statement and frees any associated resources.
*
* @exception SQLException If an error occurs.
*/
public abstract void
close() throws SQLException;
/*************************************************************************/
/**
* This method returns the maximum length of any column value in bytes.
*
* @return The maximum length of any column value in bytes.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getMaxFieldSize() throws SQLException;
/*************************************************************************/
/**
* This method sets the limit for the maximum length of any column in bytes.
*
* @param maxsize The new maximum length of any column in bytes.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setMaxFieldSize(int maxsize) throws SQLException;
/*************************************************************************/
/**
* This method returns the maximum possible number of rows in a result set.
*
* @return The maximum possible number of rows in a result set.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getMaxRows() throws SQLException;
/*************************************************************************/
/**
* This method sets the maximum number of rows that can be present in a
* result set.
*
* @param maxrows The maximum possible number of rows in a result set.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setMaxRows(int maxrows) throws SQLException;
/*************************************************************************/
/**
* This method sets the local escape processing mode on or off. The
* default value is on.
*
* @param escape <code>true</code> to enable local escape processing,
* <code>false</code> to disable it.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setEscapeProcessing(boolean esacpe) throws SQLException;
/*************************************************************************/
/**
* The method returns the number of seconds a statement may be in process
* before timing out. A value of 0 means there is no timeout.
*
* @return The SQL statement timeout in seconds.
*
* @exception SQLException If an error occurs.
*/
public abstract int
getQueryTimeout() throws SQLException;
/*************************************************************************/
/**
* This method sets the number of seconds a statement may be in process
* before timing out. A value of 0 means there is no timeout.
*
* @param timeout The new SQL statement timeout value.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setQueryTimeout(int timeout) throws SQLException;
/*************************************************************************/
/**
* This method cancels an outstanding statement, if the database supports
* that operation.
*
* @exception SQLException If an error occurs.
*/
public abstract void
cancel() throws SQLException;
/*************************************************************************/
/**
* This method returns the first SQL warning attached to this statement.
* Subsequent warnings will be chained to this one.
*
* @return The first SQL warning for this statement.
*
* @exception SQLException If an error occurs.
*/
public abstract SQLWarning
getWarnings() throws SQLException;
/*************************************************************************/
/**
* This method clears any SQL warnings that have been attached to this
* statement.
*
* @exception SQLException If an error occurs.
*/
public abstract void
clearWarnings() throws SQLException;
/*************************************************************************/
/**
* This method sets the cursor name that will be used by the result set.
*
* @param name The cursor name to use for this statement.
*
* @exception SQLException If an error occurs.
*/
public abstract void
setCursorName(String name) throws SQLException;
/*************************************************************************/
/**
* This method executes an arbitrary SQL statement of any time. The
* methods <code>getResultSet</code>, <code>getMoreResults</code> and
* <code>getUpdateCount</code> retrieve the results.
*
* @return <code>true</code> if a result set was returned, <code>false</code>
* if an update count was returned.
*
* @exception SQLException If an error occurs.
*/
public abstract boolean
execute(String sql) throws SQLException;
/*************************************************************************/
/**
* This method returns the result set of the SQL statement that was
* executed. This should be called only once per result set returned.
*
* @return The result set of the query, or <code>null</code> if there was
* no result set (for example, if the statement was an UPDATE).
*
* @exception SQLException If an error occurs.
*
* @see execute
*/
public abstract ResultSet
getResultSet() throws SQLException;
/*************************************************************************/
/**
* This method returns the update count of the SQL statement that was
* executed. This should be called only once per executed SQL statement.
*
* @return The update count of the query, or -1 if there was no update
* count (for example, if the statement was a SELECT).
*
* @exception SQLException If an error occurs.
*
* @see execute
*/
public abstract int
getUpdateCount() throws SQLException;
/*************************************************************************/
/**
* This method advances the result set pointer to the next result set,
* which can then be retrieved using <code>getResultSet</code>
*
* @return <code>true</code> if there is another result set,
* <code>false</code> otherwise (for example, the next result is an
* update count).
*
* @exception SQLException If an error occurs.
*
* @see execute
*/
public abstract boolean
getMoreResults() throws SQLException;
} // interface Statement
/* Time.java -- Wrapper around java.util.Date
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.text.SimpleDateFormat;
/**
* This class is a wrapper around java.util.Date to allow the JDBC
* driver to identify the value as a SQL Time.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class Time extends java.util.Date implements java.io.Serializable
{
/*
* Class Variables
*/
/**
* Used for parsing and formatting this date.
*/
private static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
/*************************************************************************/
/*
* Class Methods
*/
/**
* This method returns a new instance of this class by parsing a
* date in JDBC format into a Java date.
*
* @param str The string to parse.
*
* @return The resulting <code>java.sql.Time</code> value.
*/
public static Time
valueOf(String str)
{
try
{
java.util.Date d = (java.util.Date)sdf.parseObject(str);
return(new Time(d.getTime()));
}
catch(Exception e)
{
return(null);
}
}
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of this class with the
* specified year, month, and day.
*
* @param hour The hour for this Time (0-23)
* @param minute The minute for this time (0-59)
* @param second The second for this time (0-59)
*
* @deprecated
*/
public
Time(int hour, int minute, int second)
{
super(System.currentTimeMillis());
setHours(hour);
setMinutes(minute);
setSeconds(second);
}
/*************************************************************************/
/**
* This method initializes a new instance of this class with the
* specified time value representing the number of seconds since
* Jan 1, 1970 at 12:00 midnight GMT.
*
* @param time The time value to intialize this <code>Time</code> to.
*/
public
Time(long date)
{
super(date);
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns this date in JDBC format.
*
* @return This date as a string.
*/
public String
toString()
{
return(sdf.format(this));
}
} // class Time
/* Time.java -- Wrapper around java.util.Date
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
import java.text.SimpleDateFormat;
/**
* This class is a wrapper around java.util.Date to allow the JDBC
* driver to identify the value as a SQL Timestamp. Note that this
* class also adds an additional field for nano-seconds, and so
* is not completely identical to <code>java.util.Date</code> as
* the <code>java.sql.Date</code> and <code>java.sql.Time</code>
* classes are.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class Timestamp extends java.util.Date implements java.io.Serializable
{
/*
* Class Variables
*/
/**
* Used for parsing and formatting this date.
*/
// Millisecond will have to be close enough for now.
private static SimpleDateFormat parse_sdf =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSS");
private static SimpleDateFormat format_sdf =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/*************************************************************************/
/*
* Instance Variables
*/
/**
* @serial The nanosecond value for this object
*/
private int nanos;
/*************************************************************************/
/*
* Class Methods
*/
/**
* This method returns a new instance of this class by parsing a
* date in JDBC format into a Java date.
*
* @param str The string to parse.
*
* @return The resulting <code>java.sql.Timestamp</code> value.
*/
public static Timestamp
valueOf(String str)
{
try
{
Date d = (Date)parse_sdf.parseObject(str);
return(new Timestamp(d.getTime()));
}
catch(Exception e)
{
return(null);
}
}
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of this class with the
* specified year, month, and day.
*
* @param year The year for this Timestamp (year - 1900)
* @param month The month for this Timestamp (0-11)
* @param day The day for this Timestamp (1-31)
* @param hour The hour for this Timestamp (0-23)
* @param minute The minute for this Timestamp (0-59)
* @param second The second for this Timestamp (0-59)
* @param nanos The nanosecond value for this Timestamp (0 to 999,999,9999)
*
* @deprecated
*/
public
Timestamp(int year, int month, int day, int hour, int minute, int second,
int nanos)
{
super(year, month, day, hour, minute, second);
this.nanos = nanos;
}
/*************************************************************************/
/**
* This method initializes a new instance of this class with the
* specified time value representing the number of seconds since
* Jan 1, 1970 at 12:00 midnight GMT.
*
* @param time The time value to intialize this <code>Time</code> to.
*/
public
Timestamp(long date)
{
super(date);
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns this date in JDBC format.
*
* @return This date as a string.
*/
public String
toString()
{
return(format_sdf.format(this) + "." + getNanos());
}
/*************************************************************************/
/**
* This method returns the nanosecond value for this object.
*
* @return The nanosecond value for this object.
*/
public int
getNanos()
{
return(nanos);
}
/*************************************************************************/
/**
* This method sets the nanosecond value for this object.
*
* @param nanos The nanosecond value for this object.
*/
public void
setNanos(int nanos)
{
this.nanos = nanos;
}
/*************************************************************************/
/**
* This methods tests whether this object is earlier than the specified
* object.
*
* @param ts The other <code>Timestamp</code> to test against.
*
* @return <code>true</code> if this object is earlier than the other object,
* <code>false</code> otherwise.
*/
public boolean
before(Timestamp ts)
{
if (ts.getTime() > getTime())
return(true);
if (ts.getNanos() > getNanos())
return(true);
return(false);
}
/*************************************************************************/
/**
* This methods tests whether this object is later than the specified
* object.
*
* @param ts The other <code>Timestamp</code> to test against.
*
* @return <code>true</code> if this object is later than the other object,
* <code>false</code> otherwise.
*/
public boolean
after(Timestamp ts)
{
if (ts.getTime() < getTime())
return(true);
if (ts.getNanos() < getNanos())
return(true);
return(false);
}
/*************************************************************************/
/**
* This method these the specified <code>Object</code> for equality
* against this object. This will be true if an only if the specified
* object is an instance of <code>Timestamp</code> and has the same
* time value fields.
*
* @param obj The object to test against for equality.
*
* @return <code>true</code> if the specified object is equal to this
* object, <code>false</code> otherwise.
*/
public boolean
equals(Object obj)
{
if (obj == null)
return(false);
if (!(obj instanceof Timestamp))
return(false);
return(equals((Timestamp)obj));
}
/*************************************************************************/
/**
* This method tests the specified timestamp for equality against this
* object. This will be true if and only if the specified object is
* not <code>null</code> and contains all the same time value fields
* as this object.
*
* @param ts The <code>Timestamp</code> to test against for equality.
*
* @return <code>true</code> if the specified object is equal to this
* object, <code>false</code> otherwise.
*/
public boolean
equals(Timestamp ts)
{
if (ts == null)
return(false);
if (ts.getTime() != getTime())
return(false);
if (ts.getNanos() != getNanos())
return(false);
return(true);
}
} // class Timestamp
/* Types.java -- SQL type constants
Copyright (C) 1999 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
As a special exception, if you link this library with other files to
produce an executable, this library does not by itself cause the
resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why the
executable file might be covered by the GNU General Public License. */
package java.sql;
/**
* This class contains constants that are used to identify SQL data types.
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class Types
{
// These should be self explanatory. People need a SQL book, not
// Javadoc comments for these.
public static final int BIT = -7;
public static final int TINYINT = -6;
public static final int SMALLINT = 5;
public static final int INTEGER = 4;
public static final int BIGINT = -5;
public static final int FLOAT = 6;
public static final int REAL = 7;
public static final int DOUBLE = 8;
public static final int NUMERIC = 2;
public static final int DECIMAL = 3;
public static final int CHAR = 1;
public static final int VARCHAR = 12;
public static final int LONGVARCHAR = -1;
public static final int DATE = 91;
public static final int TIME = 92;
public static final int TIMESTAMP = 93;
public static final int BINARY = -2;
public static final int VARBINARY = -3;
public static final int LONGVARBINARY = -4;
public static final int NULL = 0;
public static final int OTHER = 1111;
} // class Types
...@@ -11,10 +11,10 @@ java.lang.Character.classify12 ...@@ -11,10 +11,10 @@ java.lang.Character.classify12
java.lang.String.hash java.lang.String.hash
# We support 1.2 for this test. # We support 1.2 for this test.
java.lang.reflect.Modifier.toString12 java.lang.reflect.Modifier.toString12
!java.math java.math
!java.rmi !java.rmi
!java.security java.security
!java.sql java.sql
java.text.FieldPosition.Test java.text.FieldPosition.Test
java.text.ParsePosition.Test java.text.ParsePosition.Test
java.text.SimpleDateFormat.getAndSet2DigitYearStart java.text.SimpleDateFormat.getAndSet2DigitYearStart
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment