1 package com.daffodilwoods.daffodildb.server.sessionsystem.sessionversioninfo; 2 3 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator; 4 import com.daffodilwoods.database.resource.DException; 5 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._IndexIterator; 6 import com.daffodilwoods.daffodildb.utils.comparator.SuperComparator; 7 import com.daffodilwoods.database.utility.P; 8 import com.daffodilwoods.database.general.SystemFields; 9 import com.daffodilwoods.daffodildb.server.datadictionarysystem. 10 IndexInformation; 11 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem._IndexInformation; 12 13 public class SessionVersionHandlerUpto3_1 extends SessionVersionHandler { 14 public SessionVersionHandlerUpto3_1() { 15 } 16 17 public boolean recordFound(_Iterator iterator, Object [] key) throws 18 DException { 19 return iterator.seek(key); 20 } 21 22 public boolean recordFound(_Iterator iterator, Object actualKey, Object [] key) throws 23 DException { 24 return iterator.seek(actualKey); 25 26 } 27 28 public boolean recordFound(_IndexIterator iterator, 29 _IndexIterator keyIterator, Object actualKey, 30 SuperComparator comparator) throws DException { 31 return iterator.seek(actualKey); 32 } 33 34 public Object getDefaultKey(Object kee) throws DException { 35 try { 36 Object [] key = (Object []) kee; 37 if (key.length > 3) { 38 Object [] keyToReturn = new Object [3]; 39 for (int i = key.length - 1, j = 2; j >= 0; i--, j--) { 40 keyToReturn[j] = key[i]; 41 } 42 return keyToReturn; 43 } 44 if (key.length == 3) { 45 return key; 46 } 47 } catch (Exception ex) { 48 throw new DException("DSE0", new Object [] {ex.getMessage()}); 49 } 50 throw new DException("DSE2047" + P.print(kee), null); 51 } 52 53 public void update(_IndexInformation iinf) throws DException { 54 if (!iinf.isUpdated()) { 55 int size = iinf.getColumns().length; 56 int len = size + 3; 57 String [] names = new String [len]; 58 int[] indexes = new int[len]; 59 boolean[] types = new boolean[len]; 60 System.arraycopy(iinf.getColumns(), 0, names, 0, size); 61 System.arraycopy(iinf.getColumnIndexes(), 0, indexes, 0, size); 62 System.arraycopy(iinf.getOrderOfColumns(), 0, types, 0, size); 63 names[size] = SystemFields.systemFields[SystemFields.rowId]; 64 indexes[size] = SystemFields.rowId; 65 types[size] = true; 66 names[size + 1] = SystemFields.systemFields[SystemFields.transactionId]; ; 67 indexes[size + 1] = SystemFields.transactionId; 68 types[size + 1] = true; 69 names[size + 2] = SystemFields.systemFields[SystemFields.sessionId]; 70 indexes[size + 2] = SystemFields.sessionId; 71 types[size + 2] = true; 72 iinf.setColumnNames(names); 73 iinf.setColumnIndexes(indexes); 74 iinf.setOrderOfColumns(types); 75 iinf.setIsUpdatedFlag(true); 76 } 77 } 78 79 public boolean hasOnlyRowidAsColumnIndex() { 80 return false; 81 } 82 83 public boolean seek(_Iterator iterator, Object key) throws DException { 84 return iterator.seek(new Object [] {key}); 85 } 86 } 87 | Popular Tags |