KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sessionsystem > sessionversioninfo > SessionVersionHandlerUpto3_1


1 package com.daffodilwoods.daffodildb.server.sessionsystem.sessionversioninfo;
2
3 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator;
4 import com.daffodilwoods.database.resource.DException;
5 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._IndexIterator;
6 import com.daffodilwoods.daffodildb.utils.comparator.SuperComparator;
7 import com.daffodilwoods.database.utility.P;
8 import com.daffodilwoods.database.general.SystemFields;
9 import com.daffodilwoods.daffodildb.server.datadictionarysystem.
10
    IndexInformation;
11 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem._IndexInformation;
12
13 public class SessionVersionHandlerUpto3_1 extends SessionVersionHandler {
14    public SessionVersionHandlerUpto3_1() {
15    }
16
17    public boolean recordFound(_Iterator iterator, Object JavaDoc[] key) throws
18        DException {
19       return iterator.seek(key);
20    }
21
22    public boolean recordFound(_Iterator iterator, Object JavaDoc actualKey, Object JavaDoc[] key) throws
23        DException {
24       return iterator.seek(actualKey);
25
26    }
27
28    public boolean recordFound(_IndexIterator iterator,
29                               _IndexIterator keyIterator, Object JavaDoc actualKey,
30                               SuperComparator comparator) throws DException {
31       return iterator.seek(actualKey);
32    }
33
34    public Object JavaDoc getDefaultKey(Object JavaDoc kee) throws DException {
35       try {
36          Object JavaDoc[] key = (Object JavaDoc[]) kee;
37          if (key.length > 3) {
38             Object JavaDoc[] keyToReturn = new Object JavaDoc[3];
39             for (int i = key.length - 1, j = 2; j >= 0; i--, j--) {
40                keyToReturn[j] = key[i];
41             }
42             return keyToReturn;
43          }
44          if (key.length == 3) {
45             return key;
46          }
47       } catch (Exception JavaDoc ex) {
48          throw new DException("DSE0", new Object JavaDoc[] {ex.getMessage()});
49       }
50       throw new DException("DSE2047" + P.print(kee), null);
51    }
52
53    public void update(_IndexInformation iinf) throws DException {
54       if (!iinf.isUpdated()) {
55          int size = iinf.getColumns().length;
56          int len = size + 3;
57          String JavaDoc[] names = new String JavaDoc[len];
58          int[] indexes = new int[len];
59          boolean[] types = new boolean[len];
60          System.arraycopy(iinf.getColumns(), 0, names, 0, size);
61          System.arraycopy(iinf.getColumnIndexes(), 0, indexes, 0, size);
62          System.arraycopy(iinf.getOrderOfColumns(), 0, types, 0, size);
63          names[size] = SystemFields.systemFields[SystemFields.rowId];
64          indexes[size] = SystemFields.rowId;
65          types[size] = true;
66          names[size + 1] = SystemFields.systemFields[SystemFields.transactionId]; ;
67          indexes[size + 1] = SystemFields.transactionId;
68          types[size + 1] = true;
69          names[size + 2] = SystemFields.systemFields[SystemFields.sessionId];
70          indexes[size + 2] = SystemFields.sessionId;
71          types[size + 2] = true;
72          iinf.setColumnNames(names);
73          iinf.setColumnIndexes(indexes);
74          iinf.setOrderOfColumns(types);
75          iinf.setIsUpdatedFlag(true);
76       }
77    }
78
79    public boolean hasOnlyRowidAsColumnIndex() {
80       return false;
81    }
82
83    public boolean seek(_Iterator iterator, Object JavaDoc key) throws DException {
84       return iterator.seek(new Object JavaDoc[] {key});
85    }
86 }
87
Popular Tags