1 package com.daffodilwoods.daffodildb.server.sessionsystem.sessioncondition; 2 3 import com.daffodilwoods.database.resource.DException; 4 import com.daffodilwoods.database.general.SystemFields; 5 import com.daffodilwoods.daffodildb.utils.field.FieldBase; 6 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator; 7 8 15 public class ReadCommittedInternal implements _SessionCondition { 16 17 Object [] condition; 18 private static int[] ISTS = {SystemFields.invalidSessionId ,SystemFields.transactionId ,SystemFields.sessionId }; 19 20 public ReadCommittedInternal(Object [] presentConditionValues)throws DException { 21 condition = new Object [4]; 22 FieldBase bytesForMaxIntegerValue = (FieldBase)SystemFields.maxIntegerValue; 23 condition[0] = bytesForMaxIntegerValue ; 24 condition[1] = bytesForMaxIntegerValue ; 25 condition[2] = (Object [])presentConditionValues[0] ; 26 condition[3] = presentConditionValues[1] ; 27 } 28 29 35 public boolean evaluate(_Iterator nonIndexedIterator) throws DException { 36 Object [] valuesToCompare = (Object [])nonIndexedIterator.getColumnValues(ISTS); return (StaticConditionHelper.compare(condition[3],valuesToCompare[0]) != 0) 38 && (StaticConditionHelper.compare(condition[0],valuesToCompare[1]) == 0) 39 && ((StaticConditionHelper.compare(condition[1],valuesToCompare[1]) != 0) 40 || (StaticConditionHelper.solveInConditon((Object [])condition[2],(FieldBase)valuesToCompare[2]))); 41 42 } 43 48 public void setParameterValues(Object [] values) throws DException { 49 condition[2] = (Object [])values[0]; 50 condition[3] = values[1] ; 51 } 52 53 54 public String toString(){ 55 try { 56 return "[ READ_COMMITTED_INTERNAL_CONDITION => (( " + SystemFields.systemFields[SystemFields.invalidTransactionId] + " = maxIntegerValue) and (transactionId <> maxIntegerValue or "+ 57 " sessionId in ("+((FieldBase)condition[2]).getObject() +")) and invalidSessionId != "+((FieldBase)condition[2]).getObject()+" ) ]"; 58 } 59 catch (DException ex) { 60 return null; 61 } 62 } 63 } 64 | Popular Tags |