KickJava   Java API By Example, From Geeks To Geeks.

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


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 /**
9  *
10  * <p>Description: condition for getting records committed by other session and uncommitted
11  * records of current session </p>
12  * <p>Company: </p>
13  * @version 1.0
14  */

15 public class ReadCommittedInternal implements _SessionCondition {
16
17     Object JavaDoc[] condition;
18   private static int[] ISTS = {SystemFields.invalidSessionId ,SystemFields.transactionId ,SystemFields.sessionId };
19
20     public ReadCommittedInternal(Object JavaDoc[] presentConditionValues)throws DException {
21         condition = new Object JavaDoc[4];
22         FieldBase bytesForMaxIntegerValue = (FieldBase)SystemFields.maxIntegerValue;
23         condition[0] = bytesForMaxIntegerValue ;
24         condition[1] = bytesForMaxIntegerValue ;
25         condition[2] = (Object JavaDoc[])presentConditionValues[0] ;
26         condition[3] = presentConditionValues[1] ;
27     }
28
29 /**
30  * Evaluates the condition above.
31  * @param values
32  * @return
33  * @throws DException
34  */

35     public boolean evaluate(_Iterator nonIndexedIterator) throws DException {
36       Object JavaDoc[] valuesToCompare = (Object JavaDoc[])nonIndexedIterator.getColumnValues(ISTS); //new int[]{SystemFields.invalidSessionId ,SystemFields.transactionId ,SystemFields.sessionId } ) ;
37
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 JavaDoc[])condition[2],(FieldBase)valuesToCompare[2])));
41
42     }
43     /**
44      * refreshes the condition with new values.
45      * @param values
46      * @throws DException
47      */

48     public void setParameterValues(Object JavaDoc[] values) throws DException {
49         condition[2] = (Object JavaDoc[])values[0];
50         condition[3] = values[1] ;
51     }
52
53
54     public String JavaDoc 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