KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.daffodilwoods.daffodildb.server.sessionsystem;
2
3 import java.util.*;
4 import com.daffodilwoods.database.resource.*;
5 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
6 import com.daffodilwoods.daffodildb.server.serversystem.dmlvalidation.constraintsystem.*;
7 import com.daffodilwoods.database.general.*;
8 import com.daffodilwoods.daffodildb.server.serversystem.*;
9
10 import java.io.*;
11 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*;
12 import com.daffodilwoods.daffodildb.server.serversystem.dmlvalidation.constraintsystem._ConstraintSystem;
13 import com.daffodilwoods.daffodildb.utils.*;
14 import com.daffodilwoods.daffodildb.utils.comparator.*;
15 import com.daffodilwoods.daffodildb.server.datasystem.mergesystem.MergeDatabase;
16 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem.IndexDatabase;
17 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator;
18 import com.daffodilwoods.daffodildb.server.sql99.common.TableDetails;
19 import com.daffodilwoods.daffodildb.utils.field.FieldBase;
20 import com.daffodilwoods.daffodildb.server.sql99.dql.execution.ConditionSingleTableExecuter;
21 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression._SingleTableExecuter;
22 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.booleanvalueexpression;
23 import com.daffodilwoods.daffodildb.server.datadictionarysystem.SystemTables;
24 import java.util.ArrayList JavaDoc;
25 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._UserTableOperations;
26
27 public class SessionSystem implements _SessionSystem {
28   private _DataDictionarySystem dataDictionarySystem;
29   private _DataSystem mergeSystem;
30   private WeakOrderedKeyList sessionSystemList = new WeakOrderedKeyList( new CTusjohDbtfJoTfotjujwfDpnqbsbups());
31   private _ConstraintSystem deferrableConstraintSystem;
32   private _ConstraintSystem constraintSystem;
33   private boolean isReadOnlyMode = false;
34   /**
35    * @param internalLintenerManager0
36    * @param dataDictionarySystem0
37    * @param mergeSystem0
38    * @param deferrableConstraintSystem0
39    * @param constraintSystem0
40    * @throws DException
41    */

42
43   public SessionSystem( _DataDictionarySystem dataDictionarySystem0,_DataSystem mergeSystem0, _ConstraintSystem deferrableConstraintSystem0, _ConstraintSystem constraintSystem0,boolean isReadOnlyMode0) throws DException {
44     dataDictionarySystem = dataDictionarySystem0;
45     mergeSystem = mergeSystem0;
46     deferrableConstraintSystem = deferrableConstraintSystem0;
47     constraintSystem = constraintSystem0;
48     isReadOnlyMode = isReadOnlyMode0;
49   }
50
51   /**
52    * returns the user a session according to its privilegeCharacteristics i.e the privileges
53    * or rights granted to the User.
54    * @param user
55    * @param sessionConstant for multiple users.
56    * @param sessionProperties is a persistent set of properties. The Properties can be saved to a stream or loaded from a stream. Each key and its corresponding value in the property list is a string.
57    * @param databaseURL is the path of our Database.
58    * @return _UserSession
59    * @throws DException
60    */

61
62   public _UserSession getUserSession( String JavaDoc user,Object JavaDoc sessionConstant, Properties sessionProperties, String JavaDoc databaseURL ) throws DException {
63     _SessionDatabase sessionDatabase = getSessionDatabase(databaseURL, sessionProperties);
64
65     _Session session = sessionDatabase.getSession( user, sessionConstant, sessionProperties );// will return SessionWithCommit
66
AuthorizationIdentifier authorizationIdentifier = new AuthorizationIdentifier();
67     authorizationIdentifier.setUser(user);
68     session.pushAuthorizationIdentifier(authorizationIdentifier);
69     _DataDictionary dataDictionary = sessionDatabase.getDataDictionary();
70     _PrivilegeCharacteristics privilegeCharacteristics = dataDictionary.getPrivilegeCharacteristics(user,_PrivilegeCharacteristics.AUTHORIZATION_USER);
71     _UserSession userSession = new UserSession(session, user, privilegeCharacteristics );
72     return userSession;
73   }
74
75   /**
76    * Returns Session on a Database according to the Constrains on that Database.
77    * @param databaseURL the path for our Database.
78    * @param prop is a persistent set of properties. The Properties can be saved to a stream or loaded from a stream. Each key and its corresponding value in the property list is a string.
79    * @return _SessionDatabase
80    * @throws DException
81    */

82
83   public synchronized _SessionDatabase getSessionDatabase(String JavaDoc databaseURL,Properties prop) throws DException {
84     SessionDatabase sessionDatabase = (SessionDatabase) sessionSystemList.get( databaseURL );
85     if(sessionDatabase == null){
86       _DataDictionary dataDictionary = dataDictionarySystem.getDataDictionary( databaseURL );
87       _Database cacheDatabase = mergeSystem.getDatabase(databaseURL);
88       RowIdFetcher rowIdFetcher = new RowIdFetcher( cacheDatabase );
89       _ConstraintDatabase deferredConstraintDatabase = deferrableConstraintSystem.getConstraintDatabase( databaseURL );
90       _ConstraintDatabase constraintDatabase = constraintSystem.getConstraintDatabase( databaseURL );
91       String JavaDoc coruptChecking = prop.getProperty(_Server.ISCREATED,"true");
92       sessionDatabase = new SessionDatabase( this, dataDictionary, cacheDatabase, rowIdFetcher, deferredConstraintDatabase, constraintDatabase, coruptChecking, databaseURL);
93       sessionSystemList.put( databaseURL, sessionDatabase );
94
95     }
96     return sessionDatabase;
97   }
98
99   /**
100    * Deletes a table.
101    * @param tableName name of the table.
102    * @param dropTable is a boolean value, indicating wheather the table is marked for deletion or not.
103    * @throws DException
104    */

105
106   public void removeTable(String JavaDoc tableName, boolean dropTable) throws DException{
107   }
108
109   public void deleteDatabase(String JavaDoc databaseName, boolean removeFromMap, boolean dropDatabase) throws DException{
110       constraintSystem.deleteDatabase(databaseName);
111       sessionSystemList.remove(databaseName);
112       if(removeFromMap)
113           mergeSystem.removeDatabase(databaseName);
114       if(dropDatabase)
115         mergeSystem.dropDatabase(databaseName);
116       deferrableConstraintSystem.deleteDatabase(databaseName);
117   }
118
119   public void refreshConstraintSystem(String JavaDoc databaseName) throws DException{
120     sessionSystemList.remove(databaseName);
121     constraintSystem.deleteDatabase(databaseName);
122     deferrableConstraintSystem.deleteDatabase(databaseName);
123   }
124   public boolean isReadOnlyMode(){
125     return isReadOnlyMode;
126   }
127
128 /*
129   private void removeDirtyTransactionsFromTable(QualifiedIdentifier tableName,TableDetails tableD,FieldBase sessionId,_Database pd) throws DException{
130      booleanvalueexpression bve = SystemFieldsCharacteristics.getInsertedCondition();
131     _SingleTableExecuter ste = new ConditionSingleTableExecuter(null,tableD,null,bve,null);
132     _IndexTable indexTable = (_IndexTable)pd.getTable(tableName);
133     _IndexTable sessionIndex = new SessionIndex(indexTable,null);
134     _Iterator iterator = ste.execute(sessionIndex);
135
136
137     Object[] referenceValues = new Object[]{sessionId, SystemFields.maxIntegerValue};
138     iterator.setConditionVariableValue(bve.getReferences(new TableDetails[]{tableD}),referenceValues,0);
139
140     ArrayList list = new ArrayList();
141     list.add(tableName);
142     _DatabaseUser user = ((IndexDatabase)pd).getUnderLyingDatabase().getDatabaseUser(list);
143
144     try {
145       if (iterator.first()) {
146         do {
147           ( (_UserTableOperations) iterator).delete(user);
148         }
149         while (iterator.next());
150       }
151       bve = SystemFieldsCharacteristics.getInvalidRecordCondition();
152       ste = new ConditionSingleTableExecuter(null, tableD, null, bve, null);
153       sessionIndex = new SessionIndex(indexTable,null);
154       iterator = ste.execute(sessionIndex);
155       referenceValues = new Object[] {
156           sessionId};
157       iterator.setConditionVariableValue(bve.getReferences(new TableDetails[] {
158           tableD}), referenceValues, 0);
159
160       if (iterator.first()) {
161         do {
162           ( (_UserTableOperations) iterator).update(user,
163               new int[] {SystemFields.invalidSessionId}
164               , new Object[] {SystemFields.maxIntegerValue});
165         }
166         while (iterator.next());
167       }
168       user.writeToFile();
169     }
170     catch (DException ex) {
171       user.rollback();
172     }finally{
173       user.releaseCluster();
174     }
175   }*/

176 }
177
Popular Tags