KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > prefuse > data > io > sql > DefaultSQLDataHandler


1 package prefuse.data.io.sql;
2
3 import java.math.BigDecimal JavaDoc;
4 import java.sql.Array JavaDoc;
5 import java.sql.Blob JavaDoc;
6 import java.sql.Clob JavaDoc;
7 import java.sql.Date JavaDoc;
8 import java.sql.Ref JavaDoc;
9 import java.sql.ResultSet JavaDoc;
10 import java.sql.ResultSetMetaData JavaDoc;
11 import java.sql.SQLException JavaDoc;
12 import java.sql.Time JavaDoc;
13 import java.sql.Timestamp JavaDoc;
14 import java.sql.Types JavaDoc;
15
16 import prefuse.data.Table;
17
18 /**
19  * Default data value handler for mapping SQL data types to Java objects.
20  * Performs a straightforward mapping of common SQL data types to Java
21  * primitives or objects.
22  *
23  * @author <a HREF="http://jheer.org">jeffrey heer</a>
24  */

25 public class DefaultSQLDataHandler implements SQLDataHandler {
26
27     private boolean m_ignoreUnknownTypes;
28     
29     // ------------------------------------------------------------------------
30

31     /**
32      * Create a new DefaultSQLDataHandler.
33      */

34     public DefaultSQLDataHandler() {
35         this(true);
36     }
37     
38     /**
39      * Create a new DefaultSQLDataHandler.
40      * @param ignoreUnknownTypes instructs the data handler whether or not
41      * unknown or unrecognized SQL data types should simply be ignored
42      */

43     public DefaultSQLDataHandler(boolean ignoreUnknownTypes) {
44         m_ignoreUnknownTypes = ignoreUnknownTypes;
45     }
46     
47     // ------------------------------------------------------------------------
48

49     /**
50      * Set if unknown or unrecognized SQL data types should simply be ignored.
51      * @param ignore the ignore unknown types setting to use
52      */

53     public void setIgnoreUnknownTypes(boolean ignore) {
54         m_ignoreUnknownTypes = ignore;
55     }
56     
57     /**
58      * Indicates if unknown or unrecognized SQL data types should simply be
59      * ignored.
60      * @return the ignore unknown types setting
61      */

62     public boolean isIgnoreUnknownTypes() {
63         return m_ignoreUnknownTypes;
64     }
65
66     // ------------------------------------------------------------------------
67

68     /**
69      * @see prefuse.data.io.sql.SQLDataHandler#process(prefuse.data.Table, int, java.sql.ResultSet, int)
70      */

71     public void process(Table t, int trow, ResultSet JavaDoc rset, int rcol)
72         throws SQLException JavaDoc
73     {
74         ResultSetMetaData JavaDoc metadata = rset.getMetaData();
75         String JavaDoc field = metadata.getColumnName(rcol);
76         int type = metadata.getColumnType(rcol);
77         
78         switch ( type ) {
79         case Types.ARRAY:
80             t.set(trow, field, rset.getArray(rcol));
81             break;
82             
83         case Types.BIGINT:
84             t.setLong(trow, field, rset.getLong(rcol));
85             break;
86             
87         case Types.BINARY:
88         case Types.LONGVARBINARY:
89         case Types.VARBINARY:
90             t.set(trow, field, rset.getBytes(rcol));
91             break;
92             
93         case Types.BIT:
94         case Types.BOOLEAN:
95             t.setBoolean(trow, field, rset.getBoolean(rcol));
96             break;
97             
98         case Types.BLOB:
99             t.set(trow, field, rset.getBlob(rcol));
100             break;
101         
102         case Types.CHAR:
103         case Types.LONGVARCHAR:
104         case Types.VARCHAR:
105             t.setString(trow, field, rset.getString(rcol));
106             break;
107             
108         case Types.CLOB:
109             t.set(trow, field, rset.getClob(rcol));
110             break;
111         
112         case Types.DATE:
113             t.setDate(trow, field, rset.getDate(rcol));
114             break;
115         
116         case Types.DECIMAL:
117         case Types.DOUBLE:
118         case Types.FLOAT:
119         case Types.NUMERIC:
120             t.setDouble(trow, field, rset.getDouble(rcol));
121             break;
122             
123         case Types.INTEGER:
124         case Types.SMALLINT:
125         case Types.TINYINT:
126             t.setInt(trow, field, rset.getInt(rcol));
127             break;
128             
129         case Types.JAVA_OBJECT:
130             t.set(trow, field, rset.getObject(rcol));
131             break;
132                         
133         case Types.REAL:
134             t.setFloat(trow, field, rset.getFloat(rcol));
135             break;
136             
137         case Types.REF:
138             t.set(trow, field, rset.getRef(rcol));
139             break;
140                         
141         case Types.TIME:
142             t.setDate(trow, field, rset.getTime(rcol));
143             break;
144             
145         case Types.TIMESTAMP:
146             t.setDate(trow, field, rset.getTimestamp(rcol));
147             break;
148             
149         case Types.DATALINK:
150         case Types.DISTINCT:
151         case Types.NULL:
152         case Types.OTHER:
153         case Types.STRUCT:
154         default:
155             if ( !m_ignoreUnknownTypes ) {
156                 t.set(trow, field, rset.getObject(rcol));
157             }
158             break;
159         }
160     }
161
162     /**
163      * @see prefuse.data.io.sql.SQLDataHandler#getDataType(java.lang.String, int)
164      */

165     public Class JavaDoc getDataType(String JavaDoc columnName, int sqlType) {
166         switch ( sqlType ) {
167         case Types.ARRAY:
168             return Array JavaDoc.class;
169             
170         case Types.BIGINT:
171             return long.class;
172             
173         case Types.BINARY:
174         case Types.LONGVARBINARY:
175         case Types.VARBINARY:
176             return byte[].class;
177             
178         case Types.BIT:
179         case Types.BOOLEAN:
180             return boolean.class;
181             
182         case Types.BLOB:
183             return Blob JavaDoc.class;
184         
185         case Types.CHAR:
186         case Types.LONGVARCHAR:
187         case Types.VARCHAR:
188             return String JavaDoc.class;
189             
190         case Types.CLOB:
191             return Clob JavaDoc.class;
192         
193         case Types.DATE:
194             return Date JavaDoc.class;
195         
196         case Types.DECIMAL:
197         case Types.NUMERIC:
198             return BigDecimal JavaDoc.class;
199             
200         case Types.DOUBLE:
201         case Types.FLOAT:
202             return double.class;
203             
204         case Types.INTEGER:
205         case Types.SMALLINT:
206         case Types.TINYINT:
207             return int.class;
208             
209         case Types.JAVA_OBJECT:
210             return Object JavaDoc.class;
211                         
212         case Types.REAL:
213             return float.class;
214             
215         case Types.REF:
216             return Ref JavaDoc.class;
217                         
218         case Types.TIME:
219             return Time JavaDoc.class;
220             
221         case Types.TIMESTAMP:
222             return Timestamp JavaDoc.class;
223             
224         case Types.DATALINK:
225         case Types.DISTINCT:
226         case Types.NULL:
227         case Types.OTHER:
228         case Types.STRUCT:
229         default:
230             if ( !m_ignoreUnknownTypes ) {
231                 return Object JavaDoc.class;
232             } else {
233                 return null;
234             }
235         }
236     }
237
238 } // end of class DefaultSQLDataValueHandler
239
Popular Tags