1 package com.daffodilwoods.daffodildb.server.datasystem.indexsystem; 2 3 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._TableCharacteristics; 4 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.TableCharacteristics; 5 import com.daffodilwoods.database.resource.DException; 6 import com.daffodilwoods.daffodildb.utils.byteconverter.CbCzufIboemfs; 7 import com.daffodilwoods.daffodildb.server.sql99.common.ColumnDetails; 8 import com.daffodilwoods.daffodildb.server.sql99.common.Datatypes; 9 import com.daffodilwoods.daffodildb.server.datasystem.utility.ByteHandler; 10 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.ColumnInformation; 11 import com.daffodilwoods.daffodildb.server.sql99.utils._VariableValues; 12 13 public class IndexColumnInformation { 14 15 16 private boolean isVariable; 17 18 private boolean[] isFixedColumns; 19 20 private int recordSize; 21 22 private int [] sizeOfColumns; 23 24 private int[] typeOfColumns; 25 26 27 private int numberOfvariableColumns; 28 29 private String [] indexColumnNames; 30 31 private CbCzufIboemfs[] handlers ; 32 33 34 public IndexColumnInformation(ColumnDetails[] columnDetails, _VariableValues vv) throws DException{ 35 isVariable = false; 36 int len = columnDetails.length; 37 sizeOfColumns = new int[len]; 38 typeOfColumns = new int[len]; 39 isFixedColumns = new boolean[len]; 40 indexColumnNames = new String [len]; 41 handlers = new CbCzufIboemfs[len]; 42 for (int i = 0; i < len; i++) { 43 indexColumnNames[i] = columnDetails[i].getColumn(); 44 columnDetails[i].setByteComparisonObject(vv); 45 typeOfColumns[i] = columnDetails[i].getDatatypeForOrder(); 46 if (typeOfColumns[i] == Datatypes.NUMERIC || 47 typeOfColumns[i] == Datatypes.DECIMAL || 48 typeOfColumns[i] == Datatypes.DEC 49 || typeOfColumns[i] == Datatypes.BIGDECIMAL || 50 typeOfColumns[i] == Datatypes.VARCHAR 51 || typeOfColumns[i] == Datatypes.CHARACTERVARYING || 52 typeOfColumns[i] == Datatypes.CHARVARYING 53 || typeOfColumns[i] == Datatypes.BITVARYING || 54 typeOfColumns[i] == Datatypes.VARBINARY || 55 typeOfColumns[i] == Datatypes.NUMBER || 56 typeOfColumns[i] == Datatypes.CHAR || 57 typeOfColumns[i] == Datatypes.CHARACTER) { 58 isFixedColumns[i] = false; 59 isVariable = true; 60 } 61 else { 62 sizeOfColumns[i] = columnDetails[i].getSizeForOrder(); 63 isFixedColumns[i] = true; 64 } 65 handlers[i] = ByteHandler.getByteHandler(typeOfColumns[i], 66 typeOfColumns[i], null); 67 if (isFixedColumns[i]) 68 recordSize = recordSize + sizeOfColumns[i]; 69 else 70 numberOfvariableColumns++; 71 } 72 } 73 74 75 public IndexColumnInformation(_TableCharacteristics tc,Object [][] columnInformations0,boolean isVariable0) throws DException{ 76 int len = columnInformations0.length; 77 sizeOfColumns = new int[len]; 78 typeOfColumns = new int[len]; 79 isFixedColumns = new boolean[len]; 80 indexColumnNames = new String [len]; 81 handlers = new CbCzufIboemfs[len]; 82 for( int i = 0,index ; i < len ; i++ ){ 83 Object [] columns = (Object [])columnInformations0[i]; 84 indexColumnNames[i] = (String )columns[0]; 85 index = columns[2].hashCode(); 86 sizeOfColumns[i] = ((TableCharacteristics)tc).getColumnSize(index); 87 typeOfColumns[i] = ((TableCharacteristics)tc).getColumnType(index); 88 isFixedColumns[i] = ((TableCharacteristics)tc).isFixedColumn(index); 89 handlers[i] = ((TableCharacteristics)tc).getHandler(index); 90 if(isFixedColumns[i]) 91 recordSize = recordSize + sizeOfColumns[i]; 92 else 93 numberOfvariableColumns++; 94 } 95 isVariable = isVariable0; 96 } 97 98 public boolean[] getFixedColumns() { 99 return isFixedColumns; 100 } 101 102 public int[] getSizeOfColumns() { 103 return sizeOfColumns; 104 } 105 106 public int numberOfVariableColumns() { 107 return numberOfvariableColumns; 108 } 109 110 public int getRecordSize() { 111 return recordSize; 112 } 113 114 public boolean isVariableColumn() throws DException { 115 return isVariable; 116 } 117 118 public CbCzufIboemfs[] getHandlers() throws DException { 119 return handlers; 120 } 121 122 public int[] getTypeOfColumns() { 123 return typeOfColumns; 124 } 125 public String [] getIndexColumnNames() { 126 return indexColumnNames; 127 } 128 } 129 | Popular Tags |