rubeus 0.0.8-java → 0.0.9-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. data/.document +5 -0
  2. data/.gitignore +8 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +17 -0
  5. data/Rakefile +55 -16
  6. data/VERSION +1 -0
  7. data/examples/.gitignore +1 -0
  8. data/examples/JavaSwingExample01.java +41 -0
  9. data/examples/jdbc_example.rb +1 -2
  10. data/examples/notepad.rb +15 -17
  11. data/examples/nyanco_viewer/nekobean_LICENSE.txt +22 -0
  12. data/examples/rubeus_swing_example01.rb +0 -2
  13. data/examples/rubeus_swing_example01_with_class.rb +1 -3
  14. data/examples/rubeus_swing_jdbc_example01.rb +5 -0
  15. data/java/.gitignore +3 -0
  16. data/java/mvn_plugins.yml +57 -0
  17. data/java/pom.xml +30 -0
  18. data/java/src/main/java/jp/rubybizcommons/rubeus/extensions/javax/swing/table/DelegatableTableModel.java +54 -0
  19. data/java/src/main/java/jp/rubybizcommons/rubeus/extensions/javax/swing/table/ReadonlyableTableModel.java +24 -0
  20. data/lib/rubeus.rb +6 -4
  21. data/lib/rubeus/awt/attributes.rb +5 -5
  22. data/lib/rubeus/awt/event.rb +8 -8
  23. data/lib/rubeus/awt/nestable.rb +4 -4
  24. data/lib/rubeus/awt/setters.rb +1 -1
  25. data/lib/rubeus/component_loader.rb +12 -11
  26. data/lib/rubeus/extensions.rb +6 -6
  27. data/lib/rubeus/extensions/java.rb +1 -0
  28. data/lib/rubeus/extensions/java/awt/dimension.rb +1 -1
  29. data/lib/rubeus/extensions/java/lang.rb +5 -0
  30. data/lib/rubeus/extensions/java/lang/reflect.rb +4 -0
  31. data/lib/rubeus/extensions/java/lang/reflect/method.rb +23 -0
  32. data/lib/rubeus/extensions/java/sql/connection.rb +2 -2
  33. data/lib/rubeus/extensions/java/sql/database_meta_data.rb +9 -9
  34. data/lib/rubeus/extensions/java/sql/driver_manager.rb +80 -79
  35. data/lib/rubeus/extensions/java/sql/result_set.rb +6 -6
  36. data/lib/rubeus/extensions/java/sql/result_set_meta_data.rb +4 -4
  37. data/lib/rubeus/extensions/javax/swing/box_layout.rb +4 -4
  38. data/lib/rubeus/extensions/javax/swing/j_component.rb +1 -1
  39. data/lib/rubeus/extensions/javax/swing/j_editor_pane.rb +5 -0
  40. data/lib/rubeus/extensions/javax/swing/j_frame.rb +1 -1
  41. data/lib/rubeus/extensions/javax/swing/j_list.rb +5 -0
  42. data/lib/rubeus/extensions/javax/swing/j_scroll_pane.rb +1 -1
  43. data/lib/rubeus/extensions/javax/swing/j_split_pane.rb +1 -1
  44. data/lib/rubeus/extensions/javax/swing/j_table.rb +2 -2
  45. data/lib/rubeus/extensions/javax/swing/j_text_pane.rb +7 -0
  46. data/lib/rubeus/extensions/javax/swing/table/default_table_model.rb +10 -10
  47. data/lib/rubeus/extensions/javax/swing/timer.rb +3 -3
  48. data/lib/rubeus/jdbc.rb +2 -2
  49. data/lib/rubeus/jdbc/closeable_resource.rb +1 -1
  50. data/lib/rubeus/jdbc/column.rb +19 -14
  51. data/lib/rubeus/jdbc/foreign_key.rb +14 -9
  52. data/lib/rubeus/jdbc/index.rb +15 -10
  53. data/lib/rubeus/jdbc/meta_element.rb +8 -8
  54. data/lib/rubeus/jdbc/primary_key.rb +26 -7
  55. data/lib/rubeus/jdbc/result_set_column.rb +3 -3
  56. data/lib/rubeus/jdbc/table.rb +47 -36
  57. data/lib/rubeus/reflection.rb +17 -0
  58. data/lib/rubeus/swing.rb +1 -1
  59. data/lib/rubeus/util.rb +3 -0
  60. data/lib/rubeus/util/java_method_name.rb +31 -0
  61. data/lib/rubeus/util/name_access_array.rb +6 -4
  62. data/lib/rubeus/verboseable.rb +3 -3
  63. data/rmaven.yml +5 -0
  64. data/rubeus.gemspec +202 -0
  65. data/test/rubeus/extensions/java/awt/test_dimension.rb +47 -47
  66. data/test/rubeus/extensions/java/sql/test_database_meta_data.rb +86 -40
  67. data/test/rubeus/extensions/java/sql/test_driver_manager.rb +9 -2
  68. data/test/rubeus/extensions/java/sql/test_sql_helper.rb +4 -4
  69. data/test/rubeus/reflection/test_method_modifier.rb +107 -0
  70. data/test/rubeus/test_extensions.rb +30 -30
  71. data/test/rubeus_test.jar +0 -0
  72. data/test_jar/.classpath +7 -0
  73. data/test_jar/.gitignore +1 -0
  74. data/test_jar/.project +17 -0
  75. data/test_jar/mvn_plugins.yml +57 -0
  76. data/test_jar/pom.xml +25 -0
  77. data/test_jar/src/main/java/jp/rubybizcommons/rubeus/test/reflection/VariousFields.java +13 -0
  78. data/test_jar/src/main/java/jp/rubybizcommons/rubeus/test/reflection/VariousMethods.java +14 -0
  79. data/test_jar/src/test/java/jp/rubybizcommons/rubeus/test/AppTest.java +38 -0
  80. metadata +137 -47
  81. data/test/test_all.rb +0 -2
