001: /* Copyright (c) 2001-2005, The HSQL Development Group
002: * All rights reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * Redistributions of source code must retain the above copyright notice, this
008: * list of conditions and the following disclaimer.
009: *
010: * Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * Neither the name of the HSQL Development Group nor the names of its
015: * contributors may be used to endorse or promote products derived from this
016: * software without specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
021: * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
022: * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
023: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
025: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
026: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
027: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
028: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029: */
030:
031: package org.hsqldb.jdbc;
032:
033: import java.lang.reflect.Field;
034:
035: /**
036: * Provides a site for holding the ResultSetMetaData for individual ResultSet
037: * columns. <p>
038: *
039: * @author boucherb@users
040: * @version 1.7.2
041: * @since HSQLDB 1.7.2
042: */
043: public final class jdbcColumnMetaData {
044:
045: /** The column's table's catalog name. */
046: public String catalogName;
047:
048: /**
049: * The fully-qualified name of the Java class whose instances are
050: * manufactured if the method ResultSet.getObject is called to retrieve
051: * a value from the column.
052: */
053: public String columnClassName;
054:
055: /** The column's normal max width in chars. */
056: public int columnDisplaySize;
057:
058: /** The suggested column title for use in printouts and displays. */
059: public String columnLabel;
060:
061: /** The column's name. */
062: public String columnName;
063:
064: /** The column's SQL type. */
065: public int columnType;
066:
067: /** The column's database-specific type name. */
068: public String columnTypeName;
069:
070: /** The column's value's number of decimal digits. */
071: public int precision;
072:
073: /** The column's value's number of digits to right of the decimal point. */
074: public int scale;
075:
076: /** The column's table's schema. */
077: public String schemaName;
078:
079: /** The column's table's name. */
080: public String tableName;
081:
082: /** Whether the value of the column are automatically numbered. */
083: public boolean isAutoIncrement;
084:
085: /** Whether the column's value's case matters. */
086: public boolean isCaseSensitive;
087:
088: /** Whether the values in the column are cash values. */
089: public boolean isCurrency;
090:
091: /** Whether a write on the column will definitely succeed. */
092: public boolean isDefinitelyWritable;
093:
094: /** The nullability of values in the column. */
095: public int isNullable;
096:
097: /** Whether the column's values are definitely not writable. */
098: public boolean isReadOnly;
099:
100: /** Whether the column's values can be used in a where clause. */
101: public boolean isSearchable;
102:
103: /** Whether values in the column are signed numbers. */
104: public boolean isSigned;
105:
106: /** Whether it is possible for a write on the column to succeed. */
107: public boolean isWritable;
108:
109: /**
110: * Retrieves a String representation of this object.
111: *
112: * @return a Sring representation of this object
113: */
114: public String toString() {
115:
116: try {
117: return toStringImpl();
118: } catch (Exception e) {
119: return super .toString() + "[" + e + "]";
120: }
121: }
122:
123: /**
124: * Provides the implementation of the toString() method.
125: *
126: * @return a Sring representation of this object
127: */
128: private String toStringImpl() throws Exception {
129:
130: StringBuffer sb;
131: Field[] fields;
132: Field field;
133:
134: sb = new StringBuffer();
135:
136: sb.append('[');
137:
138: fields = getClass().getFields();
139:
140: int len = fields.length;
141:
142: for (int i = 0; i < len; i++) {
143: field = fields[i];
144:
145: sb.append(field.getName());
146: sb.append('=');
147: sb.append(field.get(this ));
148:
149: if (i + 1 < len) {
150: sb.append(',');
151: sb.append(' ');
152: }
153: }
154:
155: sb.append(']');
156:
157: return sb.toString();
158: }
159: }
|