KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > datadictionarysystem > FullTextIndexCharacteristics


1 package com.daffodilwoods.daffodildb.server.datadictionarysystem;
2
3 import java.util.*;
4
5 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem.*;
6 import com.daffodilwoods.daffodildb.server.sql99.*;
7 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*;
8 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
9 import com.daffodilwoods.database.general.*;
10 import com.daffodilwoods.database.resource.*;
11
12 public class FullTextIndexCharacteristics implements _FullTextIndexCharacteristics {
13
14    private FullTextIndexInformation[] fullTextIndexInformation;
15    QualifiedIdentifier tableName;
16    PreparedStatementGetter preparedStatementGetter;
17    _ColumnCharacteristics columnCharacteristics;
18
19    public FullTextIndexCharacteristics(QualifiedIdentifier tableName, PreparedStatementGetter preparedStatementGetter0, _ColumnCharacteristics columnCharacteristics) throws DException {
20       this.tableName = tableName;
21       preparedStatementGetter = preparedStatementGetter0;
22       this.columnCharacteristics = columnCharacteristics;
23       if (tableName.equals(SystemTables.FULLTEXTINFO) || tableName.equals(SystemTables.FULLTEXTCOLUMNINFO)) {
24          fullTextIndexInformation = null;
25          return;
26       }
27       init();
28    }
29
30    /* using retriever in place of Select Query; using single query for index
31          columns instead of firing query every index
32     */

33    public void init() throws DException {
34    }
35
36    private int check(String JavaDoc indexName) throws DException {
37       if (fullTextIndexInformation == null)
38          return -1;
39       for (int i = 0, length = fullTextIndexInformation.length; i < length; i++) {
40          if (fullTextIndexInformation[i].indexName.equalsIgnoreCase(indexName)) {
41             return i;
42          }
43       }
44       return -1;
45    }
46
47    private String JavaDoc[] breakTableName(QualifiedIdentifier tableName) throws DException {
48       String JavaDoc[] breakedTable = new String JavaDoc[3];
49       breakedTable[0] = tableName.catalog;
50       breakedTable[1] = tableName.schema;
51       breakedTable[2] = tableName.name;
52       return breakedTable;
53    }
54
55    private boolean[] getOrderType(ArrayList orderList) throws DException {
56       int size = orderList.size();
57       boolean[] str = new boolean[size];
58       for (int i = 0; i < size; i++)
59          str[i] = ( (Boolean JavaDoc) orderList.get(i)).booleanValue();
60       return str;
61    }
62
63    public _FullTextIndexInformation[] getFullTextIndexInformations() throws DException {
64       return fullTextIndexInformation;
65    }
66
67    public _FullTextIndexInformation getFullTextIndexInformations(String JavaDoc indexName, boolean flag) throws DException {
68      throw new UnsupportedOperationException JavaDoc("method getFullTextIndexInformations not yet implemented");
69    }
70
71    public boolean isSutiableIndex(String JavaDoc[] columns) throws DException {
72       return false; //indexInformation == null ? null : IndexMaintained.getSuitableIndex(indexInformation,columns);
73
}
74
75
76    public void refresh() throws DException {
77       String JavaDoc[] breakedTable = breakTableName(tableName);
78       _SelectQueryIterator indexRetrieverIterator = getIterator(preparedStatementGetter.getFullTextIndexExecuter(), breakedTable);
79       if (indexRetrieverIterator.first()) {
80          ArrayList indexInfoList = new ArrayList();
81          do {
82             Object JavaDoc[] record = (Object JavaDoc[]) indexRetrieverIterator.getObject();
83             String JavaDoc indexName = null;
84             try {
85                indexName = (String JavaDoc) record[SystemTablesFields.fulltextindex_indexname];
86             } catch (ClassCastException JavaDoc ex) {
87                throw ex;
88             }
89             int ij = check(indexName);
90             if (ij == -1) {
91                _SelectQueryIterator columnsIterator = getIterator(preparedStatementGetter.getFullTextIndexColumnsExecuter(), new Object JavaDoc[] {breakedTable[0], breakedTable[1], breakedTable[2], indexName});
92                columnsIterator.first();
93                ArrayList columnList = new ArrayList();
94                do {
95                   Object JavaDoc[] columnsRecord = (Object JavaDoc[]) columnsIterator.getObject();
96                   columnList.add( (String JavaDoc) columnsRecord[SystemTablesFields.indexColumns_column_name]);
97                } while (columnsIterator.next());
98                String JavaDoc[] indexColumns = (String JavaDoc[]) columnList.toArray(new String JavaDoc[0]);
99                int[] columnIndexes = indexColumns == null ? null : columnCharacteristics.getColumnIndexes(indexColumns);
100                FullTextIndexInformation iinf = new FullTextIndexInformation(
101                    tableName, indexName, (String JavaDoc) record[SystemTablesFields.fulltextindex_table_name], indexColumns, columnIndexes);
102                indexInfoList.add(iinf);
103             } else {
104                indexInfoList.add(fullTextIndexInformation[ij]);
105             }
106          } while (indexRetrieverIterator.next());
107          if (indexInfoList.size() != 0)
108             fullTextIndexInformation = (FullTextIndexInformation[]) indexInfoList.toArray(new FullTextIndexInformation[0]);
109       } else {
110          fullTextIndexInformation = null;
111       }
112    }
113
114
115    private _SelectQueryIterator getIterator(_Executer executer, Object JavaDoc[] parameters) throws DException {
116       return (_SelectQueryIterator) executer.executeForFresh(parameters);
117    }
118 }
119
Popular Tags