@@ -3,27 +3,27 @@ Rubeus::Jdbc.depend_on("ResultSetMetaData")
3
3
  module Rubeus::Extensions::Java::Sql
4
4
  module ResultSet
5
5
  include Enumerable
6
-
6
+
7
7
  def each(&block)
8
8
  return unless block_given?
9
9
  yield(self) while self.next
10
10
  end
11
-
11
+
12
12
  def each_array
13
13
  each{|rs| yield(rs.to_a)}
14
14
  end
15
-
15
+
16
16
  def each_hash
17
17
  each{|rs| yield(rs.to_hash)}
18
18
  end
19
-
19
+
20
20
  def to_a(default_value = nil)
21
21
  meta_data.map{|i| get_object(i) || default_value}
22
22
  end
23
-
23
+
24
24
  def to_hash
25
25
  column_names = meta_data.column_names
26
- meta_data.inject({}) do |dest, i|
26
+ meta_data.inject({}) do |dest, i|
27
27
  dest[column_names[i]] = get_object(i)
28
28
  dest
29
29
  end
@@ -1,17 +1,17 @@
1
1
  module Rubeus::Extensions::Java::Sql
2
2
  module ResultSetMetaData
3
3
  include Enumerable
4
-
4
+
5
5
  def each(&block)
6
6
  return unless block_given?
7
7
  @column_count ||= get_column_count
8
8
  (1..@column_count).each(&block)
9
9
  end
10
-
10
+
11
11
  def columns
12
12
  @columns ||= build_columns
13
13
  end
14
-
14
+
15
15
  def column_names
16
16
  @column_names ||= columns.inject({}) do |dest, column|
17
17
  dest[column.index] = column.name
@@ -22,7 +22,7 @@ module Rubeus::Extensions::Java::Sql
22
22
  def column_index(i)
23
23
  i
24
24
  end
25
-
25
+
26
26
  private
27
27
  def build_columns
28
28
  result = []
@@ -2,12 +2,12 @@ module Rubeus::Extensions::Javax::Swing
2
2
  module BoxLayout
3
3
  def self.included(base)
4
4
  base.extend(ClassMethods)
5
- base.instance_eval do
5
+ base.instance_eval do
6
6
  alias :new_without_nestable :new
