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 java.lang.reflect.Array ; 7 import com.daffodilwoods.database.general.*; 8 9 public class TransactionSessionCondition implements _SessionCondition { 10 11 Object [] condition; 12 private static int[] TITISS = {SystemFields.transactionId ,SystemFields.invalidTransactionId ,SystemFields.invalidSessionId ,SystemFields.sessionId }; 13 public TransactionSessionCondition(Object [] presentConditionValues ) throws DException{ 14 condition = new Object [6]; 15 Object transactionId = presentConditionValues[0]; 16 Object sessionIds = presentConditionValues[1]; 17 condition[0] = transactionId; 18 condition[1] = transactionId ; 19 condition[2] = sessionIds; 20 condition[3] = transactionId ; 21 condition[4] = sessionIds; 22 condition[5] = sessionIds; 23 } 24 25 26 27 28 public boolean evaluate(_Iterator nonIndexedIterator) throws DException { 29 Object [] valuesToCompare = (Object [])nonIndexedIterator.getColumnValues( TITISS); 31 return ( StaticConditionHelper.compare((FieldBase)condition[0],valuesToCompare[0] ) >= 0 ) && 32 (StaticConditionHelper.compare((FieldBase)condition[1], valuesToCompare[1] ) < 0 ) && 33 ( ! StaticConditionHelper.solveInConditon((Object [])condition[2] , (FieldBase)valuesToCompare[2])) ? true 34 : ( (StaticConditionHelper.compare(condition[3] , valuesToCompare[0]) < 0) && 35 ( StaticConditionHelper.solveInConditon((Object [])condition[4], (FieldBase)valuesToCompare[3]) ) && 36 ( ! StaticConditionHelper.solveInConditon((Object [])condition[5] ,(FieldBase) valuesToCompare[2]) ) ); 37 38 } 39 40 public void setParameterValues(Object [] values) throws DException{ 41 Object transactionId = values[0]; 42 Object sessionIds = (Object [])values[1]; 43 condition[0] = transactionId; 44 condition[1] = transactionId ; 45 condition[2] = sessionIds; 46 condition[3] = transactionId ; 47 condition[4] = sessionIds; 48 condition[5] = sessionIds; 49 } 50 51 public String toString(){ 52 return "[ TRANSACTION_SESSION_CONDITION => ((transactionId <= "+condition[0]+" and InvalidTransactionId > "+condition[1]+" and "+ 53 " invalidSessionId not in ("+print(condition[2])+") ) or (transactionId > "+condition[3]+" and "+ 54 " sessionId in ("+print(condition[4])+") and invalidSessionId not in ("+print(condition[5])+") )) ]" ; 55 } 56 57 private String print(Object array){ 58 if(array == null ) 59 return "[null]"; 60 int length = Array.getLength (array); 61 String line = ""; 62 for(int i = 0 ; i < length;i++){ 63 Object obj = Array.get(array,i); 64 line += "["+ (check(obj) ? print(obj) : (""+obj)) +"]"; 65 } 66 return line; 67 } 68 69 private static boolean check(Object array) { 70 if(array == null) 71 return false; 72 try{ 73 Array.getLength (array); 74 return true; 75 }catch(IllegalArgumentException ia){return false;} 76 } 77 78 79 } 80 81 | Popular Tags |