コミットメタ情報

リビジョン6449f9e4250a0ac0a9bfd0c4a80da15c9e690fa6 (tree)
日時2014-11-14 22:32:13
作者argius <argius.net@gmai...>
コミッターargius

ログメッセージ

[#34405] Define and use default table types not only getTableTypes (DatabaseInfoTree)

変更サマリ

差分

--- 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
4444 private static final Logger log = Logger.getLogger(DatabaseInfoTree.class);
4545 private static final ResourceManager res = ResourceManager.getInstance(DatabaseInfoTree.class);
4646
47+ private static final String TABLE_TYPE_TABLE = "TABLE";
48+ private static final String TABLE_TYPE_VIEW = "VIEW";
49+ private static final String TABLE_TYPE_INDEX = "INDEX";
50+ private static final String TABLE_TYPE_SEQUENCE = "SEQUENCE";
51+ private static final List<String> DEFAULT_TABLE_TYPES = //
52+ Arrays.asList(TABLE_TYPE_TABLE, TABLE_TYPE_VIEW, TABLE_TYPE_INDEX, TABLE_TYPE_SEQUENCE);
53+
4754 static volatile boolean showColumnNumber;
4855
4956 private Connector currentConnector;
@@ -710,20 +717,28 @@ final class DatabaseInfoTree extends JTree implements AnyActionListener, TextSea
710717 static List<TableTypeNode> getTableTypeNodes(DatabaseMetaData dbmeta,
711718 String catalog,
712719 String schema) throws SQLException {
713- List<TableTypeNode> a = new ArrayList<TableTypeNode>();
714- ResultSet rs = dbmeta.getTableTypes();
720+ List<String> tableTypes = new ArrayList<String>(DEFAULT_TABLE_TYPES);
715721 try {
716- while (rs.next()) {
717- TableTypeNode typeNode = new TableTypeNode(catalog, schema, rs.getString(1));
718- if (typeNode.hasItems(dbmeta)) {
719- a.add(typeNode);
722+ ResultSet rs = dbmeta.getTableTypes();
723+ try {
724+ while (rs.next()) {
725+ final String tableType = rs.getString(1);
726+ if (!DEFAULT_TABLE_TYPES.contains(tableType)) {
727+ tableTypes.add(tableType);
728+ }
720729 }
730+ } finally {
731+ rs.close();
721732 }
722- } finally {
723- rs.close();
733+ } catch (SQLException ex) {
734+ log.warn("getTableTypes at getTableTypeNodes", ex);
724735 }
725- if (a.isEmpty()) {
726- a.add(new TableTypeNode(catalog, schema, "TABLE"));
736+ List<TableTypeNode> a = new ArrayList<TableTypeNode>();
737+ for (final String tableType : tableTypes) {
738+ TableTypeNode typeNode = new TableTypeNode(catalog, schema, tableType);
739+ if (typeNode.hasItems(dbmeta)) {
740+ a.add(typeNode);
741+ }
727742 }
728743 return a;
729744 }
@@ -837,8 +852,7 @@ final class DatabaseInfoTree extends JTree implements AnyActionListener, TextSea
837852 while (rs.next()) {
838853 final String table = rs.getString(3);
839854 final String type = rs.getString(4);
840- final boolean kindOfTable = type.matches("TABLE|VIEW|SYNONYM");
841- a.add(new TableNode(catalog, schema, table, kindOfTable));
855+ a.add(new TableNode(catalog, schema, table, type));
842856 }
843857 } finally {
844858 rs.close();
@@ -871,14 +885,14 @@ final class DatabaseInfoTree extends JTree implements AnyActionListener, TextSea
871885 private final String catalog;
872886 private final String schema;
873887 private final String name;
874- private final boolean kindOfTable;
888+ private final String tableType;
875889
876- TableNode(String catalog, String schema, String name, boolean kindOfTable) {
890+ TableNode(String catalog, String schema, String name, String tableType) {
877891 super(name);
878892 this.catalog = catalog;
879893 this.schema = schema;
880894 this.name = name;
881- this.kindOfTable = kindOfTable;
895+ this.tableType = tableType;
882896 }
883897
884898 @Override
@@ -901,6 +915,9 @@ final class DatabaseInfoTree extends JTree implements AnyActionListener, TextSea
901915
902916 @Override
903917 public boolean isLeaf() {
918+ if (TABLE_TYPE_SEQUENCE.equals(tableType)) {
919+ return true;
920+ }
904921 return false;
905922 }
906923
@@ -921,10 +938,6 @@ final class DatabaseInfoTree extends JTree implements AnyActionListener, TextSea
921938 return name;
922939 }
923940
924- boolean isKindOfTable() {
925- return kindOfTable;
926- }
927-
928941 }
929942
930943 static final class ColumnNode extends InfoNode {
旧リポジトリブラウザで表示