1 package com.daffodilwoods.daffodildb.server.sessionsystem.sessioncondition; 2 3 import com.daffodilwoods.daffodildb.server.sessionsystem.sessioncondition._SessionCondition; 4 import com.daffodilwoods.database.resource.DException; 5 import com.daffodilwoods.database.general.SystemFields; 6 import com.daffodilwoods.daffodildb.utils.field.FieldBase; 7 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator; 8 import com.daffodilwoods.daffodildb.server.sessionsystem.SystemFieldsCharacteristics; 9 10 19 public class TransactionSerializableCondition implements _SessionCondition { 20 21 Object [] condition; 22 23 private static int[] ITISTS = new int[]{ SystemFields.invalidTransactionId ,SystemFields.invalidSessionId,SystemFields.transactionId ,SystemFields.sessionId } ; 24 25 public TransactionSerializableCondition(Object presentConditionValues)throws DException { 26 condition = new Object [5]; 27 FieldBase bytesForMaxIntegerValue = (FieldBase)SystemFields.maxIntegerValue; 28 condition[0] = bytesForMaxIntegerValue; 29 condition[1] = presentConditionValues ; condition[2] = bytesForMaxIntegerValue; 31 condition[3] = bytesForMaxIntegerValue; 32 condition[4] = bytesForMaxIntegerValue; 33 } 34 35 41 42 public boolean evaluate(_Iterator nonIndexedIterator) throws DException { 43 Object [] valuesToCompare = (Object [])nonIndexedIterator.getColumnValues( ITISTS); return (StaticConditionHelper.compare(condition[4],valuesToCompare[0]) == 0) 45 && (StaticConditionHelper.compare(condition[3],valuesToCompare[1]) == 0) 46 && ((StaticConditionHelper.compare(condition[0],valuesToCompare[2]) != 0) 47 || ((StaticConditionHelper.compare(condition[2],valuesToCompare[2]) == 0) 48 && (StaticConditionHelper.compare(condition[1],valuesToCompare[3]) == 0 ))); 49 50 } 51 52 53 58 public void setParameterValues(Object [] values) throws DException{ 59 condition[1] = values[0] ; 60 } 61 62 public String toString(){ 63 try { 64 return "[ TRANSACTION_SERIALIZABLE_CONDITION => ( transactionId <> maxIntegerValue or ( sessionId = "+((FieldBase)condition[1]).getObject()+" and "+ 65 " transactionId = maxIntegerValue ) ) and invalidSessionId = maxIntegerValue and "+ 66 " invalidTransactionId = maxIntegerValue ]" ; 67 } 68 catch (DException ex) { 69 return null; 70 } 71 } 72 } 73 74 | Popular Tags |