From 6449f9e4250a0ac0a9bfd0c4a80da15c9e690fa6 Mon Sep 17 00:00:00 2001 From: argius Date: Fri, 3 Oct 2014 19:55:05 +0900 Subject: [PATCH] [#34405] Define and use default table types not only getTableTypes (DatabaseInfoTree) --- .../argius/stew/ui/window/DatabaseInfoTree.java | 51 ++++++++++++++-------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/src/net/argius/stew/ui/window/DatabaseInfoTree.java b/src/net/argius/stew/ui/window/DatabaseInfoTree.java index 8d2f8a1..267b194 100644 --- a/src/net/argius/stew/ui/window/DatabaseInfoTree.java +++ b/src/net/argius/stew/ui/window/DatabaseInfoTree.java @@ -44,6 +44,13 @@ final class DatabaseInfoTree extends JTree implements AnyActionListener, TextSea private static final Logger log = Logger.getLogger(DatabaseInfoTree.class); private static final ResourceManager res = ResourceManager.getInstance(DatabaseInfoTree.class); + private static final String TABLE_TYPE_TABLE = "TABLE"; + private static final String TABLE_TYPE_VIEW = "VIEW"; + private static final String TABLE_TYPE_INDEX = "INDEX"; + private static final String TABLE_TYPE_SEQUENCE = "SEQUENCE"; + private static final List DEFAULT_TABLE_TYPES = // + Arrays.asList(TABLE_TYPE_TABLE, TABLE_TYPE_VIEW, TABLE_TYPE_INDEX, TABLE_TYPE_SEQUENCE); + static volatile boolean showColumnNumber; private Connector currentConnector; @@ -710,20 +717,28 @@ final class DatabaseInfoTree extends JTree implements AnyActionListener, TextSea static List getTableTypeNodes(DatabaseMetaData dbmeta, String catalog, String schema) throws SQLException { - List a = new ArrayList(); - ResultSet rs = dbmeta.getTableTypes(); + List tableTypes = new ArrayList(DEFAULT_TABLE_TYPES); try { - while (rs.next()) { - TableTypeNode typeNode = new TableTypeNode(catalog, schema, rs.getString(1)); - if (typeNode.hasItems(dbmeta)) { - a.add(typeNode); + ResultSet rs = dbmeta.getTableTypes(); + try { + while (rs.next()) { + final String tableType = rs.getString(1); + if (!DEFAULT_TABLE_TYPES.contains(tableType)) { + tableTypes.add(tableType); + } } + } finally { + rs.close(); } - } finally { - rs.close(); + } catch (SQLException ex) { + log.warn("getTableTypes at getTableTypeNodes", ex); } - if (a.isEmpty()) { - a.add(new TableTypeNode(catalog, schema, "TABLE")); + List a = new ArrayList(); + for (final String tableType : tableTypes) { + TableTypeNode typeNode = new TableTypeNode(catalog, schema, tableType); + if (typeNode.hasItems(dbmeta)) { + a.add(typeNode); + } } return a; } @@ -837,8 +852,7 @@ final class DatabaseInfoTree extends JTree implements AnyActionListener, TextSea while (rs.next()) { final String table = rs.getString(3); final String type = rs.getString(4); - final boolean kindOfTable = type.matches("TABLE|VIEW|SYNONYM"); - a.add(new TableNode(catalog, schema, table, kindOfTable)); + a.add(new TableNode(catalog, schema, table, type)); } } finally { rs.close(); @@ -871,14 +885,14 @@ final class DatabaseInfoTree extends JTree implements AnyActionListener, TextSea private final String catalog; private final String schema; private final String name; - private final boolean kindOfTable; + private final String tableType; - TableNode(String catalog, String schema, String name, boolean kindOfTable) { + TableNode(String catalog, String schema, String name, String tableType) { super(name); this.catalog = catalog; this.schema = schema; this.name = name; - this.kindOfTable = kindOfTable; + this.tableType = tableType; } @Override @@ -901,6 +915,9 @@ final class DatabaseInfoTree extends JTree implements AnyActionListener, TextSea @Override public boolean isLeaf() { + if (TABLE_TYPE_SEQUENCE.equals(tableType)) { + return true; + } return false; } @@ -921,10 +938,6 @@ final class DatabaseInfoTree extends JTree implements AnyActionListener, TextSea return name; } - boolean isKindOfTable() { - return kindOfTable; - } - } static final class ColumnNode extends InfoNode { -- 2.11.0