KickJava   Java API By Example, From Geeks To Geeks.

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


1 package prefuse.data.io.sql;
2
3 import java.sql.ResultSet JavaDoc;
4 import java.sql.ResultSetMetaData JavaDoc;
5 import java.sql.SQLException JavaDoc;
6 import java.util.HashMap JavaDoc;
7
8 import prefuse.data.Table;
9
10 /**
11  * SQLDataHandler that allows multiple handlers to be grouped together. This
12  * class supports a map that allows specific data field / column names to
13  * use a custom SQLDataHandler implementation, while maintaining a default
14  * handler for any data fields without an entry in the map.
15  *
16  * @author <a HREF="http://jheer.org">jeffrey heer</a>
17  */

18 public class CompositeSQLDataHandler implements SQLDataHandler {
19
20     private SQLDataHandler m_default;
21     private HashMap JavaDoc m_overrides;
22     
23     // ------------------------------------------------------------------------
24

25     /**
26      * Create a new CompositeSQLDataHandler. Uses a
27      * {@link DefaultSQLDataHandler} as the default handler.
28      */

29     public CompositeSQLDataHandler() {
30         this(new DefaultSQLDataHandler());
31     }
32     
33     /**
34      * Create a new CompositeSQLDataHandler.
35      * @param defaultHandler the default data handler to use
36      */

37     public CompositeSQLDataHandler(SQLDataHandler defaultHandler) {
38         m_default = defaultHandler;
39     }
40     
41     // ------------------------------------------------------------------------
42

43     /**
44      * Add a custom data handler for a given column name.
45      * @param columnName the data field / column name
46      * @param handler the data handler to use for the field
47      */

48     public void addHandler(String JavaDoc columnName, SQLDataHandler handler) {
49         if ( m_overrides == null )
50             m_overrides = new HashMap JavaDoc(3);
51         m_overrides.put(columnName, handler);
52     }
53     
54     /**
55      * Remove a custom data handler for a given column name. Subsequent
56      * to this method, the column will use the default handler.
57      * @param columnName the data field / column name
58      * @return true if a handler was successfully removed, false if
59      * no such custom handler was found.
60      */

61     public boolean removeHandler(String JavaDoc columnName) {
62         if ( m_overrides == null )
63             return false;
64         else
65             return m_overrides.remove(columnName) != null;
66     }
67     
68     // ------------------------------------------------------------------------
69

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

73     public void process(Table t, int trow, ResultSet JavaDoc rset, int rcol)
74             throws SQLException JavaDoc
75     {
76         SQLDataHandler handler = m_default;
77         if ( m_overrides != null && m_overrides.size() > 0 ) {
78             ResultSetMetaData JavaDoc metadata = rset.getMetaData();
79             String JavaDoc name = metadata.getColumnName(rcol);
80             SQLDataHandler h =
81                 (SQLDataHandler)m_overrides.get(name);
82             if ( h != null )
83                 handler = h;
84         }
85
86         handler.process(t, trow, rset, rcol);
87     }
88
89     /**
90      * @see prefuse.data.io.sql.SQLDataHandler#getDataType(java.lang.String, int)
91      */

92     public Class JavaDoc getDataType(String JavaDoc columnName, int sqlType) {
93         SQLDataHandler handler = m_default;
94         if ( m_overrides != null && m_overrides.size() > 0 ) {
95             SQLDataHandler h = (SQLDataHandler)m_overrides.get(columnName);
96             if ( h != null ) handler = h;
97         }
98
99         return handler.getDataType(columnName, sqlType);
100     }
101
102 } // end of class CompositeSQLDataValueHandler
103
Popular Tags