7
7
  alias :new :new_with_nestable
8
8
  end
9
9
  end
10
-
10
+
11
11
  module ClassMethods
12
12
  def new_with_nestable(*args, &block)
13
13
  if args.length == 1
@@ -15,12 +15,12 @@ module Rubeus::Extensions::Javax::Swing
15
15
  raise ArgumentError, "No container! you must specify a Container and an axis" unless container
16
16
  args.unshift(container.respond_to?(:content_pane) ? container.content_pane : container)
17
17
  end
18
-
18
+
19
19
  unless args.last.is_a?(Integer)
20
20
  value = args.pop
21
21
  args << const_get(value.to_s)
22
22
  end
23
-
23
+
24
24
  new_without_nestable(*args, &block)
25
25
  end
26
26
  end
@@ -2,7 +2,7 @@ Rubeus::Awt.depend_on("Container", "Dimension")
2
2
 
3
3
  module Rubeus::Extensions::Javax::Swing
4
4
  module JComponent
5
-
5
+
6
6
  def self.included(base)
7
7
  base.module_eval do
8
8
  alias_method :set_preferred_size, :set_preferred_size_rubeus
@@ -0,0 +1,5 @@
1
+ JavaUtilities.extend_proxy("javax.swing.JEditorPane") do
2
+ def self.default_event_type
3
+ return :hyperlink
4
+ end
5
+ end
@@ -18,7 +18,7 @@ module Rubeus::Extensions::Javax::Swing
18
18
 
19
19
  if ENV_JAVA["java.specification.version"] == "1.6"
20
20
  def set_size(*args)
21
- java_send :setSize, [java.awt.Dimension],
21
+ java_send :setSize, [java.awt.Dimension],
22
22
  Rubeus::Awt::Dimension.create(*args)
23
23
  end
24
24
  end
@@ -0,0 +1,5 @@
1
+ JavaUtilities.extend_proxy("javax.swing.JList") do
2
+ def self.default_event_type
3
+ return :list_selection
4
+ end
5
+ end
@@ -1,6 +1,6 @@
1
1
  JavaUtilities.extend_proxy('javax.swing.JScrollPane') do
2
2
  perform_as_container
3
-
3
+
4
4
  def self.add_new_component_to(object, &block)
5
5
  Rubeus::Awt::Nestable::Context.add_new_component_to(object.viewport, :set_view, object, &block)
6
6
  end
@@ -8,7 +8,7 @@ module Rubeus::Extensions::Javax::Swing
8
8
  alias :new :new_with_rubeus
9
9
  end
10
10
  end
11
-
11
+
12
12
  module ClassMethods
13
13
  def new_with_rubeus(new_orientation, *args, &block)
14
14
  if new_orientation.is_a?(Symbol)
@@ -19,11 +19,11 @@ module Rubeus::Extensions::Javax::Swing
19
19
  alias_method :model=, :set_model
20
20
  end
21
21
  end
22
-
22
+
23
23
  def get_model_with_rubeus
24
24
  @model || get_model_without_rubeus
25
25
  end
26
-
26
+
27
27
  def set_model_with_rubeus(model, *args)
28
28
  unless model.is_a?(Rubeus::Swing::TableModel)
29
29
  model = Rubeus::Swing::DefaultTableModel.new(model, *args)
@@ -0,0 +1,7 @@
1
+ Rubeus::Swing.depend_on('JEditorPane')
2
+
3
+ JavaUtilities.extend_proxy("javax.swing.JTextPane") do
4
+ def self.default_event_type
5
+ return :key, :pressed
6
+ end
7
+ end
@@ -11,12 +11,12 @@ module Rubeus::Extensions::Javax::Swing::Table
11
11
  alias_method :insert_row, :insert_row_with_rubeus
12
12
  end
13
13
  base.extend(ClassMethods)
14
- base.instance_eval do
14
+ base.instance_eval do
15
15
  alias :new_without_rubeus :new
16
16
  alias :new :new_with_rubeus
17
17
  end
18
18
  end
19
-
19
+
20
20
  module ClassMethods
