1 package com.daffodilwoods.daffodildb.server.sessionsystem.sessioncondition; 2 3 import com.daffodilwoods.database.resource.DException; 4 import com.daffodilwoods.daffodildb.utils.field.FieldBase; 5 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator; 6 import com.daffodilwoods.database.general.SystemFields; 7 8 16 public class ReadCommittedForLockModified implements _SessionCondition { 17 18 Object [] condition; 19 private static int[] SISIT = {SystemFields.sessionId ,SystemFields.invalidSessionId ,SystemFields.invalidTransactionId } ; 20 public ReadCommittedForLockModified(Object [] presentConditionValues) throws DException{ 21 condition = new Object [3]; 22 FieldBase bytesForMaxIntegerValue = (FieldBase)SystemFields.maxIntegerValue; 23 Object sessionIds = presentConditionValues; 24 condition[0] = sessionIds; 25 condition[1] = sessionIds; 26 condition[2] = bytesForMaxIntegerValue; 27 } 28 29 30 36 45 46 public boolean evaluate(_Iterator nonIndexedIterator ) throws DException { 47 Object [] valuesToCompare = (Object [])nonIndexedIterator.getColumnValues( SISIT); return (!((StaticConditionHelper.solveInConditon((Object [])condition[0],(FieldBase)valuesToCompare[0]) && (StaticConditionHelper.compare(condition[2],valuesToCompare[1]) == 0)) || 49 StaticConditionHelper.solveInConditon((Object [])condition[1],(FieldBase)valuesToCompare[1]) )) && 50 (StaticConditionHelper.compare(condition[2],valuesToCompare[2]) == 0 ); 51 52 } 53 54 55 60 public void setParameterValues(Object [] values) throws DException { 61 Object sessionIds = (Object [])values[0]; 62 condition[0] = sessionIds; 63 condition[1] = sessionIds; 64 } 65 66 public String toString(){ 67 return "[ READ_COMMITTED_FOR_LOCK_CONDITION => ( not ( (sessionId in ("+condition[0]+") or invalidSessionId in ("+condition[1]+") ))) ]"; 68 } 69 70 } 71 | Popular Tags |