1 package com.daffodilwoods.daffodildb.server.datasystem.indexsystem; 2 3 import com.daffodilwoods.daffodildb.server.sql99.utils._Reference; 4 import com.daffodilwoods.daffodildb.server.sql99.utils._VariableValues; 5 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.*; 6 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._TableCharacteristics; 7 import com.daffodilwoods.database.resource.DException; 8 import com.daffodilwoods.database.utility.*; 9 import java.util.*; 10 import com.daffodilwoods.daffodildb.utils.BufferRange; 11 12 15 16 public class BTreeCharacteristics implements _BTreeCharacteristics,DatabaseConstants{ 17 18 private String [] columnNames; 19 private int[][] mapping; 20 private _TableCharacteristics tableCharacteristics; 21 22 23 public BTreeCharacteristics(int[][] mapping0,_TableCharacteristics tc) throws DException{ 24 columnNames = tc.getColumnNames(); 25 mapping = mapping0; 26 tableCharacteristics = tc; 27 } 28 29 public Object getColumnValues(_Reference[] references, Object value ) throws DException { 30 Object [] values = (Object [])value; 31 Object [] vals = new Object [references.length]; 32 for(int i = 0,index ; i < references.length ; i++){ 33 index = getIndexFromReference(references[i]); 34 vals[i] = tableCharacteristics.getObject(index,(BufferRange)values[mapping[index][1]]) ; 35 } 36 return vals; 37 } 38 39 public Object getColumnValues(_Reference reference, Object value) throws DException { 40 Object [] values = (Object [])value; 41 int index = getIndexFromReference(reference); 42 Object val = null; 43 return val = tableCharacteristics.getObject(index, (BufferRange) values[mapping[index][1]]); 44 } 45 46 private int getIndexFromReference(_Reference reference)throws DException{ 47 int index = -1; 48 try{ 49 return reference.getIndex(); 50 } 51 catch(DException de) { 52 if(!de.getDseCode().equalsIgnoreCase("DSE565")) 53 throw de; 54 String name = reference.getColumn(); 55 int k = 0; 56 int length = columnNames.length; 57 for( ; k < length && !name.equalsIgnoreCase(columnNames[k]) ; k++ ); 58 if(k != length) 59 reference.setIndex(index = k); 60 else 61 throw COLUMN_NOTFOUND_EXCEPTION; 62 } 63 return index; 64 } 65 } 66 | Popular Tags |