|                                                                                                              1
 24
 25  package com.mckoi.database;
 26
 27  import com.mckoi.util.BigNumber;
 28  import com.mckoi.database.global.SQLTypes;
 29
 30
 39
 40  final class GTTableColumnsDataSource extends GTDataSource {
 41
 42
 45    private Transaction transaction;
 46
 47
 50    private DataTableDef[] visible_tables;
 51
 52
 55    private int row_count;
 56
 57
 60    public GTTableColumnsDataSource(Transaction transaction) {
 61      super(transaction.getSystem());
 62      this.transaction = transaction;
 63    }
 64
 65
 68    public GTTableColumnsDataSource init() {
 69          TableName[] list = transaction.getTableList();
 71      visible_tables = new DataTableDef[list.length];
 72      row_count = 0;
 73      for (int i = 0; i < list.length; ++i) {
 74        DataTableDef def = transaction.getDataTableDef(list[i]);
 75        row_count += def.columnCount();
 76        visible_tables[i] = def;
 77      }
 78      return this;
 79    }
 80
 81
 83    public DataTableDef getDataTableDef() {
 84      return DEF_DATA_TABLE_DEF;
 85    }
 86
 87    public int getRowCount() {
 88      return row_count;
 89    }
 90
 91    public TObject getCellContents(final int column, final int row) {
 92
 93      final int sz = visible_tables.length;
 94      int rs = 0;
 95      for (int n = 0; n < sz; ++n) {
 96        final DataTableDef def = visible_tables[n];
 97        final int b = rs;
 98        rs += def.columnCount();
 99        if (row >= b && row < rs) {
 100                 int seq_no = row - b;
 102         DataTableColumnDef col_def = def.columnAt(seq_no);
 103         switch (column) {
 104           case 0:              return columnValue(column, def.getSchema());
 106           case 1:              return columnValue(column, def.getName());
 108           case 2:              return columnValue(column, col_def.getName());
 110           case 3:              return columnValue(column,
 112                                BigNumber.fromLong(col_def.getSQLType()));
 113           case 4:              return columnValue(column, col_def.getSQLTypeString());
 115           case 5:              return columnValue(column, BigNumber.fromLong(col_def.getSize()));
 117           case 6:              return columnValue(column, BigNumber.fromLong(col_def.getScale()));
 119           case 7:              return columnValue(column, new Boolean
  (col_def.isNotNull())); 121           case 8:              return columnValue(column,
 123                                col_def.getDefaultExpressionString());
 124           case 9:              return columnValue(column, col_def.getIndexScheme());
 126           case 10:              return columnValue(column, BigNumber.fromLong(seq_no));
 128           default:
 129             throw new Error
  ("Column out of bounds."); 130         }
 131       }
 132
 133     }
 135     throw new Error
  ("Row out of bounds."); 136   }
 137
 138
 140   public void dispose() {
 141     super.dispose();
 142     visible_tables = null;
 143     transaction = null;
 144   }
 145
 146
 148
 151   static final DataTableDef DEF_DATA_TABLE_DEF;
 152
 153   static {
 154
 155     DataTableDef def = new DataTableDef();
 156     def.setTableName(
 157              new TableName(Database.SYSTEM_SCHEMA, "sUSRTableColumns"));
 158
 159         def.addColumn(stringColumn("schema"));
 161     def.addColumn(stringColumn("table"));
 162     def.addColumn(stringColumn("column"));
 163     def.addColumn(numericColumn("sql_type"));
 164     def.addColumn(stringColumn("type_desc"));
 165     def.addColumn(numericColumn("size"));
 166     def.addColumn(numericColumn("scale"));
 167     def.addColumn(booleanColumn("not_null"));
 168     def.addColumn(stringColumn("default"));
 169     def.addColumn(stringColumn("index_str"));
 170     def.addColumn(numericColumn("seq_no"));
 171
 172         def.setImmutable();
 174
 175     DEF_DATA_TABLE_DEF = def;
 176
 177   }
 178
 179 }
 180
                                                                                                                                                                                                             |                                                                       
 
 
 
 
 
                                                                                   Popular Tags                                                                                                                                                                                              |