KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sessionsystem > sessioncondition > TransactionSessionCondition


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 JavaDoc;
7 import com.daffodilwoods.database.general.*;
8
9 public class TransactionSessionCondition implements _SessionCondition {
10
11     Object JavaDoc[] condition;
12 private static int[] TITISS = {SystemFields.transactionId ,SystemFields.invalidTransactionId ,SystemFields.invalidSessionId ,SystemFields.sessionId };
13     public TransactionSessionCondition(Object JavaDoc[] presentConditionValues ) throws DException{
14         condition = new Object JavaDoc[6];
15         Object JavaDoc transactionId = presentConditionValues[0];
16         Object JavaDoc 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 JavaDoc[] valuesToCompare = (Object JavaDoc[])nonIndexedIterator.getColumnValues( TITISS);//new int[]{SystemFields.transactionId ,SystemFields.invalidTransactionId ,SystemFields.invalidSessionId ,SystemFields.sessionId } ) ;
30

31       return ( StaticConditionHelper.compare((FieldBase)condition[0],valuesToCompare[0] ) >= 0 ) &&
32                    (StaticConditionHelper.compare((FieldBase)condition[1], valuesToCompare[1] ) < 0 ) &&
33                    ( ! StaticConditionHelper.solveInConditon((Object JavaDoc[])condition[2] , (FieldBase)valuesToCompare[2])) ? true
34                    : ( (StaticConditionHelper.compare(condition[3] , valuesToCompare[0]) < 0) &&
35                      ( StaticConditionHelper.solveInConditon((Object JavaDoc[])condition[4], (FieldBase)valuesToCompare[3]) ) &&
36                      ( ! StaticConditionHelper.solveInConditon((Object JavaDoc[])condition[5] ,(FieldBase) valuesToCompare[2]) ) );
37
38     }
39
40     public void setParameterValues(Object JavaDoc[] values) throws DException{
41         Object JavaDoc transactionId = values[0];
42         Object JavaDoc sessionIds = (Object JavaDoc[])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 JavaDoc 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 JavaDoc print(Object JavaDoc array){
58       if(array == null )
59          return "[null]";
60       int length = Array.getLength (array);
61       String JavaDoc line = "";
62       for(int i = 0 ; i < length;i++){
63         Object JavaDoc obj = Array.get(array,i);
64         line += "["+ (check(obj) ? print(obj) : (""+obj)) +"]";
65       }
66       return line;
67     }
68
69     private static boolean check(Object JavaDoc array) {
70         if(array == null)
71           return false;
72         try{
73            Array.getLength (array);
74            return true;
75         }catch(IllegalArgumentException JavaDoc ia){return false;}
76     }
77
78
79 }
80
81
Popular Tags