1 29 30 package com.caucho.quercus.lib.db; 31 32 import com.caucho.util.Alarm; 33 34 import java.sql.DatabaseMetaData ; 35 import java.sql.ResultSet ; 36 import java.sql.SQLException ; 37 import java.util.HashMap ; 38 39 42 public class JdbcTableMetaData { 43 private final String _catalog; 44 private final String _schema; 45 private final String _name; 46 47 private final long _lastModified; 48 49 private final HashMap <String ,JdbcColumnMetaData> _columnMap 50 = new HashMap <String ,JdbcColumnMetaData>(); 51 52 public JdbcTableMetaData(String catalog, 53 String schema, 54 String name, 55 DatabaseMetaData md) 56 throws SQLException 57 { 58 _catalog = catalog; 59 _schema = schema; 60 _name = name; 61 _lastModified = Alarm.getCurrentTime(); 62 63 ResultSet rs = md.getColumns(_catalog, _schema, _name, null); 64 try { 65 while (rs.next()) { 66 String columnName = rs.getString(4); 68 69 JdbcColumnMetaData column = new JdbcColumnMetaData(this, rs); 70 71 _columnMap.put(columnName, column); 72 } 73 74 rs.close(); 75 76 rs = md.getPrimaryKeys(_catalog, _schema, _name); 77 while (rs.next()) { 78 String columnName = rs.getString(4); 80 81 JdbcColumnMetaData column = _columnMap.get(columnName); 82 83 column.setPrimaryKey(true); 84 } 85 rs.close(); 86 87 rs = md.getIndexInfo(_catalog, _schema, _name, false, true); 88 while (rs.next()) { 89 String columnName = rs.getString(9); 91 92 JdbcColumnMetaData column = _columnMap.get(columnName); 93 94 column.setIndex(true); 95 } 96 } finally { 97 rs.close(); 98 } 99 } 100 101 104 public String getName() 105 { 106 return _name; 107 } 108 109 112 public String getCatalog() 113 { 114 return _catalog; 115 } 116 117 120 public JdbcColumnMetaData getColumn(String name) 121 { 122 return _columnMap.get(name); 123 } 124 125 public boolean isValid() 126 { 127 return Alarm.getCurrentTime() - _lastModified < 1000L; 128 } 129 130 public String toString() 131 { 132 return "JdbcTableMetaData[" + getName() + "]"; 133 } 134 } 135 136 | Popular Tags |