diff -r fd16c54261b3 -r 90ce3da70b43 jdk/src/share/classes/javax/sql/rowset/serial/SerialStruct.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/share/classes/javax/sql/rowset/serial/SerialStruct.java Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,254 @@ +/* + * Copyright 2003-2004 Sun Microsystems, Inc. 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. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +package javax.sql.rowset.serial; + +import java.sql.*; +import javax.sql.*; +import java.io.*; +import java.math.*; +import java.util.Map; +import java.util.Vector; + +import javax.sql.rowset.*; + +/** + * A serialized mapping in the Java programming language of an SQL + * structured type. Each attribute that is not already serialized + * is mapped to a serialized form, and if an attribute is itself + * a structured type, each of its attributes that is not already + * serialized is mapped to a serialized form. + *
+ * In addition, the structured type is custom mapped to a class in the + * Java programming language if there is such a mapping, as are + * its attributes, if appropriate. + *
+ * The
+ * This method is called internally and is not used by an
+ * application programmer.
+ *
+ * @param map a SerialStruct
class provides a constructor for creating
+ * an instance from a Struct
object, a method for retrieving
+ * the SQL type name of the SQL structured type in the database, and methods
+ * for retrieving its attribute values.
+ */
+public class SerialStruct implements Struct, Serializable, Cloneable {
+
+
+ /**
+ * The SQL type name for the structured type that this
+ * SerialStruct
object represents. This is the name
+ * used in the SQL definition of the SQL structured type.
+ *
+ * @serial
+ */
+ private String SQLTypeName;
+
+ /**
+ * An array of Object
instances in which each
+ * element is an attribute of the SQL structured type that this
+ * SerialStruct
object represents. The attributes are
+ * ordered according to their order in the definition of the
+ * SQL structured type.
+ *
+ * @serial
+ */
+ private Object attribs[];
+
+ /**
+ * Constructs a SerialStruct
object from the given
+ * Struct
object, using the given java.util.Map
+ * object for custom mapping the SQL structured type or any of its
+ * attributes that are SQL structured types.
+ *
+ * @param map a java.util.Map
object in which
+ * each entry consists of 1) a String
object
+ * giving the fully qualified name of a UDT and 2) the
+ * Class
object for the SQLData
implementation
+ * that defines how the UDT is to be mapped
+ * @throws SerialException if an error occurs
+ * @see java.sql.Struct
+ */
+ public SerialStruct(Struct in, MapSerialStruct
object from the
+ * given SQLData
object, using the given type
+ * map to custom map it to a class in the Java programming
+ * language. The type map gives the SQL type and the class
+ * to which it is mapped. The SQLData
object
+ * defines the class to which the SQL type will be mapped.
+ *
+ * @param in an instance of the SQLData
class
+ * that defines the mapping of the SQL structured
+ * type to one or more objects in the Java programming language
+ * @param map a java.util.Map
object in which
+ * each entry consists of 1) a String
object
+ * giving the fully qualified name of a UDT and 2) the
+ * Class
object for the SQLData
implementation
+ * that defines how the UDT is to be mapped
+ * @throws SerialException if an error occurs
+ */
+ public SerialStruct(SQLData in, MapSerialStruct
+ * object. This is the name used in the SQL definition of the
+ * structured type
+ *
+ * @return a String
object representing the SQL
+ * type name for the SQL structured type that this
+ * SerialStruct
object represents
+ * @throws SerialException if an error occurs
+ */
+ public String getSQLTypeName() throws SerialException {
+ return SQLTypeName;
+ }
+
+ /**
+ * Retrieves an array of Object
values containing the
+ * attributes of the SQL structured type that this
+ * SerialStruct
object represents.
+ *
+ * @return an array of Object
values, with each
+ * element being an attribute of the SQL structured type
+ * that this SerialStruct
object represents
+ * @throws SerialException if an error occurs
+ */
+ public Object[] getAttributes() throws SerialException {
+ return attribs;
+ }
+
+ /**
+ * Retrieves the attributes for the SQL structured type that
+ * this SerialStruct
represents as an array of
+ * Object
values, using the given type map for
+ * custom mapping if appropriate.
+ *
+ * @param map a java.util.Map
object in which
+ * each entry consists of 1) a String
object
+ * giving the fully qualified name of a UDT and 2) the
+ * Class
object for the SQLData
implementation
+ * that defines how the UDT is to be mapped
+ * @return an array of Object
values, with each
+ * element being an attribute of the SQL structured
+ * type that this SerialStruct
object
+ * represents
+ * @throws SerialException if an error occurs
+ */
+ public Object[] getAttributes(MapStruct
, SQLData
,
+ * Ref
, Blob
, Clob
, and
+ * Array
.
+ * java.util.Map
object in which
+ * each entry consists of 1) a String
object
+ * giving the fully qualified name of a UDT and 2) the
+ * Class
object for the SQLData
implementation
+ * that defines how the UDT is to be mapped
+ * @throws SerialException if an error occurs
+ */
+ private void mapToSerial(Map map) throws SerialException {
+
+ try {
+
+ for (int i = 0; i < attribs.length; i++) {
+ if (attribs[i] instanceof Struct) {
+ attribs[i] = new SerialStruct((Struct)attribs[i], map);
+ } else if (attribs[i] instanceof SQLData) {
+ attribs[i] = new SerialStruct((SQLData)attribs[i], map);
+ } else if (attribs[i] instanceof Blob) {
+ attribs[i] = new SerialBlob((Blob)attribs[i]);
+ } else if (attribs[i] instanceof Clob) {
+ attribs[i] = new SerialClob((Clob)attribs[i]);
+ } else if (attribs[i] instanceof Ref) {
+ attribs[i] = new SerialRef((Ref)attribs[i]);
+ } else if (attribs[i] instanceof java.sql.Array) {
+ attribs[i] = new SerialArray((java.sql.Array)attribs[i], map);
+ }
+ }
+
+ } catch (SQLException e) {
+ throw new SerialException(e.getMessage());
+ }
+ return;
+ }
+
+ /**
+ * The identifier that assists in the serialization of this
+ * SerialStruct
object.
+ */
+ static final long serialVersionUID = -8322445504027483372L;
+}