21
21
  def vectorize_if_array(value)
22
22
  value.is_a?(Array) ? java.util.Vector.new(value) : value
@@ -45,17 +45,17 @@ module Rubeus::Extensions::Javax::Swing::Table
45
45
  column_names = vectorize_if_array(cols)
46
46
  return new_without_rubeus(data, column_names)
47
47
  end
48
- elsif (args.length == 2) and (args.first.class.name == 'REXML::Document' and args.last.is_a?(Hash))
48
+ elsif (args.length == 2) and (args.first.class.name == 'REXML::Document' and args.last.is_a?(Hash))
49
49
  result = new_without_rubeus(vectorize_if_array(args.last[:column_paths]), 0)
50
50
  result.load_from_xml(*args)
51
51
  return result
52
52
  end
53
- return new_without_rubeus(*args)
53
+ return new_without_rubeus(*args)
54
54
  end
55
55
  end
56
56
 
57
57
  attr_accessor :readonly
58
-
58
+
59
59
  def isCellEditable(row, col)
60
60
  !readonly
61
61
  end
@@ -63,19 +63,19 @@ module Rubeus::Extensions::Javax::Swing::Table
63
63
  def vectorize_if_array(value)
64
64
  self.class.vectorize_if_array(value)
65
65
  end
66
-
66
+
67
67
  def add_row_with_rubeus(row)
68
68
  add_row_without_rubeus(vectorize_if_array(row))
69
69
  end
70
-
70
+
71
71
  def insert_row_with_rubeus(index, row)
72
72
  insert_row_without_rubeus(index, vectorize_if_array(row))
73
73
  end
74
-
74
+
75
75
  def load_from_xml(rexml_doc, options = {:refresh_columns => false})
76
76
  row_path = options[:row_path]
77
77
  col_paths = options[:column_paths]
78
- if row_path.nil?
78
+ if row_path.nil?
79
79
  raise ArgumentError, "require :row_path but options was #{options}"
80
80
  end
81
81
  unless col_paths
@@ -90,7 +90,7 @@ module Rubeus::Extensions::Javax::Swing::Table
90
90
  end
91
91
  self.row_count = 0
92
92
  rexml_doc.elements.each(row_path) do |row|
93
- values = col_paths.map do |col_path|
93
+ values = col_paths.map do |col_path|
94
94
  element = row.elements[col_path]
95
95
  element ? element.text :
96
96
  options[:ignore_unexist_column] ? nil :
@@ -7,17 +7,17 @@ module Rubeus::Extensions::Javax::Swing
7
7
  alias :new :new_with_rubeus
8
8
  end
9
9
  end
10
-
10
+
11
11
  module ClassMethods
12
12
  def new_with_rubeus(interval, &block)
13
13
  # Create ActionListener implement class
14
14
  mod = Module.new do
15
15
  define_method("actionPerformed", &block)
16
16
  end
17
-
17
+
18
18
  obj = Object.new
19
19
  obj.extend(mod)
20
-
20
+
21
21
  # Use original constructor
22
22
  new_without_rubeus(interval, obj)
23
23
  end
@@ -12,11 +12,11 @@ module Rubeus
12
12
  'ResultSetMetaData' => 'java.sql',
13
13
  'Statement' => 'java.sql'
14
14
  )
15
-
15
+
16
16
  def self.irb
17
17
  self.extend_with
18
18
  end
19
-
19
+
20
20
  # auto_load :MetaElement, "rubeus/jdbc/meta_element"
21
21
  # auto_load :Table, "rubeus/jdbc/table"
22
22
  # auto_load :Column, "rubeus/jdbc/column"
@@ -3,7 +3,7 @@ module Rubeus::Jdbc
3
3
  def with_close(resource)
4
4
  if block_given?
5
5
  begin
6
- yield(resource)
6
+ yield(resource)
7
7
  ensure
8
8
  resource.close
9
9
  end
@@ -3,7 +3,7 @@ require 'rubeus/jdbc/meta_element'
3
3
  module Rubeus::Jdbc
4
4
  class Column < TableElement
5
5
  include FullyQualifiedNamed
