1 package com.daffodilwoods.daffodildb.server.sql99.dql.listenerevents; 2 3 import com.daffodilwoods.database.general.*; 4 import java.util.*; 5 import com.daffodilwoods.database.resource.DException; 6 import com.daffodilwoods.daffodildb.server.sql99.common.*; 7 import com.daffodilwoods.database.utility.P; 8 9 19 20 public class ColumnMapping { 21 22 25 26 ColumnDetails columnDetails; 27 28 31 32 TableDetails td; 33 34 37 38 ArrayList values; 39 40 43 44 ArrayList columns; 45 int hasRecord = -1; 46 47 50 51 ArrayList hasRecordColumns; 52 53 56 57 ArrayList hasRecordValues ; 58 59 public ColumnMapping( ColumnDetails cd , Object value ) throws DException { 60 columnDetails = cd; 61 td = cd.getTable(); 62 values = new ArrayList(1); 63 columns = new ArrayList(1); 64 hasRecordColumns = new ArrayList(); 65 hasRecordValues = new ArrayList(); 66 columns.add( cd ); 67 values.add( value); 68 } 69 70 75 76 public TableDetails getTableDetails() throws DException { 77 return td; 78 } 79 80 87 88 public void addColumnsAndValues( ColumnDetails cd , Object value) throws DException { 89 columns.add( cd ); 90 values.add( value ); 91 } 92 93 98 99 public int getTableColumnIndex() throws DException{ 100 return columnDetails.getIndex(); 101 } 102 103 108 109 public Object getValue() throws DException { 110 return values.get(0); 111 } 112 113 119 120 public int getIndexOfColumn( String column ) { 121 int len = columns.size(); 122 for( int i=0; i<len; i++ ){ 123 if( column.equalsIgnoreCase( ((ColumnDetails)columns.get(i)).getColumn() ) ) 124 return i; 125 } 126 return -1; 127 } 128 129 136 137 public int[] getIndexes() throws DException { 138 if( columns == null ) 139 return null; 140 int len = columns.size(); 141 int[] toRet = new int[len]; 142 for( int i=0; i<len; i++ ){ 143 ColumnDetails cd = (ColumnDetails)columns.get(i) ; 144 toRet[i] = cd.getType() == cd.HAS_RECORD ? -1 : 145 cd.getTable().getColumnCharacteristics().getColumnIndex(cd.getColumn()); 146 } 147 return toRet; 148 } 149 150 155 156 public Object [] getValues() throws DException { 157 return values == null ? null : values.toArray(); 158 } 159 160 165 166 public void setValues(Object [] vals) throws DException { 167 if(values == null) 168 values = new ArrayList(); 169 for(int i = 0 ; i < vals.length ; i++) 170 values.set(i,vals[i]); 171 } 172 173 179 180 public Object getValueAtIndex( int index ) throws DException { 181 return values.get(index); 182 } 183 184 189 190 public ColumnDetails getOrignalColumnDetail() throws DException { 191 return columnDetails; 192 } 193 194 public void show() throws DException { 195 } 196 197 203 204 public void applyColumnHasRecordCHANGES() throws DException { 205 boolean toRet = false; 206 int len = columns.size(); 207 if( len > 1 ){ 208 for( int k=0; k<columns.size(); k++ ){ 209 ColumnDetails cd = (ColumnDetails)columns.get(k); 210 if( cd.getType() == ColumnDetails.HAS_RECORD ){ 211 if( values.get(k) == Boolean.FALSE ) 212 throw new DException("DSE1306",null); 213 hasRecordColumns.add(columns.remove(k)); 214 hasRecordValues.add(values.remove(k)); 215 k--; 216 } 217 } 218 } 219 else{ 220 if( columnDetails.getType() == ColumnDetails.HAS_RECORD ){ 221 hasRecord = Boolean.TRUE.equals(values.get(0)) ? 1 : 0; 222 hasRecordColumns.add( columns.remove(0) ); 223 hasRecordValues.add( values.remove(0) ); 224 } 225 } 226 } 227 228 232 233 public int isHasRecord_False() { 234 return hasRecord; 235 } 236 237 241 242 public ColumnDetails[] getHasRecordColumnDetails() { 243 return hasRecordColumns == null ? null : (ColumnDetails[]) hasRecordColumns.toArray( new ColumnDetails[0] ); 244 } 245 246 250 251 public Object [] getHasRecordColumnValues() { 252 return hasRecordValues == null ? null : hasRecordValues.toArray(); 253 } 254 255 261 262 public ColumnDetails getColumnDetailsAt( int index ) throws DException { 263 return (ColumnDetails)columns.get(index); 264 } 265 266 } 267 | Popular Tags |