You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2006/03/15 15:57:17 UTC
svn commit: r386087 [37/45] - in /incubator/harmony/enhanced/classlib/trunk:
make/ make/patternsets/ modules/jndi/ modules/jndi/META-INF/
modules/jndi/make/ modules/jndi/make/common/ modules/jndi/src/
modules/jndi/src/main/ modules/jndi/src/main/java/ ...
Added: incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Date.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Date.java?rev=386087&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Date.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Date.java Wed Mar 15 06:55:38 2006
@@ -0,0 +1,195 @@
+/* Copyright 2004 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package java.sql;
+
+import java.text.SimpleDateFormat;
+import java.lang.IllegalArgumentException;
+import java.text.ParseException;
+import java.io.Serializable;
+
+/**
+ * A Date class which can consume and produce dates in SQL Date format.
+ * <p>
+ * The SQL date format represents a date as yyyy-mm-dd. Note that this date format only deals with year, month
+ * and day values. There are no values for hours, minutes, seconds.
+ * <p>
+ * This contrasts with regular java.util.Date values, which include time values for hours, minutes, seconds,
+ * milliseconds.
+ * <p>
+ * Time points are handled as millisecond values - milliseconds since the epoch, January 1st 1970,
+ * 00:00:00.000 GMT. Time values passed to the java.sql.Date class are "normalised" to the time
+ * 00:00:00.000 GMT on the date implied by the time value.
+ */
+public class Date extends java.util.Date implements Serializable, Cloneable, Comparable {
+
+ private static final long serialVersionUID = 1511598038487230103L;
+
+ /**
+ * @deprecated Please use the constructor Date( long )
+ * Constructs a Date object corresponding to the supplied Year, Month and Day.
+ * @param theYear the year, specified as the year minus 1900. Must be in the range 0 to 8099.
+ * @param theMonth the month, specified as a number with 0 = January. Must be in the range 0 to 11.
+ * @param theDay the day in the month. Must be in the range 1 to 31.
+ */
+ public Date( int theYear, int theMonth, int theDay ) {
+ super( theYear, theMonth, theDay );
+ } // end method Date(int, int, int )
+
+ /**
+ * Creates a Date which corresponds to the day implied by the supplied theDate milliseconds
+ * time value.
+ *
+ * @param theDate - a time value in milliseconds since the epoch - January 1 1970 00:00:00 GMT.
+ * The time value (hours, minutes, seconds, milliseconds) stored in the Date object is adjusted
+ * to correspond to 00:00:00 GMT on the day implied by the supplied time value.
+ */
+ public Date( long theDate ) {
+ super( normalizeTime( theDate ) );
+ // System.out.println("Clear version of java.sql.Date");
+ } // end method Date( long )
+
+ /**
+ * @deprecated
+ * This method is deprecated and must not be used. SQL Date values do not have an hours component.
+ * @return 0
+ * @throws IllegalArgumentException if this method is called
+ */
+ public int getHours() {
+ if( true ) {
+ throw new IllegalArgumentException();
+ } // end if
+ return 0;
+ } // end method getHours
+
+ /**
+ * @deprecated
+ * This method is deprecated and must not be used. SQL Date values do not have a minutes component.
+ * @return 0
+ * @throws IllegalArgumentException if this method is called
+ */
+ public int getMinutes() {
+ if( true ) {
+ throw new IllegalArgumentException();
+ } // end if
+ return 0;
+ } // end method getMinutes()
+
+ /**
+ * @deprecated
+ * This method is deprecated and must not be used. SQL Date values do not have a seconds component.
+ * @return 0
+ * @throws IllegalArgumentException if this method is called
+ */
+ public int getSeconds() {
+ if( true ) {
+ throw new IllegalArgumentException();
+ } // end if
+ return 0;
+ } // end method getSeconds
+
+ /**
+ * @deprecated
+ * This method is deprecated and must not be used. SQL Date values do not have an hours component.
+ * @param theHours the number of hours to set
+ * @throws IllegalArgumentException if this method is called
+ */
+ public void setHours( int theHours ) {
+ if( true ) {
+ throw new IllegalArgumentException();
+ } // end if
+ } // end method setHours( int )
+
+ /**
+ * @deprecated
+ * This method is deprecated and must not be used. SQL Date values do not have a minutes component.
+ * @param theMinutes the number of minutes to set
+ * @throws IllegalArgumentException if this method is called
+ */
+ public void setMinutes( int theMinutes ) {
+ if( true ) {
+ throw new IllegalArgumentException();
+ } // end if
+ } // end method setMinutes( int )
+
+ /**
+ * @deprecated
+ * This method is deprecated and must not be used. SQL Date values do not have a seconds component.
+ * @param theSeconds the number of seconds to set
+ * @throws IllegalArgumentException if this method is called
+ */
+ public void setSeconds( int theSeconds ) {
+ if( true ) {
+ throw new IllegalArgumentException();
+ } // end if
+ } // end method setHours( int )
+
+ /**
+ * Sets this date to a date supplied as a milliseconds value. The date is set based
+ * on the supplied time value after removing any time elements finer than a day, based
+ * on zero GMT for that day.
+ * @param theTime the time in milliseconds since the Epoch
+ */
+ public void setTime( long theTime ) {
+ // Store the Date based on the supplied time after removing any time elements
+ // finer than the day based on zero GMT
+ super.setTime( normalizeTime( theTime ) );
+ } // end method setTime( int )
+
+ /**
+ * Produces a string representation of the Date in SQL format
+ * @return a string representation of the Date in SQL format - "yyyy-mm-dd".
+ */
+ public String toString() {
+ SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" ); //$NON-NLS-1$
+
+ return dateFormat.format( this );
+ } // end method toString()
+
+ /**
+ * Creates a Date from a string representation of a date in SQL format.
+ * @param theString the string representation of a date in SQL format - "yyyy-mm-dd".
+ * @return the Date object
+ * @throws IllegalArgumentException if the format of the supplied string does not match the
+ * SQL format.
+ */
+ public static Date valueOf( String theString ) {
+ java.util.Date aDate;
+
+ if( theString == null ) throw new IllegalArgumentException();
+
+ SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" ); //$NON-NLS-1$
+ try {
+ aDate = dateFormat.parse( theString );
+ } catch( ParseException pe ) {
+ throw new IllegalArgumentException();
+ } // end try
+
+ return new Date( aDate.getTime() );
+ } // end valueOf( String )
+
+ /*
+ * Private method which normalizes a Time value, removing all low significance
+ * digits corresponding to milliseconds, seconds, minutes and hours, so that the
+ * returned Time value corresponds to 00:00:00 GMT on a particular day.
+ *
+ */
+ private static long normalizeTime( long theTime ) {
+ return theTime;
+ } // end method normalizeTime( long )
+} /* end class Date */
+
+
Added: incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Driver.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Driver.java?rev=386087&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Driver.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Driver.java Wed Mar 15 06:55:38 2006
@@ -0,0 +1,92 @@
+/* Copyright 2004 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package java.sql;
+
+import java.util.Properties;
+
+/**
+ * An Interface to a JDBC Driver.
+ * <p>
+ * The JDBC Driver uses URLs to specify the location of specific data. URL format typically takes the form
+ * "xxxx:yyyy:SpecificData", where "xxxx:yyyy" is termed the subprotocol and is normally the same for
+ * all uses of a particular driver. "SpecificData" is a string which identifies the particular data
+ * source that the driver should use.
+ *
+ */
+public interface Driver {
+
+ /**
+ * Returns whether the driver thinks that it can open a connection to the given URL.
+ * @param url the URL to connect to.
+ * @return true if the driver thinks that is can open a connection to the supplied URL,
+ * flase otherwise. Typically, the driver will respond true if it thinks that it can handle
+ * the subprotocol specified by the driver.
+ * @throws SQLException
+ */
+ public boolean acceptsURL(String url) throws SQLException;
+
+ /**
+ * Attempts to make a database connection to a datasource specified by a supplied URL.
+ * @param url the url to connect.
+ * @param info some properties that should be used in establishing the connection. The properties
+ * consist of name/value pairs of Strings. Normally, a connection to a database requires at least
+ * two properties - for "user" and "password" in order to pass authentication to the database.
+ * @return a Connection object representing the connection to the database.
+ * @throws SQLException if a database error occurs
+ */
+ public Connection connect(String url, Properties info) throws SQLException;
+
+ /**
+ * Gets the driver's major version number.
+ * @return the major version number of the Driver - typically starts at 1.
+ */
+ public int getMajorVersion();
+
+ /**
+ * Gets the driver's minor version number.
+ * @return the minor version number of the Driver - typically starts at 0.
+ */
+ public int getMinorVersion();
+
+ /**
+ * Gets information about possible properties for this driver.
+ * <p>
+ * This method is intended to provide a listing of possible properties that the user of
+ * the driver may need to supply in order to correct connect to a database. Note that the
+ * returned array of Properties may change depending on the supplied list of property values.
+ * @param url the url of the database. A using program may call this method iteratively
+ * as the property list is built up - for example, when displaying a dialog to an end-user
+ * as part of the database login process.
+ * @param info
+ * @return an array of DriverPropertyInfo records which provide detail on each property that
+ * the driver will accept.
+ * @throws SQLException
+ */
+ public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException;
+
+ /**
+ * Reports whether this driver is a genuine JDBC CompliantTM driver. The driver may only return
+ * true from this method if it passes all the JDBC Compliance tests.
+ * <p>
+ * A driver may not be fully compliant if the underlying database has limited functionality.
+ * @return true if the driver is fully JDBC compliant, false otherwise.
+ */
+ public boolean jdbcCompliant();
+
+} // end interface Driver
+
+
Added: incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/DriverManager.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/DriverManager.java?rev=386087&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/DriverManager.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/DriverManager.java Wed Mar 15 06:55:38 2006
@@ -0,0 +1,396 @@
+/* Copyright 2004 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package java.sql;
+
+import java.util.Properties;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.util.HashSet;
+import java.util.Vector;
+import com.ibm.common.ClassUtils;
+import com.ibm.oti.vm.VM;
+
+/**
+ * Provides facilities for managing JDBC Drivers.
+ * <p>
+ * The DriverManager class will load JDBC drivers during its initialization,
+ * from the list of drivers referenced by the System Property "jdbc.drivers".
+ *
+ */
+public class DriverManager {
+
+ // Facilities for logging. The Print Stream is deprecated but is maintained
+ // here for compatibility.
+ private static PrintStream thePrintStream = null;
+
+ private static PrintWriter thePrintWriter = null;
+
+ // Login timeout value - by default set to 0 -> "wait forever"
+ private static int loginTimeout = 0;
+
+ // Set to hold Registered Drivers - initial capacity 10 drivers (will expand
+ // automatically
+ // if necessary.
+ private static HashSet theDriverSet = new HashSet(10);
+
+ // Permission for setting log
+ private static SQLPermission logPermission = new SQLPermission("setLog"); //$NON-NLS-1$
+
+ /*
+ * Load drivers on initialization
+ */
+ static {
+ // System.out.println("Clear version of java.sql.DriverManager loaded")
+ // ;
+ loadInitialDrivers();
+ } // end static initializer
+
+ /*
+ * Loads the set of JDBC drivers defined by the Property "jdbc.drivers" if
+ * it is defined.
+ */
+ private static void loadInitialDrivers() {
+ String theDriverList = System.getProperty("jdbc.drivers", null); //$NON-NLS-1$
+ if (theDriverList == null)
+ return;
+
+ // System.out.println( "Loading initial drivers: " + theDriverList );
+
+ // Get the names of the drivers as an array of Strings from the system
+ // property by
+ // splitting the property at the separator character ':'
+ String[] theDriverNames = theDriverList.split(":"); //$NON-NLS-1$
+
+ for (int i = 0; i < theDriverNames.length; i++) {
+ // System.out.println( "Driver: " + (i + 1) + " " +
+ // theDriverNames[i] );
+
+ try {
+ // Load the driver class
+ Class.forName(theDriverNames[i], true, ClassLoader
+ .getSystemClassLoader());
+ } catch (ClassNotFoundException e) {
+ // System.out.println("DriverManager: Unable to load driver: " +
+ // theDriverNames[i] );
+ } catch (Throwable t) {
+ // System.out.println("DriverManager: Exception loading driver:
+ // " + theDriverNames[i] );
+ // t.getMessage();
+ // t.printStackTrace();
+ } // end try
+ } // end for
+
+ } // end method loadInitialDrivers()
+
+ /*
+ * A private constructor to prevent allocation
+ */
+ private DriverManager() {
+ super();
+ } // end method DriverManager()
+
+ /**
+ * Removes a driver from the DriverManager's registered driver list. This
+ * will only succeed where the caller's classloader loaded the driver that
+ * is to be removed. If the driver was loaded by a different classloader,
+ * the removal of the driver will fail silently.
+ * <p>
+ * If the removal succeeds, the DriverManager will not in future use this
+ * driver when asked to get a Connection.
+ *
+ * @param driver
+ * @throws SQLException
+ * if there is an exception accessing the database.
+ */
+ public static void deregisterDriver(Driver driver) throws SQLException {
+ if (driver == null)
+ return;
+ ClassLoader callerClassLoader = VM.callerClassLoader();
+
+ if (!ClassUtils.isClassFromClassLoader(driver, callerClassLoader)) {
+ throw new SecurityException(
+ "DriverManager: calling class not authorized to deregister JDBC driver");
+ } // end if
+ synchronized (theDriverSet) {
+ theDriverSet.remove(driver);
+ } // end synchronized
+
+ } // end method deregisterDriver( Driver );
+
+ /**
+ * Attempts to establish a connection to the given database URL.
+ *
+ * @param url
+ * a URL string representing the database target to connect with
+ * @return a Connection to the database identified by the URL. null if no
+ * connection can be made.
+ * @throws SQLException
+ * if there is an error while attempting to connect to the
+ * database identified by the URL
+ */
+ public static Connection getConnection(String url) throws SQLException {
+ // Call the getConnection method with an empty Properties parameter
+ return getConnection(url, new Properties());
+ } // end method getConnection( String )
+
+ /**
+ * Attempts to establish a connection to the given database URL.
+ *
+ * @param url
+ * a URL string representing the database target to connect with
+ * @param info
+ * a set of Properties to use as arguments to set up the
+ * connection. Properties are arbitrary string/value pairs.
+ * Normally, at least the properties "user" and "password" should
+ * be passed, with appropriate settings for the userid and its
+ * corresponding password to get access to the database
+ * concerned.
+ * @return a Connection to the database identified by the URL. null if no
+ * connection can be made.
+ * @throws SQLException
+ * if there is an error while attempting to connect to the
+ * database identified by the URL
+ */
+ public static Connection getConnection(String url, Properties info)
+ throws SQLException {
+ if (url == null)
+ throw new SQLException("The url cannot be null");
+ synchronized (theDriverSet) {
+ // Loop over the drivers in the DriverSet checking to see if one can
+ // open a
+ // connection to the supplied URL - return the first connection
+ // which is returned
+ Iterator theIterator = theDriverSet.iterator();
+ while (theIterator.hasNext()) {
+ Driver theDriver = (Driver) theIterator.next();
+ Connection theConnection = theDriver.connect(url, info);
+ if (theConnection != null)
+ return theConnection;
+ } // end while
+ } // end synchronized
+ // If we get here, none of the drivers are able to resolve the URL
+ throw new SQLException("No suitable driver");
+ } // end method getConnection( String, Properties )
+
+ /**
+ * Attempts to establish a connection to the given database URL.
+ *
+ * @param url
+ * a URL string representing the database target to connect with
+ * @param user
+ * a userid used to login to the database
+ * @param password
+ * a password for the userid to login to the database
+ * @return a Connection to the database identified by the URL. null if no
+ * connection can be made.
+ * @throws SQLException
+ * if there is an error while attempting to connect to the
+ * database identified by the URL
+ */
+ public static Connection getConnection(String url, String user,
+ String password) throws SQLException {
+ if (user == null || password == null) {
+ throw new SQLException("Userid and/or password not supplied");
+ } // end if
+ Properties theProperties = new Properties();
+ theProperties.setProperty("user", user); //$NON-NLS-1$
+ theProperties.setProperty("password", password); //$NON-NLS-1$
+ return getConnection(url, theProperties);
+ } // end method getConnection( String, String, String )
+
+ /**
+ * Tries to find a driver that can interpret the supplied URL.
+ *
+ * @param url
+ * the URL of a database
+ * @return a Driver that can understand the given URL. null if no Driver
+ * understands the URL
+ * @throws SQLException
+ * if there is any kind of Database Access problem
+ */
+ public static Driver getDriver(String url) throws SQLException {
+ ClassLoader callerClassLoader = VM.callerClassLoader();
+
+ synchronized (theDriverSet) {
+ // Loop over the drivers in the DriverSet checking to see if one
+ // does
+ // understand the supplied URL - return the first driver which does
+ // understand
+ // the URL
+ Iterator theIterator = theDriverSet.iterator();
+ while (theIterator.hasNext()) {
+ Driver theDriver = (Driver) theIterator.next();
+ if (theDriver.acceptsURL(url)
+ && ClassUtils.isClassFromClassLoader(theDriver,
+ callerClassLoader))
+ return theDriver;
+ } // end while
+ } // end synchronized
+ // If no drivers understand the URL, throw an SQLException
+ throw new SQLException("No suitable driver");
+ } // end method getDriver( String )
+
+ /**
+ * Returns an Enumeration that contains all of the loaded JDBC drivers that
+ * the current caller can access.
+ *
+ * @return An Enumeration containing all the currently loaded JDBC Drivers
+ */
+ public static Enumeration getDrivers() {
+ Enumeration theEnumeration;
+
+ ClassLoader callerClassLoader = VM.callerClassLoader();
+ // Synchronize to avoid clashes with additions and removals of drivers
+ // in the
+ // DriverSet
+ synchronized (theDriverSet) {
+ // Create the Enumeration by building a Vector from the elements of
+ // the
+ // DriverSet
+ Vector theVector = new Vector();
+ Iterator theIterator = theDriverSet.iterator();
+ while (theIterator.hasNext()) {
+ Driver theDriver = (Driver) theIterator.next();
+ if (ClassUtils.isClassFromClassLoader(theDriver,
+ callerClassLoader)) {
+ theVector.add(theDriver);
+ } // end if
+ } // end for
+ theEnumeration = theVector.elements();
+ } // end synchronized
+ return theEnumeration;
+ } // end method getDrivers()
+
+ /**
+ * Returns the login timeout when connecting to a database, in seconds.
+ *
+ * @return the login timeout in seconds
+ */
+ public static int getLoginTimeout() {
+ return loginTimeout;
+ } // end method getLoginTimeout()
+
+ /**
+ * @deprecated Gets the log PrintStream used by the DriverManager and all
+ * the JDBC Drivers.
+ * @return the PrintStream used for logging activity
+ */
+ public static PrintStream getLogStream() {
+ return thePrintStream;
+ } // end method getLogStream()
+
+ /**
+ * Retrieves the log writer.
+ *
+ * @return A PrintWriter object used as the log writer. null if no log
+ * writer is set.
+ */
+ public static PrintWriter getLogWriter() {
+ return thePrintWriter;
+ } // end method getLogWriter()
+
+ /**
+ * Prints a message to the current JDBC log stream. This is either the
+ * PrintWriter or (deprecated) the PrintStream, if set.
+ *
+ * @param message
+ * the message to print to the JDBC log stream
+ */
+ public static void println(String message) {
+ if (thePrintWriter != null) {
+ thePrintWriter.println(message);
+ thePrintWriter.flush();
+ } else if (thePrintStream != null) {
+ thePrintStream.println(message);
+ thePrintStream.flush();
+ } // end if
+ // If neither the PrintWriter not the PrintStream are set, then silently
+ // do nothing
+ // the message is not recorded and no exception is generated.
+ return;
+ } // end method println( String )
+
+ /**
+ * Registers a given JDBC driver with the DriverManager.
+ * <p>
+ * A newly loaded JDBC driver class should register itself with the
+ * DriverManager by calling this method.
+ *
+ * @param driver
+ * the Driver to register with the DriverManager
+ * @throws SQLException
+ * if a database access error occurs.
+ */
+ public static void registerDriver(Driver driver) throws SQLException {
+ if (driver == null)
+ throw new NullPointerException();
+ synchronized (theDriverSet) {
+ theDriverSet.add(driver);
+ } // end synchronized
+ } // end method registerDriver( Driver )
+
+ /**
+ * Set the login timeout when connecting to a database, in seconds.
+ *
+ * @param seconds
+ * seconds until timeout. 0 indicates wait forever.
+ */
+ public static void setLoginTimeout(int seconds) {
+ loginTimeout = seconds;
+ return;
+ } // end method setLoginTimeout( int )
+
+ /**
+ * @deprecated Sets the Print Stream to use for logging data from the
+ * DriverManager and the JDBC drivers.
+ * <p>
+ * Use setLogWriter instead.
+ * @param out
+ * the PrintStream to use for logging.
+ */
+ public static void setLogStream(PrintStream out) {
+ checkLogSecurity();
+ thePrintStream = out;
+ } // end method setLogStream( PrintStream )
+
+ /**
+ * Sets the PrintWriter that will be used by all loaded drivers, and also
+ * the DriverManager.
+ *
+ * @param out
+ * the PrintWriter to be used
+ */
+ public static void setLogWriter(PrintWriter out) {
+ checkLogSecurity();
+ thePrintWriter = out;
+ } // end method setLogWriter( PrintWriter )
+
+ /*
+ * Method which checks to see if setting a logging stream is allowed by the
+ * Security manager
+ */
+ private static void checkLogSecurity() {
+ SecurityManager securityManager = System.getSecurityManager();
+ if (securityManager != null) {
+ // Throws a SecurityException if setting the log is not permitted
+ securityManager.checkPermission(logPermission);
+ } // end checkLogSecurity
+ } // end method checkLogSecurity
+
+} // end class DriverManager
+
Added: incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/DriverPropertyInfo.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/DriverPropertyInfo.java?rev=386087&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/DriverPropertyInfo.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/DriverPropertyInfo.java Wed Mar 15 06:55:38 2006
@@ -0,0 +1,74 @@
+/* Copyright 2004 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package java.sql;
+
+/**
+ * A class holding information about Driver Properties for making a Connection.
+ * This class is returned from the <code>Driver.getDriverProperties</code>
+ * method and is useful in using Connections in an advanced way.
+ *
+ */
+public class DriverPropertyInfo {
+
+ /**
+ * If the value member can be chosen from a set of possible values, they are
+ * contained here. Otherwise choices is null.
+ */
+ public String[] choices;
+
+ /**
+ * A description of the property. May be null.
+ */
+ public String description;
+
+ /**
+ * The name of the property.
+ */
+ public String name;
+
+ /**
+ * True when the value member must be provided during Driver.connect. False
+ * otherwise.
+ */
+ public boolean required;
+
+ /**
+ * The current value associated with this property. This is based on the
+ * data gathered by the getPropertyInfo method, the general Java environment
+ * and the default values for the driver.
+ */
+ public String value;
+
+ /**
+ * Creates a DriverPropertyInfo instance with the supplied name and value.
+ * Other members take their default values.
+ *
+ * @param name
+ * The property name
+ * @param value
+ * The property value
+ */
+ public DriverPropertyInfo(String name, String value) {
+ this.name = name;
+ this.value = value;
+ this.choices = null;
+ this.description = null;
+ this.required = false;
+
+ } // end method DriverPropertyInfo
+
+} // end class DriverPropertyInfo
+
Added: incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/ParameterMetaData.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/ParameterMetaData.java?rev=386087&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/ParameterMetaData.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/ParameterMetaData.java Wed Mar 15 06:55:38 2006
@@ -0,0 +1,184 @@
+/* Copyright 2004 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package java.sql;
+
+/**
+ * An interface used to get information about the types and properties of
+ * parameters in a PreparedStatement object.
+ *
+ */
+public interface ParameterMetaData {
+
+ /**
+ * Indicates that the parameter mode is IN.
+ */
+ public static final int parameterModeIn = 1;
+
+ /**
+ * Indicates that the parameter mode is INOUT.
+ */
+ public static final int parameterModeInOut = 2;
+
+ /**
+ * Indicates that the parameter mode is OUT.
+ */
+ public static final int parameterModeOut = 4;
+
+ /**
+ * Indicates that the parameter mode is not known.
+ */
+ public static final int parameterModeUnknown = 0;
+
+ /**
+ * Indicates that a parameter is not permitted to be NULL.
+ */
+ public static final int parameterNoNulls = 0;
+
+ /**
+ * Indicates that a parameter is permitted to be NULL.
+ */
+ public static final int parameterNullable = 1;
+
+ /**
+ * Indicates that whether a parameter is allowed to be null or not is not
+ * known.
+ */
+ public static final int parameterNullableUnknown = 2;
+
+ /**
+ * Gets the fully-qualified name of the Java class which should be passed as
+ * a parameter to the method <code>PreparedStatement.setObject</code>.
+ *
+ * @param paramIndex
+ * the index number of the parameter, where the first parameter
+ * has an index of 1
+ * @return a String with the fully qualified Java class name of the
+ * parameter with the specified index. This class name is used for
+ * custom mapping.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public String getParameterClassName(int paramIndex) throws SQLException;
+
+ /**
+ * Gets the number of parameters in the PreparedStatement for which this
+ * ParameterMetaData contains information.
+ *
+ * @return the number of parameters as an int
+ * @throws SQLException
+ * if a database error happens
+ */
+ public int getParameterCount() throws SQLException;
+
+ /**
+ * Gets the mode of the specified parameter.
+ *
+ * @param paramIndex
+ * the index number of the parameter, where the first parameter
+ * has an index of 1
+ * @return the parameters mode. Can be: ParameterMetaData.parameterModeIn,
+ * ParameterMetaData.parameterModeOut,
+ * ParameterMetaData.parameterModeInOut or
+ * ParameterMetaData.parameterModeUnknown.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public int getParameterMode(int paramIndex) throws SQLException;
+
+ /**
+ * Gets the SQL type of a specified parameter.
+ *
+ * @param paramIndex
+ * the index number of the parameter, where the first parameter
+ * has an index of 1
+ * @return the type of the parameter - an SQL type as defined in
+ * java.sql.Types.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public int getParameterType(int paramIndex) throws SQLException;
+
+ /**
+ * Gets the database-specific type name of a specified parameter.
+ *
+ * @param paramIndex
+ * the index number of the parameter, where the first parameter
+ * has an index of 1
+ * @return the type name for the parameter as used by the database. A
+ * fully-qualified name is returned if the parameter is a User
+ * Defined Type.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public String getParameterTypeName(int paramIndex) throws SQLException;
+
+ /**
+ * Gets the number of decimal digits for a specified parameter.
+ *
+ * @param paramIndex
+ * the index number of the parameter, where the first parameter
+ * has an index of 1
+ * @return the number of decimal digits ("the precision") for the parameter.
+ * 0 if the parameter is not a numeric type.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public int getPrecision(int paramIndex) throws SQLException;
+
+ /**
+ * Gets the number of digits after the decimal point for a specified
+ * parameter.
+ *
+ * @param paramIndex
+ * the index number of the parameter, where the first parameter
+ * has an index of 1
+ * @return the number of digits after the decimal point ("the scale") for
+ * the parameter. 0 if the parameter is not a numeric type.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public int getScale(int paramIndex) throws SQLException;
+
+ /**
+ * Gets whether null values are allowed for the specified parameter.
+ *
+ * @param paramIndex
+ * the index number of the parameter, where the first parameter
+ * has an index of 1
+ * @return indicator of nullability, can be:
+ * ParameterMetaData.parameterNoNulls,
+ * ParameterMetaData.parameterNullable, or
+ * ParameterMetaData.parameterNullableUnknown
+ * @throws SQLException
+ * if a database error is encountered
+ */
+ public int isNullable(int paramIndex) throws SQLException;
+
+ /**
+ * Gets whether values for the specified parameter can be signed numbers.
+ *
+ * @param paramIndex
+ * the index number of the parameter, where the first parameter
+ * has an index of 1
+ * @return true if values can be signed numbers for this parameter, false
+ * otherwise.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public boolean isSigned(int paramIndex) throws SQLException;
+
+} // end interface ParameterMetaData
+
Added: incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/PreparedStatement.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/PreparedStatement.java?rev=386087&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/PreparedStatement.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/PreparedStatement.java Wed Mar 15 06:55:38 2006
@@ -0,0 +1,631 @@
+/* Copyright 2004 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package java.sql;
+
+import java.util.Calendar;
+import java.net.URL;
+import java.io.InputStream;
+import java.io.Reader;
+import java.math.BigDecimal;
+
+/**
+ * An interface for a Precompiled SQL Statement.
+ * <p>
+ * An SQL Statement is put into a PreparedStatement and is precompiled so that
+ * it can be executed multiple times efficiently.
+ * <p>
+ * Setter methods are supplied in the PreparedStatement interface for the
+ * setting of IN parameters for the Statement. The setter method used for each
+ * IN parameter must match the type of the IN parameter being set.
+ *
+ */
+public interface PreparedStatement extends Statement {
+
+ /**
+ * Add a set of parameters to the PreparedStatement's command batch.
+ *
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void addBatch() throws SQLException;
+
+ /**
+ * Clear the current parameter values.
+ * <p>
+ * Typically, parameter values are retained for multiple executions of the
+ * Statement. Setting a parameter value replaces the previous value. This
+ * method clears the values for all parameters, releasing all resources used
+ * by those parameters.
+ *
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void clearParameters() throws SQLException;
+
+ /**
+ * Executes the SQL statement in this PreparedStatement.
+ * <p>
+ * A PreparedStatement may return multiple results. The execute method
+ * returns a flag indicating the kind of result produced by
+ * PreparedStatement. The methods <code>
+ * getResultSet</code> or
+ * <code>getUpdateCount</code> are used to retrieve the first result,
+ * while <code>getMoreResults</code> must be used to retrieve the second
+ * and subsequent results.
+ *
+ * @return true if the result of the execution is a ResultSet, false if
+ * there is no result or if the result is an update count.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public boolean execute() throws SQLException;
+
+ /**
+ * Execute the SQL query in the PreparedStatement and return the ResultSet
+ * generated by the query.
+ *
+ * @return the ResultSet generated by the query - never null.
+ * @throws SQLException
+ * if a database error happens or if the SQL statement does not
+ * produce a ResultSet.
+ */
+ public ResultSet executeQuery() throws SQLException;
+
+ /**
+ * Invoke the SQL command contained within the Prepared Statement. This
+ * must be INSERT, UPDATE, DELETE, or a command that returns nothing.
+ *
+ * @return the count of rows for INSERT, UPDATE or DELETE statements, 0 for
+ * statements that return nothing
+ * @throws SQLException
+ * if a database error happens or if the SQL statement returns a
+ * ResultSet.
+ */
+ public int executeUpdate() throws SQLException;
+
+ /**
+ * Returns a ResultSetMetaData containing data from the ResultSet that is
+ * produced when the PreparedStatement is invoked.
+ * <p>
+ * It is possible to know the Metadata for the ResultSet without executing
+ * the PreparedStatement, because the PreparedStatement is precompiled. As a
+ * result the Metadata can be queried ahead of time without actually
+ * executing the statement.
+ *
+ * @return a ResultSetMetaData object with the information about the columns
+ * of the ResultSet, if the driver can return a ResultSetMetaData.
+ * null otherwise.
+ * @throws SQLException
+ * if there is a database error
+ */
+ public ResultSetMetaData getMetaData() throws SQLException;
+
+ /**
+ * Gets information about the parameters of the PreparedStatement.
+ *
+ * @return a ParameterMetaData object which holds information about the
+ * number, type and properties of the parameters of this
+ * PreparedStatement.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public ParameterMetaData getParameterMetaData() throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to the supplied Array object.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theArray
+ * a java.sql.Array holing the data to set.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setArray(int parameterIndex, Array theArray)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to the content of a supplied
+ * InputStream, which has a specified number of bytes.
+ * <p>
+ * This is a good method for setting an SQL LONVARCHAR parameter where the
+ * length of the data is large. Data is read from the InputStream until
+ * end-of-file is reached or the specified number of bytes is copied.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theInputStream
+ * the ASCII InputStream carrying the data to update the
+ * parameter
+ * @param length
+ * the number of bytes in the InputStream to copy to the
+ * parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setAsciiStream(int parameterIndex, InputStream theInputStream,
+ int length) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied
+ * java.math.BigDecimal value.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theBigDecimal
+ * the java.math.BigInteger value to set
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setBigDecimal(int parameterIndex, BigDecimal theBigDecimal)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to the content of a supplied
+ * binary InputStream, which has a specified number of bytes.
+ * <p>
+ * Use this method when a large amount of data needs to be set into a
+ * LONGVARBINARY parameter.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theInputStream
+ * the binary InputStream carrying the data to update the
+ * parameter
+ * @param length
+ * the number of bytes in the InputStream to copy to the
+ * parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setBinaryStream(int parameterIndex, InputStream theInputStream,
+ int length) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to the given Blob object.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theBlob
+ * a java.sql.Blob holding the data to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setBlob(int parameterIndex, Blob theBlob) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied boolean value.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theBoolean
+ * the boolean value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setBoolean(int parameterIndex, boolean theBoolean)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied byte value.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theByte
+ * the byte value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setByte(int parameterIndex, byte theByte) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied array of bytes. The
+ * array is mapped to a VARBINARY or LONGVARBINARY in the database.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theBytes
+ * the array of bytes to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setBytes(int parameterIndex, byte[] theBytes)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to the character content of a
+ * Reader object, with the specified length of character data.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param reader
+ * the java.io.Reader encompassing the character data
+ * @param length
+ * the amount of characters to be read
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setCharacterStream(int parameterIndex, Reader reader, int length)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to the given Clob object.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theClob
+ * a java.sql.Clob holding the data to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setClob(int parameterIndex, Clob theClob) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied java.sql.Date
+ * value.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theDate
+ * a java.sql.Date to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setDate(int parameterIndex, Date theDate) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied java.sql.Date
+ * value, using a supplied Calendar to map the Date. The Calendar allows the
+ * application to control the timezone used to compute the SQL DATE in the
+ * database - without the supplied Calendar, the driver uses the default
+ * timezone of the Java virtual machine.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theDate
+ * a java.sql.Date to update the parameter
+ * @param cal
+ * a Calendar to use to construct the SQL DATE value
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setDate(int parameterIndex, Date theDate, Calendar cal)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied double value.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theDouble
+ * the double value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setDouble(int parameterIndex, double theDouble)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to to a supplied float value.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theFloat
+ * the float value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setFloat(int parameterIndex, float theFloat)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied int value.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theInt
+ * the int value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setInt(int parameterIndex, int theInt) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied long value.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theLong
+ * the long value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setLong(int parameterIndex, long theLong) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to SQL NULL. Don't use this
+ * version of setNull for User Defined Types or for REF type parameters.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param sqlType
+ * the SQL Type of the parameter, as defined in java.sql.Types
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setNull(int parameterIndex, int sqlType) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to SQL NULL. This version of
+ * setNull should be used for User Defined Types (UDTs) and also REF types.
+ * UDTs can be STRUCT, DISTINCT, JAVA_OBJECT and named array types.
+ * <p>
+ * Applications must provide the SQL Type code and also a fully qualified
+ * SQL Type name when supplying a NULL UDT or REF. For a UDT, the type name
+ * is the type name of the parameter itself, but for a REF parameter the
+ * type name is the type name of the referenced type.
+ *
+ * @param paramIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param sqlType
+ * the SQL Type of the parameter, as defined in java.sql.Types
+ * @param typeName
+ * the fully qualified name of a UDT or REF type - ignored if the
+ * parameter is not a UDT.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setNull(int paramIndex, int sqlType, String typeName)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter using a supplied object.
+ * <p>
+ * There is a standard mapping from Java types to SQL types, defined in the
+ * JDBC specification. The passed object is then transformed into the
+ * appropriate SQL type, and then transferred to the database. setObject can
+ * be used to pass abstract data types unique to the database, by using a
+ * JDBC driver specific Java type. If the object's class implements the
+ * interface SQLData, the JDBC driver calls <code>SQLData.writeSQL</code>
+ * to write it to the SQL data stream. If the object's class implements Ref,
+ * Blob, Clob, Struct, or Array, the driver passes it to the database as a
+ * value of the corresponding SQL type.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theObject
+ * the Object containing the value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setObject(int parameterIndex, Object theObject)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter using a supplied object.
+ * <p>
+ * The Object is converted to the given targetSqlType before it is sent to
+ * the database. If the object has a custom mapping (its class implements
+ * the interface SQLData), the JDBC driver will call the method
+ * SQLData.writeSQL to write it to the SQL data stream. If the object's
+ * class implements Ref, Blob, Clob, Struct, or Array, the driver will pass
+ * it to the database in the form of the relevant SQL type.
+ *
+ * @param parameterIndex
+ * the parameter index, where the first parameter has index 1
+ * @param theObject
+ * the Object containing the value to update the parameter
+ * @param targetSqlType
+ * the SQL Type to send to the database, as defined in
+ * java.sql.Types
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setObject(int parameterIndex, Object theObject,
+ int targetSqlType) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter using a supplied object.
+ * <p>
+ * The Object is converted to the given targetSqlType before it is sent to
+ * the database. If the object has a custom mapping (its class implements
+ * the interface SQLData), the JDBC driver will call the method
+ * SQLData.writeSQL to write it to the SQL data stream. If the object's
+ * class implements Ref, Blob, Clob, Struct, or Array, the driver will pass
+ * it to the database in the form of the relevant SQL type.
+ *
+ * @param parameterIndex
+ * the parameter index, where the first parameter has index 1
+ * @param theObject
+ * the Object containing the value to update the parameter
+ * @param targetSqlType
+ * the SQL Type to send to the database, as defined in
+ * java.sql.Types
+ * @param scale
+ * the number of digits after the decimal point - only applies to
+ * the types java.sql.Types.DECIMAL and java.sql.Types.NUMERIC -
+ * ignored for all other types.
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setObject(int parameterIndex, Object theObject,
+ int targetSqlType, int scale) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied REF(<structured-type>)
+ * value. This is stored as an SQL REF.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theRef
+ * a java.sql.Ref value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setRef(int parameterIndex, Ref theRef) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied short value.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theShort
+ * a short value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setShort(int parameterIndex, short theShort)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied String.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theString
+ * a String value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setString(int parameterIndex, String theString)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied java.sql.Time
+ * value.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theTime
+ * a java.sql.Time value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setTime(int parameterIndex, Time theTime) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied java.sql.Time
+ * value, using a supplied Calendar.
+ * <p>
+ * The driver uses the supplied Calendar to create the SQL TIME value, which
+ * allows it to use a custom timezone - otherwise the driver uses the
+ * default timezone of the Java virtual machine.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theTime
+ * a java.sql.Time value to update the parameter
+ * @param cal
+ * a Calendar to use to construct the SQL TIME value
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setTime(int parameterIndex, Time theTime, Calendar cal)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied java.sql.Timestamp
+ * value.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theTimestamp
+ * the java.sql.Timestamp value to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setTimestamp(int parameterIndex, Timestamp theTimestamp)
+ throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied java.sql.Timestamp
+ * value, using the supplied Calendar.
+ * <p>
+ * The driver uses the supplied Calendar to create the SQL TIMESTAMP value,
+ * which allows it to use a custom timezone - otherwise the driver uses the
+ * default timezone of the Java virtual machine.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theTimestamp
+ * the java.sql.Timestamp value to update the parameter
+ * @param cal
+ * a Calendar to use to construct the SQL TIMESTAMP value
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setTimestamp(int parameterIndex, Timestamp theTimestamp,
+ Calendar cal) throws SQLException;
+
+ /**
+ * @deprecated Sets the value of a specified parameter to the characters
+ * from a supplied InputStream, with a specified number of
+ * bytes.
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theInputStream
+ * the InputStream with the character data to update the
+ * parameter
+ * @param length
+ * the number of bytes to read from the InputStream
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setUnicodeStream(int parameterIndex,
+ InputStream theInputStream, int length) throws SQLException;
+
+ /**
+ * Sets the value of a specified parameter to a supplied java.net.URL.
+ *
+ * @param parameterIndex
+ * the parameter number index, where the first parameter has
+ * index 1
+ * @param theURL
+ * the URL to update the parameter
+ * @throws SQLException
+ * if a database error happens
+ */
+ public void setURL(int parameterIndex, URL theURL) throws SQLException;
+
+} // end interface PreparedStatement
+
Added: incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Ref.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Ref.java?rev=386087&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Ref.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/java/sql/Ref.java Wed Mar 15 06:55:38 2006
@@ -0,0 +1,80 @@
+/* Copyright 2004 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package java.sql;
+
+import java.util.Map;
+
+/**
+ * A manifestation of the SQL REF type - a reference to an SQL type contained in
+ * the database.
+ * <p>
+ * The SQL REF's are held in a table along with SQL structured types. Every REF
+ * has an individual identifier for each single instance. The SQL REF is used
+ * instead of the structured type it references.
+ * <p>
+ * A Ref object is stored into the database using the PreparedStatement.setRef
+ * method.
+ *
+ */
+public interface Ref {
+
+ /**
+ * Gets the fully-qualified SQL name of the SQL structured type that this
+ * Ref references.
+ *
+ * @return the fully qualified name of the SQL structured type
+ * @throws SQLException
+ * if there is a database error
+ */
+ public String getBaseTypeName() throws SQLException;
+
+ /**
+ * Gets the SQL structured type instance referenced by this Ref.
+ *
+ * @return a Java object whose type is defined by the mapping for the SQL
+ * structured type.
+ * @throws SQLException
+ * if there is a database error
+ */
+ public Object getObject() throws SQLException;
+
+ /**
+ * Returns the associated object and uses the relevant mapping to convert it
+ * to a Java type.
+ *
+ * @param map
+ * a java.util.Map which contains the mapping to use
+ * @return a Java object whose type is defined by the mapping for the SQL
+ * structured type.
+ * @throws SQLException
+ * if there is a database error
+ */
+ public Object getObject(Map map) throws SQLException;
+
+ /**
+ * Sets the value of the structured typethat this Ref references to a
+ * supplied Object.
+ *
+ * @param value
+ * the Object representing the new SQL structured type that this
+ * Ref will reference.
+ * @throws SQLException
+ * if there is a database error
+ */
+ public void setObject(Object value) throws SQLException;
+
+} // end interface Ref
+