KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.daffodilwoods.daffodildb.server.sessionsystem;
2
3 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator;
4 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._Table;
5 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression._SingleTableExecuter;
6 import com.daffodilwoods.database.resource.DException;
7 import com.daffodilwoods.database.general.QualifiedIdentifier;
8 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._IndexTable;
9 import com.daffodilwoods.daffodildb.server.serversystem._ServerSession;
10 import com.daffodilwoods.daffodildb.server.sessionsystem.sessioncondition._SessionCondition;
11 import com.daffodilwoods.daffodildb.server.datasystem.mergesystem.MergeTable;
12
13 /**
14  * Provides the iterator to fetch the reocrds which satisfies the requirements of
15  * Read SessionSerializable Isolation level
16  * @param singleTableExecuter constains condition and order
17  * @param serverSession used by singleTableExecuter to solve the inner query
18  * @return _IndexIterator
19  * @throws DException
20  */

21
22 public class SessionSerializableDataRetriever extends DataRetrieverWithoutCondition implements _DataRetriever {
23
24   Session session;
25   public SessionSerializableDataRetriever(Session session) {
26     this.session = session;
27   }
28
29   public _Iterator getIterator(_Table mergeTable, _SingleTableExecuter singleTableExecuter, _ServerSession serverSession, QualifiedIdentifier tableName, ForUpdateTableHandler forUpdateTableHandler) throws DException{
30      return getConditionalIterator(mergeTable,singleTableExecuter,serverSession,tableName,forUpdateTableHandler);
31   }
32
33   public _Iterator getConditionalIterator(_Table mergeTable, _SingleTableExecuter singleTableExecuter, _ServerSession serverSession, QualifiedIdentifier tableName, ForUpdateTableHandler forUpdateTableHandler) throws DException{
34     SessionIndex sessionIndex = new SessionIndex((_IndexTable)mergeTable, serverSession);
35     _Iterator iterator = singleTableExecuter.execute(sessionIndex);
36     _SessionCondition sessionCondition = ((Session)session).getTransactionSessionCondition( );
37     return new RowIdSessionIterator( new NonIndexedSessionFilterIterator(iterator,sessionCondition) ,sessionCondition);
38   }
39
40
41   public _Iterator getFCIterator(_Table mergeTable,
42                                            QualifiedIdentifier tableName,
43                                            _SingleTableExecuter conditionExecuter,
44                                            _IndexTable foreignConstraintTable )
45                                            throws DException{
46       SessionIndex sessionIndex = new SessionIndex((_IndexTable)mergeTable, ((_SessionGetter)foreignConstraintTable).getServerSession());
47       _Iterator iterator = conditionExecuter.execute(sessionIndex );
48       _SessionCondition sessionCondition = ((Session)session).getTransactionSessionCondition( );
49       _Iterator baseIterator = new NonIndexedSessionFilterIterator(iterator,sessionCondition);
50       _Iterator fcIterator = ((ForeignConstraintTable)foreignConstraintTable).getIterator(baseIterator);
51       return new RowIdSessionIterator( fcIterator ,sessionCondition);
52   }
53
54 }
55
Popular Tags