KickJava   Java API By Example, From Geeks To Geeks.

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


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 com.daffodilwoods.database.general.SystemFields;
7
8 /**
9  *
10  * <p>Description: Condition for getting records of other session in memory for taking lock on them
11  * , used in committed session iterator.
12  * </p>
13  * <p>Company: Daffodil Software Ltd.</p>
14  * @version 1.0
15  */

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

36 /* commented by kuldeep kumar after 3.3 for dead lock related work test case doesn't found lock with thids condition so a new implemented below
37     public boolean evaluate(_Iterator nonIndexedIterator ) throws DException {
38       Object[] valuesToCompare = (Object[])nonIndexedIterator.getColumnValues( SISIT);//new int[]{SystemFields.sessionId ,SystemFields.invalidSessionId ,SystemFields.invalidTransactionId } ) ;
39       return (!(StaticConditionHelper.solveInConditon((Object[])condition[0],(FieldBase)valuesToCompare[0]) ||
40           StaticConditionHelper.solveInConditon((Object[])condition[1],(FieldBase)valuesToCompare[1]) )) &&
41           (StaticConditionHelper.compare(condition[2],valuesToCompare[2]) == 0 );
42
43     }
44 */

45 /* changed by kuldeep kumar after 3.3 as dead lock not deltected properly with this condition so changed */
46 public boolean evaluate(_Iterator nonIndexedIterator ) throws DException {
47   Object JavaDoc[] valuesToCompare = (Object JavaDoc[])nonIndexedIterator.getColumnValues( SISIT);//new int[]{SystemFields.sessionId ,SystemFields.invalidSessionId ,SystemFields.invalidTransactionId } ) ;
48
return (!((StaticConditionHelper.solveInConditon((Object JavaDoc[])condition[0],(FieldBase)valuesToCompare[0]) && (StaticConditionHelper.compare(condition[2],valuesToCompare[1]) == 0)) ||
49       StaticConditionHelper.solveInConditon((Object JavaDoc[])condition[1],(FieldBase)valuesToCompare[1]) )) &&
50       (StaticConditionHelper.compare(condition[2],valuesToCompare[2]) == 0 );
51
52  }
53
54
55     /**
56      * refreshes the condition.
57      * @param values
58      * @throws DException
59      */

60     public void setParameterValues(Object JavaDoc[] values) throws DException {
61         Object JavaDoc sessionIds = (Object JavaDoc[])values[0];
62         condition[0] = sessionIds;
63         condition[1] = sessionIds;
64     }
65
66     public String JavaDoc toString(){
67             return "[ READ_COMMITTED_FOR_LOCK_CONDITION => ( not ( (sessionId in ("+condition[0]+") or invalidSessionId in ("+condition[1]+") ))) ]";
68     }
69
70 }
71
Popular Tags