6
-
6
+
7
7
  # 1. TABLE_CAT String => テーブルカタログ (null の可能性がある)
8
8
  # 2. TABLE_SCHEM String => テーブルスキーマ (null の可能性がある)
9
9
  # 3. TABLE_NAME String => テーブル名
@@ -17,7 +17,7 @@ module Rubeus::Jdbc
17
17
  # 11. NULLABLE int => NULL は許されるか
18
18
  # * columnNoNulls - NULL 値を許さない可能性がある
19
19
  # * columnNullable - 必ず NULL 値を許す
20
- # * columnNullableUnknown - NULL 値を許すかどうかは不明
20
+ # * columnNullableUnknown - NULL 値を許すかどうかは不明
21
21
  # 12. REMARKS String => コメント記述列 (null の可能性がある)
22
22
  # 13. COLUMN_DEF String => デフォルト値 (null の可能性がある)
23
23
  # 14. SQL_DATA_TYPE int => 未使用
@@ -28,35 +28,40 @@ module Rubeus::Jdbc
28
28
  # 19. SCOPE_CATLOG String => 参照属性のスコープであるテーブルのカタログ (DATA_TYPE が REF でない場合は null)
29
29
  # 20. SCOPE_SCHEMA String => 参照属性のスコープであるテーブルのスキーマ (DATA_TYPE が REF でない場合は null)
30
30
  # 21. SCOPE_TABLE String => 参照属性のスコープであるテーブル名 (DATA_TYPE が REF でない場合は null)
31
- # 22. SOURCE_DATA_TYPE short => 個別の型またはユーザ生成 Ref 型、java.sql.Types の SQL 型のソースの型 (DATA_TYPE が DISTINCT またはユーザ生成 REF でない場合は null)
32
- #
31
+ # 22. SOURCE_DATA_TYPE short => 個別の型またはユーザ生成 Ref 型、java.sql.Types の SQL 型のソースの型 (DATA_TYPE が DISTINCT またはユーザ生成 REF でない場合は null)
32
+ #
33
33
  # see also:
34
34
  # http://java.sun.com/javase/ja/6/docs/ja/api/java/sql/DatabaseMetaData.html#getColumns(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String)
35
- #
35
+ #
36
36
  attr_accessor :column_name, :data_type, :type_name, :column_size,
37
37
  :buffer_length, :decimal_digits, :num_prec_radix,
38
38
  :nullable, :remarks, :column_def, :sql_data_type,
39
39
  :sql_datetime_sub, :char_octet_length,
40
- :ordinal_position, :is_nullable,
40
+ :ordinal_position, :is_nullable,
41
41
  :scope_catlog, :scope_schema, :scope_table, :scope_data_type
42
42
 
43
43
  alias_method :size, :column_size
44
-
44
+
45
+ def inspect
46
+ "#<#{self.class.name} #{self.name} #{type_name}(#{size}) #{nullable? ? 'NULL' : 'NOT NULL'}>"
47
+ end
48
+
49
+
45
50
  def name
46
51
  column_name.send(options[:name_case] || :to_s)
47
52
  end
48
-
53
+
49
54
  def jdbc_type
50
55
  @column_type ||= (TYPE_ID_TO_NAMES[data_type] || type_name || '')
51
56
  end
52
-
57
+
53
58
  def rails_type
54
59
  @rails_type ||= (
55
60
  (table.primary_key != self.name) ? JDBC_TYPE_TO_RAILS_TYPE[jdbc_type] :
56
61
  (/^id$/ =~ self.name) ? nil : :primary_key
57
62
  )
58
63
  end
59
-
64
+
60
65
  def rails_type=(value)
61
66
  @rails_type = value
62
67
  end
@@ -64,20 +69,20 @@ module Rubeus::Jdbc
64
69
  attr_accessor :rails_ignored
65
70
  attr_accessor :rails_name, :rails_options
66
71
  attr_reader :name_changed?
67
-
72
+
68
73
  def nullable?
69
74
  @_nullable ||= (is_nullable != 'NO')
70
75
  end
71
-
76
+
72
77
  def primary_key_index
