01: /*
02: * IndexReader.java
03: *
04: * This file is part of SQL Workbench/J, http://www.sql-workbench.net
05: *
06: * Copyright 2002-2008, Thomas Kellerer
07: * No part of this code maybe reused without the permission of the author
08: *
09: * To contact the author please send an email to: support@sql-workbench.net
10: *
11: */
12: package workbench.db;
13:
14: import java.sql.ResultSet;
15: import java.sql.SQLException;
16: import java.util.Collection;
17: import workbench.storage.DataStore;
18:
19: /**
20: *
21: * @author support@sql-workbench.net
22: */
23: public interface IndexReader {
24: /**
25: * Replacement for the JDBC's getIndexInfo method.
26: * After the returned ResultSet has been processed, indexInfoProcessed() has to be called!
27: * The TYPE column may not be an integer value but a String value that indicates
28: * the type of the index in plain text. So the column "TYPE" from the result set
29: * should always be accessed using getObject("TYPE")
30: *
31: * @see #indexInfoProcessed()
32: */
33: ResultSet getIndexInfo(TableIdentifier table, boolean unique)
34: throws SQLException;
35:
36: /**
37: * This closes any resources opened by {@link #getIndexSource(workbench.db.TableIdentifier, workbench.storage.DataStore, String)}
38: * and should be called after the ResultSet obtained from {@link #getIndexInfo(TableIdentifier, boolean)} has
39: * been processed and closed
40: *
41: * @see #getIndexInfo(workbench.db.TableIdentifier, boolean)
42: */
43: void indexInfoProcessed();
44:
45: /**
46: * Get the SQL source for all indexes defined in indexDefinition.
47: *
48: * If tableNameToUse is non-null then that name will be used instead
49: * of the name of the TableIdentifier
50: */
51: StringBuilder getIndexSource(TableIdentifier table,
52: DataStore indexDefinition, String tableNameToUse);
53:
54: /**
55: * Build a SQL statement (from scratch) to create a new index on the given table.
56: *
57: * @param table - The table for which the index should be constructed
58: * @param indexName - The name of the Index
59: * @param unique - Should the index be unique
60: * @param columnList - The columns that should build the index
61: */
62: String buildCreateIndexSql(TableIdentifier table, String indexName,
63: boolean unique, String[] columnList);
64:
65: /**
66: * Post-Process the index definitions contained in the List
67: * This can be used to e.g. retrieve additional index information
68: * that can't be read with getIndexInfo()
69: */
70: void processIndexList(TableIdentifier table,
71: Collection<IndexDefinition> indexDefinitions);
72: }
|