Revision: 6289
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6289&view=rev
Author: wis775
Date: 2011-06-04 11:37:02 +0000 (Sat, 04 Jun 2011)
Log Message:
-----------
Display the table related indexes in the object tree under the table node.
This is additional to the generally index node, which displays all indexes of the schema.
Modified Paths:
--------------
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/IndexParentExpander.java
trunk/sql12/doc/src/main/resources/changes.txt
trunk/sql12/plugins/oracle/src/main/java/net/sourceforge/squirrel_sql/plugins/oracle/expander/TableExpander.java
Added Paths:
-----------
trunk/sql12/plugins/oracle/src/main/java/net/sourceforge/squirrel_sql/plugins/oracle/expander/OracleTableIndexExtractor.java
trunk/sql12/plugins/oracle/src/test/java/net/sourceforge/squirrel_sql/plugins/oracle/tab/IndexSourceTabTest.java
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/IndexParentExpander.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/IndexParentExpander.java 2011-06-04 11:20:13 UTC (rev 6288)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/objecttree/expanders/IndexParentExpander.java 2011-06-04 11:37:02 UTC (rev 6289)
@@ -27,13 +27,12 @@
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.INodeExpander;
import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.ObjectTreeNode;
+import net.sourceforge.squirrel_sql.fw.sql.DatabaseObjectInfo;
+import net.sourceforge.squirrel_sql.fw.sql.DatabaseObjectType;
import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo;
import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection;
-import net.sourceforge.squirrel_sql.fw.sql.IndexInfo;
import net.sourceforge.squirrel_sql.fw.sql.SQLDatabaseMetaData;
import net.sourceforge.squirrel_sql.fw.sql.SQLUtilities;
-import net.sourceforge.squirrel_sql.fw.sql.IndexInfo.IndexType;
-import net.sourceforge.squirrel_sql.fw.sql.IndexInfo.SortOrder;
import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
import net.sourceforge.squirrel_sql.fw.util.log.LoggerController;
@@ -107,22 +106,7 @@
String indexName = rs.getString(1);
String cat = parentDbinfo.getCatalogName();
String schema = parentDbinfo.getSchemaName();
- String tableName = tableInfo.getSimpleName();
- // This info is merely a placeholder in the tree that we can use to get index name and
- // parent name more easily. We probably should create a IndexColumnInfo that has this
- // extra info in it.
- String columnName = null;
- boolean nonUnique = true;
- String indexQualifier = null;
- IndexType indexType = null;
- short ordinalPosition = 0;
- SortOrder sortOrder = null;
- int cardinality = 0;
- int pages = 0;
- String filterCondition = null;
- IndexInfo doi = new IndexInfo(
- cat, schema, indexName, tableName, columnName, nonUnique, indexQualifier, indexType,
- ordinalPosition, sortOrder, cardinality, pages, filterCondition, md);
+ DatabaseObjectInfo doi = new DatabaseObjectInfo(cat, schema, indexName, DatabaseObjectType.INDEX, md);
childNodes.add(new ObjectTreeNode(session, doi));
}
} catch (SQLException e)
Modified: trunk/sql12/doc/src/main/resources/changes.txt
===================================================================
--- trunk/sql12/doc/src/main/resources/changes.txt 2011-06-04 11:20:13 UTC (rev 6288)
+++ trunk/sql12/doc/src/main/resources/changes.txt 2011-06-04 11:37:02 UTC (rev 6289)
@@ -25,7 +25,9 @@
Feature Request 3307812: Select an entire row via the table's pop-up menu.
Oracle Plugin:
- The DDL of a index could be displayed under the source tab.
+ - The DDL of a index could be displayed under the source tab.
+ - Display the table related indexes in the object tree under the table node. This is additional to the
+ generally index node, which displays all indexes of the schema.
New plugin "WIKI table configurations":
This plugin provides some pre-defined configurations for various WIKI engines. With this configurations, Squirrel knows, how to transform the selection
Added: trunk/sql12/plugins/oracle/src/main/java/net/sourceforge/squirrel_sql/plugins/oracle/expander/OracleTableIndexExtractor.java
===================================================================
--- trunk/sql12/plugins/oracle/src/main/java/net/sourceforge/squirrel_sql/plugins/oracle/expander/OracleTableIndexExtractor.java (rev 0)
+++ trunk/sql12/plugins/oracle/src/main/java/net/sourceforge/squirrel_sql/plugins/oracle/expander/OracleTableIndexExtractor.java 2011-06-04 11:37:02 UTC (rev 6289)
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2011 Stefan Willinger
+ * wi...@us...
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package net.sourceforge.squirrel_sql.plugins.oracle.expander;
+
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.expanders.ITableIndexExtractor;
+import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo;
+
+/**
+ * A {@link ITableIndexExtractor} for indexes, related to a specific table in a oracle database.
+ * @author Stefan Willinger
+ *
+ */
+public class OracleTableIndexExtractor implements ITableIndexExtractor {
+ private static String SQL = "select index_name from sys.all_indexes where table_owner = ? and table_name = ? order by index_name";
+
+ /**
+ * @see net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.expanders.ITableIndexExtractor#getTableIndexQuery()
+ */
+ @Override
+ public String getTableIndexQuery() {
+ return SQL;
+ }
+
+ /**
+ * @see net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.expanders.ITableIndexExtractor#bindParamters(java.sql.PreparedStatement,
+ * net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo)
+ */
+ @Override
+ public void bindParamters(PreparedStatement pstmt, IDatabaseObjectInfo dbo) throws SQLException {
+ pstmt.setString(1, dbo.getSchemaName());
+ pstmt.setString(2, dbo.getSimpleName());
+ }
+
+}
Property changes on: trunk/sql12/plugins/oracle/src/main/java/net/sourceforge/squirrel_sql/plugins/oracle/expander/OracleTableIndexExtractor.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/sql12/plugins/oracle/src/main/java/net/sourceforge/squirrel_sql/plugins/oracle/expander/TableExpander.java
===================================================================
--- trunk/sql12/plugins/oracle/src/main/java/net/sourceforge/squirrel_sql/plugins/oracle/expander/TableExpander.java 2011-06-04 11:20:13 UTC (rev 6288)
+++ trunk/sql12/plugins/oracle/src/main/java/net/sourceforge/squirrel_sql/plugins/oracle/expander/TableExpander.java 2011-06-04 11:37:02 UTC (rev 6289)
@@ -17,12 +17,15 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.INodeExpander;
import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.ObjectTreeNode;
+import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.expanders.IndexParentExpander;
+import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.expanders.IndexParentInfo;
import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo;
import net.sourceforge.squirrel_sql.fw.sql.IObjectTypes;
import net.sourceforge.squirrel_sql.fw.sql.SQLDatabaseMetaData;
@@ -58,7 +61,7 @@
* @return A list of <TT>ObjectTreeNode</TT> objects representing the child
* nodes for the passed node.
*/
- public List<ObjectTreeNode> createChildren(ISession session, ObjectTreeNode parentNode)
+ public List<ObjectTreeNode> createChildren(ISession session, ObjectTreeNode parentNode) throws SQLException
{
final List<ObjectTreeNode> childNodes = new ArrayList<ObjectTreeNode>();
final IDatabaseObjectInfo parentDbinfo = parentNode.getDatabaseObjectInfo();
@@ -67,16 +70,34 @@
IDatabaseObjectInfo dbinfo = new TriggerParentInfo(parentDbinfo,
schemaName, md, _objectTypes);
+ addNode(session, childNodes, dbinfo);
- ObjectTreeNode child = new ObjectTreeNode(session, dbinfo);
- childNodes.add(child);
-
IDatabaseObjectInfo cstrinfo = new ConstraintParentInfo(parentDbinfo,
schemaName, md, _objectTypes);
+ addNode(session, childNodes, cstrinfo);
- child = new ObjectTreeNode(session, cstrinfo);
- childNodes.add(child);
+ IDatabaseObjectInfo indexInfo = new IndexParentInfo(parentDbinfo,
+ schemaName, md);
+
+ IndexParentExpander tableIndexExpander = new IndexParentExpander();
+ tableIndexExpander.setTableIndexExtractor(new OracleTableIndexExtractor());
+ addNode(session, childNodes, indexInfo, tableIndexExpander);
+
return childNodes;
}
+
+ /**
+ * Adds a new {@link ObjectTreeNode} to the nodes.
+ * @param session Session to use
+ * @param childNodes Current Child nodes
+ * @param node The new node
+ */
+ private void addNode(ISession session, final List<ObjectTreeNode> childNodes, IDatabaseObjectInfo node, INodeExpander ...expanders) {
+ ObjectTreeNode child = new ObjectTreeNode(session, node);
+ for (INodeExpander expander : expanders) {
+ child.addExpander(expander);
+ }
+ childNodes.add(child);
+ }
}
Added: trunk/sql12/plugins/oracle/src/test/java/net/sourceforge/squirrel_sql/plugins/oracle/tab/IndexSourceTabTest.java
===================================================================
--- trunk/sql12/plugins/oracle/src/test/java/net/sourceforge/squirrel_sql/plugins/oracle/tab/IndexSourceTabTest.java (rev 0)
+++ trunk/sql12/plugins/oracle/src/test/java/net/sourceforge/squirrel_sql/plugins/oracle/tab/IndexSourceTabTest.java 2011-06-04 11:37:02 UTC (rev 6289)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2011 Stefan Willinger
+ * wi...@us...
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package net.sourceforge.squirrel_sql.plugins.oracle.tab;
+
+import org.junit.Before;
+
+import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.AbstractSourceTabTest;
+
+/**
+ * Test the index source tab
+ * @author Stefan Willinger
+ *
+ */
+public class IndexSourceTabTest extends AbstractSourceTabTest {
+
+ @Before
+ public void setUp() throws Exception
+ {
+ classUnderTest = new IndexSourceTab();
+ }
+}
Property changes on: trunk/sql12/plugins/oracle/src/test/java/net/sourceforge/squirrel_sql/plugins/oracle/tab/IndexSourceTabTest.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|