73
78
  @primary_key_index ||= table.primary_key_names.index(self.name)
74
79
  end
75
-
80
+
76
81
  def primary_key?
77
82
  !!primary_key_index
78
83
  end
79
84
  alias_method :pk?, :primary_key?
80
-
85
+
81
86
  def default
82
87
  self.column_def.nil? ? nil :
83
88
  /^NULL$/i =~ self.column_def.to_s ? nil : self.column_def
@@ -15,20 +15,20 @@ module Rubeus::Jdbc
15
15
  # * importedKeyCascade - 主キーの更新に合致するように、インポートされたキーを変更する
16
16
  # * importedKeySetNull - インポートされたキーの主キーが更新されたら、NULL に変更する
17
17
  # * importedKeySetDefault - インポートされたキーの主キーが更新されたら、デフォルト値に変更する
18
- # * importedKeyRestrict - importedKeyNoAction と同じ (ODBC 2.x との互換性のため)
18
+ # * importedKeyRestrict - importedKeyNoAction と同じ (ODBC 2.x との互換性のため)
19
19
  # 11. DELETE_RULE short => 主キーが削除されると、外部キーに起こる内容は次のとおりである
20
20
  # * importedKeyNoAction - 主キーがインポートされたら、削除できない
21
21
  # * importedKeyCascade - 削除されたキーをインポートする行を、削除する
22
22
  # * importedKeySetNull - インポートされたキーの主キーが削除されたら、NULL に変更する
23
23
  # * importedKeyRestrict - importedKeyNoAction と同じ (ODBC 2.x との互換性のため)
24
- # * importedKeySetDefault - インポートされたキーの主キーが削除されたら、デフォルト値に変更する
24
+ # * importedKeySetDefault - インポートされたキーの主キーが削除されたら、デフォルト値に変更する
25
25
  # 12. FK_NAME String => 外部キー名 (null の可能性がある)
26
26
  # 13. PK_NAME String => 主キー名 (null の可能性がある)
27
27
  # 14. DEFERRABILITY short => 外部キーの制限の評価はコミットまで延期できる
28
28
  # * importedKeyInitiallyDeferred - 定義については SQL92 を参照
29
29
  # * importedKeyInitiallyImmediate - 定義については SQL92 を参照
30
- # * importedKeyNotDeferrable - 定義については SQL92 を参照
31
- #
30
+ # * importedKeyNotDeferrable - 定義については SQL92 を参照
31
+ #
32
32
  # see also:
33
33
  # http://java.sun.com/javase/ja/6/docs/ja/api/java/sql/DatabaseMetaData.html#getExportedKeys(java.lang.String,%20java.lang.String,%20java.lang.String)
34
34
  # http://java.sun.com/javase/ja/6/docs/ja/api/java/sql/DatabaseMetaData.html#getImportedKeys(java.lang.String,%20java.lang.String,%20java.lang.String)
@@ -40,7 +40,12 @@ module Rubeus::Jdbc
40
40
 
41
41
  attr_accessor :fkcolumn_names, :pkcolumn_names
42
42
  attr_accessor :fktable, :pktable
43
-
43
+
44
+ def inspect
45
+ "#<#{self.class.name} #{name} #{fktable.name}(%s)=>#{pktable.name}(%s)>" %
46
+ [fkcolumn_names.join(','), pkcolumn_names.join(',')]
47
+ end
48
+
44
49
  def name
45
50
  fk_name.send(options[:name_case] || :to_s)
46
51
  end
@@ -48,19 +53,19 @@ module Rubeus::Jdbc
48
53
  def pretty_print_instance_variables
49
54
  super - [:@fktable, :@pktable]
50
55
  end
51
-
56
+
52
57
  def length
53
58
  pkcolumn_names.length
54
59
  end
55
60
  alias_method :size, :length
56
-
61
+
57
62
  def fkcolumns
58
63
  @fkcolumns ||= fkcolumn_names.map{|name| fktable.columns[name]}
59
64
  end
60
-
65
+
61
66
  def pkcolumns
62
67
  @pkcolumns ||= pkcolumn_names.map{|name| pktable.columns[name]}
