package com.hackerdude.apps.sqlide.nodes; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import com.hackerdude.apps.sqlide.dataaccess.DatabaseProcess; import com.hackerdude.apps.sqlide.pluginapi.NodeIDECategory; /** * Index category node. */ public class CategoryIndexesNode extends NodeIDECategory { String catalogName; private int iIndices = 0; private String tableName; String schemaName; public CategoryIndexesNode(String tableName, DatabaseProcess proc, String catalogName, String schemaName) { super("Indices", proc); this.catalogName = catalogName; this.tableName = tableName; this.schemaName = schemaName; } public void readChildren() { Connection conn = null; try { conn = databaseProcess.getConnection(); ResultSet rs = conn.getMetaData().getIndexInfo(catalogName, schemaName, tableName, false, true); iIndices = 0; while ( rs.next() ) { String indexName = rs.getString("INDEX_NAME"); // String catalogName = rs.getString("TABLE_CAT"); String columnName = rs.getString("COLUMN_NAME"); String schemaName = rs.getString("TABLE_SCHEM"); String tableName = rs.getString("TABLE_NAME"); boolean unique = true; try { unique = ! rs.getBoolean("NON_UNIQUE"); } catch (Exception exc ) {} if ( indexName != null ) add(new ItemIndexNode(indexName, catalogName, schemaName, tableName, columnName, unique, databaseProcess )); } rs.close(); databaseProcess.returnConnection(conn); } catch ( SQLException exc ) { exc.printStackTrace(); databaseProcess.returnConnection(conn); } } public String getInfo() { return "<HTML><P>Indices"; } }