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 23 public class SystemFieldsValue { 24 25 26 private long transactionId, sessionId, returnedTransactionId,returnedSessionId; 27 private PersistentDatabase persistentDatabase; 28 private boolean isReadOnlyMode = false; 29 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 49 50 51 public synchronized Object getLastTransactionId()throws DException{ 52 return FieldUtility.getField(new Long (transactionId)); 53 } 54 55 60 61 62 public synchronized Object 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 field = FieldUtility.getField(new Long (++transactionId)); 71 return field; 72 } 73 74 79 80 81 public synchronized Object getLastSessionId()throws DException{ 82 return FieldUtility.getField(new Long (sessionId)); 83 } 84 85 90 91 92 public synchronized Object 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 nextSessionId = FieldUtility.getField(new Long (++sessionId)); 100 return nextSessionId; 101 } 102 103 public synchronized void updateLastTransactionId() throws DException{ 104 if(!isReadOnlyMode){ 105 Object sID = FieldUtility.getField(new Long (sessionId)); 106 Object tId = FieldUtility.getField(new Long (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 |