63
68
  end
64
-
69
+
65
70
  end
66
71
  end
@@ -3,7 +3,7 @@ require 'rubeus/jdbc/meta_element'
3
3
  module Rubeus::Jdbc
4
4
  class Index < TableElement
5
5
  include FullyQualifiedNamed
6
-
6
+
7
7
  # 1. TABLE_CAT String => テーブルカタログ (null の可能性がある)
8
8
  # 2. TABLE_SCHEM String => テーブルスキーマ (null の可能性がある)
9
9
  # 3. TABLE_NAME String => テーブル名
@@ -14,27 +14,32 @@ module Rubeus::Jdbc
14
14
  # * tableIndexStatistic - テーブルのインデックスの記述に連動して返されるテーブルの統計情報を識別する
15
15
  # * tableIndexClustered - クラスタ化されたインデックス
16
16
  # * tableIndexHashed - ハッシュ化されたインデックス
17
- # * tableIndexOther - インデックスのその他のスタイル
17
+ # * tableIndexOther - インデックスのその他のスタイル
18
18
  # 8. ORDINAL_POSITION short => インデックス中の列シーケンス。TYPE が tableIndexStatistic の場合は 0
19
19
  # 9. COLUMN_NAME String => 列名。TYPE が tableIndexStatistic の場合は null
20
20
  # 10. ASC_OR_DESC String => 列ソートシーケンス、「A」=> 昇順、「D」=> 降順、ソートシーケンスがサポートされていない場合は、null の可能性がある。TYPE が tableIndexStatistic の場合は null
21
21
  # 11. CARDINALITY int => TYPE が tableIndexStatistic の場合、テーブル中の列数。そうでない場合は、インデックス中の一意の値の数
22
22
  # 12. PAGES int => TYPE が tableIndexStatistic の場合、テーブルで使用されるページ数。そうでない場合は、現在のインデックスで使用されるページ数
23
- # 13. FILTER_CONDITION String => もしあれば、フィルタ条件 (null の可能性がある)
24
- #
23
+ # 13. FILTER_CONDITION String => もしあれば、フィルタ条件 (null の可能性がある)
24
+ #
25
25
  # see also:
26
26
  # http://java.sun.com/javase/ja/6/docs/ja/api/java/sql/DatabaseMetaData.html#getIndexInfo(java.lang.String,%20java.lang.String,%20java.lang.String,%20boolean,%20boolean)
27
- #
27
+ #
28
28
  RECORD_UNIQUE_ATTRS = [:table_cat, :table_schem, :table_name, :non_unique, :index_qualifier, :index_name]
29
- ATTR_NAMES = [:table_cat, :table_schem, :table_name, :non_unique, :index_qualifier, :index_name, :type,
30
- # :orinal_position, :column_name, :asc_or_desc, :cardinality,
29
+ ATTR_NAMES = [:table_cat, :table_schem, :table_name, :non_unique, :index_qualifier, :index_name, :type,
30
+ # :orinal_position, :column_name, :asc_or_desc, :cardinality,
31
31
  :pages, :filter_condition]
32
32
  attr_accessor(*(ATTR_NAMES - [:table_cat, :table_schem, :table_name]))
33
33
 
34
+ def inspect
35
+ "#<#{self.class.name} #{table.name}.#{name}(%s)>" %
36
+ keys.map{|k| k.name + (k.desc? ? " DESC" : '')}.join(',')
37
+ end
38
+
34
39
  def name
35
40
  index_name.send(options[:name_case] || :to_s)
36
41
  end
37
-
42
+
38
43
  def keys
39
44
  @key ||= Rubeus::Util::NameAccessArray.new
40
45
  end
@@ -56,11 +61,11 @@ module Rubeus::Jdbc
56
61
  def name
57
62
  column_name.send(options[:name_case] || :to_s)
58
63
  end
59
-
64
+
60
65
  def pretty_print_instance_variables
61
66
  super - [:@index]
62
67
  end
63
-
68
+
64
69
  def desc?; asc_or_desc == 'D' end
65
70
  def asc?; !desc? end
66
71
  end