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.
- data/.document +5 -0
- data/.gitignore +8 -0
- data/LICENSE +20 -0
- data/README.rdoc +17 -0
- data/Rakefile +55 -16
- data/VERSION +1 -0
- data/examples/.gitignore +1 -0
- data/examples/JavaSwingExample01.java +41 -0
- data/examples/jdbc_example.rb +1 -2
- data/examples/notepad.rb +15 -17
- data/examples/nyanco_viewer/nekobean_LICENSE.txt +22 -0
- data/examples/rubeus_swing_example01.rb +0 -2
- data/examples/rubeus_swing_example01_with_class.rb +1 -3
- data/examples/rubeus_swing_jdbc_example01.rb +5 -0
- data/java/.gitignore +3 -0
- data/java/mvn_plugins.yml +57 -0
- data/java/pom.xml +30 -0
- data/java/src/main/java/jp/rubybizcommons/rubeus/extensions/javax/swing/table/DelegatableTableModel.java +54 -0
- data/java/src/main/java/jp/rubybizcommons/rubeus/extensions/javax/swing/table/ReadonlyableTableModel.java +24 -0
- data/lib/rubeus.rb +6 -4
- data/lib/rubeus/awt/attributes.rb +5 -5
- data/lib/rubeus/awt/event.rb +8 -8
- data/lib/rubeus/awt/nestable.rb +4 -4
- data/lib/rubeus/awt/setters.rb +1 -1
- data/lib/rubeus/component_loader.rb +12 -11
- data/lib/rubeus/extensions.rb +6 -6
- data/lib/rubeus/extensions/java.rb +1 -0
- data/lib/rubeus/extensions/java/awt/dimension.rb +1 -1
- data/lib/rubeus/extensions/java/lang.rb +5 -0
- data/lib/rubeus/extensions/java/lang/reflect.rb +4 -0
- data/lib/rubeus/extensions/java/lang/reflect/method.rb +23 -0
- data/lib/rubeus/extensions/java/sql/connection.rb +2 -2
- data/lib/rubeus/extensions/java/sql/database_meta_data.rb +9 -9
- data/lib/rubeus/extensions/java/sql/driver_manager.rb +80 -79
- data/lib/rubeus/extensions/java/sql/result_set.rb +6 -6
- data/lib/rubeus/extensions/java/sql/result_set_meta_data.rb +4 -4
- data/lib/rubeus/extensions/javax/swing/box_layout.rb +4 -4
- data/lib/rubeus/extensions/javax/swing/j_component.rb +1 -1
- data/lib/rubeus/extensions/javax/swing/j_editor_pane.rb +5 -0
- data/lib/rubeus/extensions/javax/swing/j_frame.rb +1 -1
- data/lib/rubeus/extensions/javax/swing/j_list.rb +5 -0
- data/lib/rubeus/extensions/javax/swing/j_scroll_pane.rb +1 -1
- data/lib/rubeus/extensions/javax/swing/j_split_pane.rb +1 -1
- data/lib/rubeus/extensions/javax/swing/j_table.rb +2 -2
- data/lib/rubeus/extensions/javax/swing/j_text_pane.rb +7 -0
- data/lib/rubeus/extensions/javax/swing/table/default_table_model.rb +10 -10
- data/lib/rubeus/extensions/javax/swing/timer.rb +3 -3
- data/lib/rubeus/jdbc.rb +2 -2
- data/lib/rubeus/jdbc/closeable_resource.rb +1 -1
- data/lib/rubeus/jdbc/column.rb +19 -14
- data/lib/rubeus/jdbc/foreign_key.rb +14 -9
- data/lib/rubeus/jdbc/index.rb +15 -10
- data/lib/rubeus/jdbc/meta_element.rb +8 -8
- data/lib/rubeus/jdbc/primary_key.rb +26 -7
- data/lib/rubeus/jdbc/result_set_column.rb +3 -3
- data/lib/rubeus/jdbc/table.rb +47 -36
- data/lib/rubeus/reflection.rb +17 -0
- data/lib/rubeus/swing.rb +1 -1
- data/lib/rubeus/util.rb +3 -0
- data/lib/rubeus/util/java_method_name.rb +31 -0
- data/lib/rubeus/util/name_access_array.rb +6 -4
- data/lib/rubeus/verboseable.rb +3 -3
- data/rmaven.yml +5 -0
- data/rubeus.gemspec +202 -0
- data/test/rubeus/extensions/java/awt/test_dimension.rb +47 -47
- data/test/rubeus/extensions/java/sql/test_database_meta_data.rb +86 -40
- data/test/rubeus/extensions/java/sql/test_driver_manager.rb +9 -2
- data/test/rubeus/extensions/java/sql/test_sql_helper.rb +4 -4
- data/test/rubeus/reflection/test_method_modifier.rb +107 -0
- data/test/rubeus/test_extensions.rb +30 -30
- data/test/rubeus_test.jar +0 -0
- data/test_jar/.classpath +7 -0
- data/test_jar/.gitignore +1 -0
- data/test_jar/.project +17 -0
- data/test_jar/mvn_plugins.yml +57 -0
- data/test_jar/pom.xml +25 -0
- data/test_jar/src/main/java/jp/rubybizcommons/rubeus/test/reflection/VariousFields.java +13 -0
- data/test_jar/src/main/java/jp/rubybizcommons/rubeus/test/reflection/VariousMethods.java +14 -0
- data/test_jar/src/test/java/jp/rubybizcommons/rubeus/test/AppTest.java +38 -0
- metadata +137 -47
- 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
|
@@ -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
|
@@ -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)
|
@@ -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
|
data/lib/rubeus/jdbc.rb
CHANGED
@@ -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"
|
data/lib/rubeus/jdbc/column.rb
CHANGED
@@ -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
|
data/lib/rubeus/jdbc/index.rb
CHANGED
@@ -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
|