KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sessionsystem > SystemFieldsValue


1 package com.daffodilwoods.daffodildb.server.sessionsystem;
2
3
4 import com.daffodilwoods.database.general.*;
5 import com.daffodilwoods.daffodildb.server.datasystem.utility.*;
6 import com.daffodilwoods.database.resource.*;
7 import com.daffodilwoods.database.sqlinitiator.*;
8 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*;
9
10 import com.daffodilwoods.daffodildb.utils.FieldUtility;
11 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.PersistentDatabase;
12 import com.daffodilwoods.daffodildb.utils.field.FieldBase;
13 import com.daffodilwoods.daffodildb.utils.byteconverter.CCzufDpowfsufs;
14
15 /**
16  *
17  * Title: System Fields Value
18  * Description:
19  * Maintains the last transactionId and sessionId for a perticular database.
20  * Last TransactionId and SessionId are provided by SessionDatabase on the time of
21  * initialization.
22  */

23 public class SystemFieldsValue {
24
25
26   private long transactionId, sessionId, returnedTransactionId,returnedSessionId;
27   private PersistentDatabase persistentDatabase;
28   private boolean isReadOnlyMode = false;
29   /**
30    * Constructs the SystemFieldsValue
31    * @param transactionId0 Last transactionId stored in database
32    * @param sessionId0 Last SessionId stored in database
33    * @throws DException
34    */

35
36   public SystemFieldsValue(PersistentDatabase pd ,long transactionId0, long sessionId0,boolean isReadOnlyMode0) throws DException {
37     persistentDatabase = pd;
38     transactionId = transactionId0;
39     returnedTransactionId = transactionId;
40     sessionId = sessionId0;
41     isReadOnlyMode = isReadOnlyMode0;
42   }
43
44   /**
45    * Provided last transaction Id .
46    * @return Object
47    * @throws DException
48    */

49
50
51   public synchronized Object JavaDoc getLastTransactionId()throws DException{
52     return FieldUtility.getField(new Long JavaDoc(transactionId));
53   }
54
55   /**
56    * Provides next Transaction Id
57    * @return Object
58    * @throws DException
59    */

60
61
62   public synchronized Object JavaDoc getNextTransactionId()throws DException{
63
64     if( !isReadOnlyMode && transactionId == returnedTransactionId ){
65       returnedTransactionId = returnedTransactionId + 100;
66       byte[] b = CCzufDpowfsufs.getBytes(returnedTransactionId);
67       persistentDatabase.writeInFile(persistentDatabase.getDatabaseProperties().LAST_TRANSACTION_ID, b );
68     }
69
70     Object JavaDoc field = FieldUtility.getField(new Long JavaDoc(++transactionId));
71     return field;
72   }
73
74   /**
75    * Provides the last session Id.
76    * @return Object
77    * @throws DException
78    */

79
80
81   public synchronized Object JavaDoc getLastSessionId()throws DException{
82     return FieldUtility.getField(new Long JavaDoc(sessionId));
83   }
84
85   /**
86    * Provides next Sesison Id.
87    * @return Object
88    * @throws DException
89    */

90
91
92   public synchronized Object JavaDoc getNextSessionId()throws DException{
93     if( !isReadOnlyMode && sessionId == returnedSessionId ){
94       returnedSessionId = returnedSessionId + 50;
95       byte[] b = CCzufDpowfsufs.getBytes(returnedSessionId);
96       persistentDatabase.writeInFile(persistentDatabase.getDatabaseProperties().LAST_SESSION_ID, b );
97     }
98
99     Object JavaDoc nextSessionId = FieldUtility.getField(new Long JavaDoc(++sessionId));
100     return nextSessionId;
101   }
102
103   public synchronized void updateLastTransactionId() throws DException{
104     if(!isReadOnlyMode){
105       Object JavaDoc sID = FieldUtility.getField(new Long JavaDoc(sessionId));
106       Object JavaDoc tId = FieldUtility.getField(new Long JavaDoc(transactionId));
107
108
109       persistentDatabase.writeInFile(persistentDatabase.getDatabaseProperties().LAST_TRANSACTION_ID, ((FieldBase)tId).getBytes() );
110       persistentDatabase.writeInFile(persistentDatabase.getDatabaseProperties().LAST_SESSION_ID, ((FieldBase)sID).getBytes() );
111     }
112   }
113 }
114
Popular Tags