rubeus 0.0.8-java → 0.0.9-java

Sign up to get free protection for your applications and to get access to all the features.
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