KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > datasystem > persistentsystem > versioninfo > VersionHandler3_2


1 package com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.versioninfo;
2
3 import com.daffodilwoods.database.resource.DException;
4 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.Cluster;
5 import com.daffodilwoods.daffodildb.utils.byteconverter.CCzufDpowfsufs;
6 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.
7
    PersistentDatabase;
8 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.
9
    TableManager;
10 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._DatabaseUser;
11 import com.daffodilwoods.daffodildb.server.datadictionarysystem.SystemTables;
12 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.
13
    DatabaseProperties;
14 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.PartialFixedRecordCluster;
15 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem._RecordCluster;
16 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.TableProperties;
17 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.FixedRecordCluster;
18 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.PartialVariableRecordCluster;
19 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.VariableRecordCluster;
20 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._Index;
21 import com.daffodilwoods.daffodildb.utils.comparator.SuperComparator;
22 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem._BTreeCharacteristics;
23 import com.daffodilwoods.daffodildb.server.datasystem.btree._NodeManager;
24 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem.IndexColumnInformation;
25 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._ClusterProvider;
26 import com.daffodilwoods.daffodildb.utils.byteconverter.CbCUsffWbmvfIboemfs;
27 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem._IndexInformation;
28 import com.daffodilwoods.database.general.QualifiedIdentifier;
29 import com.daffodilwoods.daffodildb.utils.BufferRange;
30 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.Utility;
31 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem.IndexInformations;
32 import com.daffodilwoods.daffodildb.server.datasystem.btree.BTree;
33 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem.FileNodeManager;
34 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._TableIterator;
35 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._TableCharacteristics;
36 import com.daffodilwoods.database.general.SystemFields;
37 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.DatabaseConstants;
38
39 public class VersionHandler3_2 extends VersionHandler {
40    int clusterSize = 16384;
41    public void writeInfoForSystemTables(Cluster startCluster,
42                                         PersistentDatabase persistentDatabase) throws
43        DException {
44
45       for (int i = 0, a = 0; i < 7; i++) {
46          a = 2 * i + 1;
47          persistentDatabase.writeInfoForSystemTable(a, startCluster);
48       }
49       if (persistentDatabase.getDatabaseName().equalsIgnoreCase(SYSTEMDATABASE)) {
50          persistentDatabase.writeInfoForSystemTable(15, startCluster);
51          persistentDatabase.writeInfoForSystemTable(17, startCluster);
52          persistentDatabase.writeInfoForSystemTable(19, startCluster);
53       }
54       persistentDatabase.writeInfoForSystemTable(21, startCluster);
55    }
56
57    public void initializeSystemTables(TableManager tableManager,
58                                       _DatabaseUser user, byte[] bytes,
59                                       String JavaDoc databaseName) throws
60        DException {
61       tableManager.addSystemTables(SystemTables.TABLEINFO, user, 1, bytes);
62       tableManager.addSystemTables(SystemTables.COLUMNINFO, user, 3, bytes);
63       tableManager.addSystemTables(SystemTables.CLUSTERINFO, user, 5, bytes);
64       tableManager.addSystemTables(SystemTables.DATABASEINDEXINFO, user, 7, bytes);
65       tableManager.addSystemTables(SystemTables.DATABASEINDEXCOLUMNS, user, 9,
66                                    bytes);
67       tableManager.addSystemTables(SystemTables.FREESPACEINFO, user, 11, bytes);
68       tableManager.addSystemTables(SystemTables.DATABASEFULLTEXTINFO, user, 13,
69                                    bytes);
70       if (databaseName.equalsIgnoreCase(SYSTEMDATABASE)) {
71          tableManager.addSystemTables(SystemTables.DATABASEINFO, user, 15, bytes);
72          tableManager.addSystemTables(SystemTables.DATABASEFILEINFO, user, 17,
73                                       bytes);
74          tableManager.addSystemTables(SystemTables.SCHEDULEINFO, user, 19, bytes);
75       }
76       tableManager.addSystemTables(SystemTables.DATABASEFULLTEXTCOLUMNINFO, user,
77                                    21, bytes);
78       tableManager.initializeFreeClusterList();
79    }
80
81    public DatabaseProperties getDatabaseProperties() throws DException {
82       return new DatabaseProperties3_1(clusterSize, this);
83    }
84
85    public void setClusterSize(int clusterSize0) {
86       clusterSize = clusterSize0;
87
88    }
89
90    public _RecordCluster getRecordCluster(TableProperties tableProperties, DatabaseProperties databaseProperties) throws DException {
91       _RecordCluster recordCluster = null;
92       int recordType = getRecordType(databaseProperties, tableProperties);
93       if (recordType == PARTIALFIXEDRECORDCLUSTER)
94          return recordCluster = new PartialFixedRecordCluster(tableProperties,
95              databaseProperties, this);
96       else if (recordType == FIXEDRECORDCLUSTER)
97          return recordCluster = new FixedRecordCluster(tableProperties,
98              databaseProperties, this);
99       else if (recordType == PARTIALVARIABLERECORDCLUSTER)
100          return recordCluster = new PartialVariableRecordCluster(tableProperties,
101              databaseProperties, this);
102       else
103          return recordCluster = new VariableRecordCluster(tableProperties,
104              databaseProperties, this);
105    }
106
107    private int getRecordType(DatabaseProperties databaseProperties, TableProperties tableProperties) {
108       if (tableProperties.recordType != -1)
109          return tableProperties.recordType;
110       if (tableProperties.fixedTable) {
111          tableProperties.recordType = (tableProperties.recordSize + ACTIVE_DELETE + FULL_PARTIAL + tableProperties.columnCount + LENGTH) >
112              (databaseProperties.CLUSTERFREESPACE + UPDATEBYTES)
113              ? PARTIALFIXEDRECORDCLUSTER
114              : FIXEDRECORDCLUSTER;
115          return tableProperties.recordType;
116       } else {
117          tableProperties.recordSize = 0;
118          for (int i = 0; i < tableProperties.columnCount; i++)
119             tableProperties.recordSize += tableProperties.size[i];
120
121          int clusterSize = (tableProperties.recordSize + ACTIVE_DELETE +
122                             FULL_PARTIAL + tableProperties.columnCount +
123                             tableProperties.variableColumns * LENGTH + LENGTH);
124
125          tableProperties.recordType = clusterSize >
126              databaseProperties.CLUSTERFREESPACE
127              ? PARTIALVARIABLERECORDCLUSTER
128              : VARIABLERECORDCLUSTER;
129          return tableProperties.recordType;
130       }
131    }
132
133    public boolean isFullTextSupported() {
134       return true;
135    }
136
137    public boolean isBackUpSupported() {
138       return true;
139    }
140
141    public _Index getIndex(SuperComparator comparator0, _BTreeCharacteristics btreeCharacteristics0, IndexColumnInformation iinf1, _ClusterProvider clusterProvider0, int address, CbCUsffWbmvfIboemfs handler0,boolean isDefault) throws DException {
142       return new BTree(comparator0, btreeCharacteristics0, getFileNodemanager(iinf1, clusterProvider0, address, handler0,isDefault));
143    }
144
145    private _NodeManager getFileNodemanager(IndexColumnInformation iinf1, _ClusterProvider clusterProvider0, int address, CbCUsffWbmvfIboemfs handler0,boolean isDefault) throws DException {
146       return new FileNodeManager(iinf1, clusterProvider0, address, handler0,isDefault);
147    }
148
149    public _IndexInformation getIndexInformation(QualifiedIdentifier tableName, String JavaDoc indexName, QualifiedIdentifier indexTableName, _TableIterator iterator, _TableCharacteristics tc) throws DException {
150       Object JavaDoc[][] columnInformation;
151       if (tableName.equals(SystemTables.FREESPACEINFO)) {
152          columnInformation = new Object JavaDoc[][] { {"CatalogName", Boolean.TRUE, new Integer JavaDoc(0)}
153              , {"SchemaName", Boolean.TRUE, new Integer JavaDoc(1)}
154              , {"TableName", Boolean.TRUE, new Integer JavaDoc(2)}
155              , {"ClusterAddress", Boolean.TRUE, new Integer JavaDoc(3)}
156          };
157       }
158       if (tableName.equals(SystemTables.COLUMNINFO)) {
159          columnInformation = new Object JavaDoc[][] { {"CatalogName", Boolean.TRUE, new Integer JavaDoc(0)}
160              , {"SchemaName", Boolean.TRUE, new Integer JavaDoc(1)}
161              , {"TableName", Boolean.TRUE, new Integer JavaDoc(2)}
162              , {"ColumnIndex", Boolean.TRUE, new Integer JavaDoc(6)}
163          };
164       } else {
165          columnInformation = new Object JavaDoc[][] { {"CatalogName", Boolean.TRUE, new Integer JavaDoc(0)}
166              , {"SchemaName", Boolean.TRUE, new Integer JavaDoc(1)}
167              , {"TableName", Boolean.TRUE, new Integer JavaDoc(2)}
168          };
169       }
170       int[] cols = new int[] {4};
171       Object JavaDoc[] values = Utility.convertIntoFieldBase( (Object JavaDoc[]) tc.getObject(cols, (BufferRange[]) iterator.getColumnValues(cols)));
172       return new IndexInformations(tableName, indexName, values[0].hashCode(), true, columnInformation, this);
173    }
174
175    public double getDbVersion() {
176       return 3.2;
177    }
178    public String JavaDoc getVersionCode(){
179     return DatabaseConstants.DATABASEVERSION_3_2 ;
180   }
181
182    public boolean isDefault(String JavaDoc[] indexColumnNames) {
183       return indexColumnNames.length == 1 && indexColumnNames[0].equalsIgnoreCase(SystemFields.systemFields[SystemFields.rowId]);
184    }
185
186    public Object JavaDoc[][] getDefaultIndexStructure() {
187       return new Object JavaDoc[][] { {
188           SystemFields.systemFields[SystemFields.rowId], Boolean.TRUE,
189           new Integer JavaDoc(0), new Integer JavaDoc(0)}
190       };
191    }
192    public String JavaDoc getDefaultClusterSize(){
193   return "16384";
194 }
195 public int getClusterSize(){
196   return clusterSize;
197 }
198
199 }
200
Popular Tags