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 ; 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 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 61 62 public _UserSession getUserSession( String user,Object sessionConstant, Properties sessionProperties, String databaseURL ) throws DException { 63 _SessionDatabase sessionDatabase = getSessionDatabase(databaseURL, sessionProperties); 64 65 _Session session = sessionDatabase.getSession( user, sessionConstant, sessionProperties ); 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 82 83 public synchronized _SessionDatabase getSessionDatabase(String 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 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 105 106 public void removeTable(String tableName, boolean dropTable) throws DException{ 107 } 108 109 public void deleteDatabase(String 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 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 176 } 177 | Popular Tags |