1 package prefuse.data.io.sql; 2 3 import java.sql.ResultSet ; 4 import java.sql.ResultSetMetaData ; 5 import java.sql.SQLException ; 6 import java.util.HashMap ; 7 8 import prefuse.data.Table; 9 10 18 public class CompositeSQLDataHandler implements SQLDataHandler { 19 20 private SQLDataHandler m_default; 21 private HashMap m_overrides; 22 23 25 29 public CompositeSQLDataHandler() { 30 this(new DefaultSQLDataHandler()); 31 } 32 33 37 public CompositeSQLDataHandler(SQLDataHandler defaultHandler) { 38 m_default = defaultHandler; 39 } 40 41 43 48 public void addHandler(String columnName, SQLDataHandler handler) { 49 if ( m_overrides == null ) 50 m_overrides = new HashMap (3); 51 m_overrides.put(columnName, handler); 52 } 53 54 61 public boolean removeHandler(String columnName) { 62 if ( m_overrides == null ) 63 return false; 64 else 65 return m_overrides.remove(columnName) != null; 66 } 67 68 70 73 public void process(Table t, int trow, ResultSet rset, int rcol) 74 throws SQLException 75 { 76 SQLDataHandler handler = m_default; 77 if ( m_overrides != null && m_overrides.size() > 0 ) { 78 ResultSetMetaData metadata = rset.getMetaData(); 79 String 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 92 public Class getDataType(String 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 } | Popular Tags |