Add SDK 29 sources.

Test: N/A
Change-Id: Iedb7a31029e003928eb16f7e69ed147e72bb6235
diff --git a/java/sql/ParameterMetaData.java b/java/sql/ParameterMetaData.java
new file mode 100644
index 0000000..84eafdc
--- /dev/null
+++ b/java/sql/ParameterMetaData.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package java.sql;
+
+/**
+ * An object that can be used to get information about the types
+ * and properties for each parameter marker in a
+ * <code>PreparedStatement</code> object. For some queries and driver
+ * implementations, the data that would be returned by a <code>ParameterMetaData</code>
+ * object may not be available until the <code>PreparedStatement</code> has
+ * been executed.
+ *<p>
+ *Some driver implementations may not be able to provide information about the
+ *types and properties for each parameter marker in a <code>CallableStatement</code>
+ *object.
+ *
+ * @since 1.4
+ */
+
+public interface ParameterMetaData extends Wrapper {
+
+    /**
+     * Retrieves the number of parameters in the <code>PreparedStatement</code>
+     * object for which this <code>ParameterMetaData</code> object contains
+     * information.
+     *
+     * @return the number of parameters
+     * @exception SQLException if a database access error occurs
+     * @since 1.4
+     */
+    int getParameterCount() throws SQLException;
+
+    /**
+     * Retrieves whether null values are allowed in the designated parameter.
+     *
+     * @param param the first parameter is 1, the second is 2, ...
+     * @return the nullability status of the given parameter; one of
+     *        <code>ParameterMetaData.parameterNoNulls</code>,
+     *        <code>ParameterMetaData.parameterNullable</code>, or
+     *        <code>ParameterMetaData.parameterNullableUnknown</code>
+     * @exception SQLException if a database access error occurs
+     * @since 1.4
+     */
+    int isNullable(int param) throws SQLException;
+
+    /**
+     * The constant indicating that a
+     * parameter will not allow <code>NULL</code> values.
+     */
+    int parameterNoNulls = 0;
+
+    /**
+     * The constant indicating that a
+     * parameter will allow <code>NULL</code> values.
+     */
+    int parameterNullable = 1;
+
+    /**
+     * The constant indicating that the
+     * nullability of a parameter is unknown.
+     */
+    int parameterNullableUnknown = 2;
+
+    /**
+     * Retrieves whether values for the designated parameter can be signed numbers.
+     *
+     * @param param the first parameter is 1, the second is 2, ...
+     * @return <code>true</code> if so; <code>false</code> otherwise
+     * @exception SQLException if a database access error occurs
+     * @since 1.4
+     */
+    boolean isSigned(int param) throws SQLException;
+
+    /**
+     * Retrieves the designated parameter's specified column size.
+     *
+     * <P>The returned value represents the maximum column size for the given parameter.
+     * For numeric data, this is the maximum precision.  For character data, this is the length in characters.
+     * For datetime datatypes, this is the length in characters of the String representation (assuming the
+     * maximum allowed precision of the fractional seconds component). For binary data, this is the length in bytes.  For the ROWID datatype,
+     * this is the length in bytes. 0 is returned for data types where the
+     * column size is not applicable.
+     *
+     * @param param the first parameter is 1, the second is 2, ...
+     * @return precision
+     * @exception SQLException if a database access error occurs
+     * @since 1.4
+     */
+    int getPrecision(int param) throws SQLException;
+
+    /**
+     * Retrieves the designated parameter's number of digits to right of the decimal point.
+     * 0 is returned for data types where the scale is not applicable.
+     *
+     * @param param the first parameter is 1, the second is 2, ...
+     * @return scale
+     * @exception SQLException if a database access error occurs
+     * @since 1.4
+     */
+    int getScale(int param) throws SQLException;
+
+    /**
+     * Retrieves the designated parameter's SQL type.
+     *
+     * @param param the first parameter is 1, the second is 2, ...
+     * @return SQL type from <code>java.sql.Types</code>
+     * @exception SQLException if a database access error occurs
+     * @since 1.4
+     * @see Types
+     */
+    int getParameterType(int param) throws SQLException;
+
+    /**
+     * Retrieves the designated parameter's database-specific type name.
+     *
+     * @param param the first parameter is 1, the second is 2, ...
+     * @return type the name used by the database. If the parameter type is
+     * a user-defined type, then a fully-qualified type name is returned.
+     * @exception SQLException if a database access error occurs
+     * @since 1.4
+     */
+    String getParameterTypeName(int param) throws SQLException;
+
+
+    /**
+     * Retrieves the fully-qualified name of the Java class whose instances
+     * should be passed to the method <code>PreparedStatement.setObject</code>.
+     *
+     * @param param the first parameter is 1, the second is 2, ...
+     * @return the fully-qualified name of the class in the Java programming
+     *         language that would be used by the method
+     *         <code>PreparedStatement.setObject</code> to set the value
+     *         in the specified parameter. This is the class name used
+     *         for custom mapping.
+     * @exception SQLException if a database access error occurs
+     * @since 1.4
+     */
+    String getParameterClassName(int param) throws SQLException;
+
+    /**
+     * The constant indicating that the mode of the parameter is unknown.
+     */
+    int parameterModeUnknown = 0;
+
+    /**
+     * The constant indicating that the parameter's mode is IN.
+     */
+    int parameterModeIn = 1;
+
+    /**
+     * The constant indicating that the parameter's mode is INOUT.
+     */
+    int parameterModeInOut = 2;
+
+    /**
+     * The constant indicating that the parameter's mode is  OUT.
+     */
+    int parameterModeOut = 4;
+
+    /**
+     * Retrieves the designated parameter's mode.
+     *
+     * @param param the first parameter is 1, the second is 2, ...
+     * @return mode of the parameter; one of
+     *        <code>ParameterMetaData.parameterModeIn</code>,
+     *        <code>ParameterMetaData.parameterModeOut</code>, or
+     *        <code>ParameterMetaData.parameterModeInOut</code>
+     *        <code>ParameterMetaData.parameterModeUnknown</code>.
+     * @exception SQLException if a database access error occurs
+     * @since 1.4
+     */
+    int getParameterMode(int param) throws SQLException;
+}