KickJava   Java API By Example, From Geeks To Geeks.

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


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 /**
11  *
12  * <p>Description: Isolation Level Condition in which </p>
13  * Dirty Read is Not possible
14  * No Repeatable Read is Not possible and
15  * Phantom Read is also Not Possible. </p>
16  * <p>Company: Daffodil Software Ltd.</p>
17  * @version 1.0
18  */

19 public class TransactionSerializableCondition implements _SessionCondition {
20
21     Object JavaDoc[] condition;
22
23     private static int[] ITISTS = new int[]{ SystemFields.invalidTransactionId ,SystemFields.invalidSessionId,SystemFields.transactionId ,SystemFields.sessionId } ;
24
25     public TransactionSerializableCondition(Object JavaDoc presentConditionValues)throws DException {
26         condition = new Object JavaDoc[5];
27         FieldBase bytesForMaxIntegerValue = (FieldBase)SystemFields.maxIntegerValue;
28         condition[0] = bytesForMaxIntegerValue;
29         condition[1] = presentConditionValues ; // sessionID
30
condition[2] = bytesForMaxIntegerValue;
31         condition[3] = bytesForMaxIntegerValue;
32         condition[4] = bytesForMaxIntegerValue;
33     }
34
35 /**
36  * evaluates the condition above.
37  * @param values
38  * @return
39  * @throws DException
40  */

41
42     public boolean evaluate(_Iterator nonIndexedIterator) throws DException {
43  Object JavaDoc[] valuesToCompare = (Object JavaDoc[])nonIndexedIterator.getColumnValues( ITISTS);//new int[]{ SystemFields.invalidTransactionId ,SystemFields.invalidSessionId,SystemFields.transactionId ,SystemFields.sessionId } ) ;
44
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     /**
54      * refreshes the condition.
55      * @param values
56      * @throws DException
57      */

58     public void setParameterValues(Object JavaDoc[] values) throws DException{
59         condition[1] = values[0] ;
60     }
61
62     public String JavaDoc 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