hypersonic 1.0
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.
- data/lib/Hypersonic.rb +225 -0
- data/lib/hsqldb.jar +0 -0
- metadata +46 -0
data/lib/Hypersonic.rb
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
require 'yajb/jbridge'
|
|
2
|
+
include JavaBridge
|
|
3
|
+
|
|
4
|
+
class Hypersonic
|
|
5
|
+
|
|
6
|
+
jimport "java.sql.*"
|
|
7
|
+
jimport "org.hsqldb.*"
|
|
8
|
+
|
|
9
|
+
def initialize
|
|
10
|
+
class_instance = jstatic Class
|
|
11
|
+
class_instance.forName("org.hsqldb.jdbcDriver" )
|
|
12
|
+
|
|
13
|
+
@driver_manager = jstatic :DriverManager
|
|
14
|
+
# lets reset these variables to ensure there's not leftover data
|
|
15
|
+
@conn = nil
|
|
16
|
+
@statement = nil
|
|
17
|
+
@rs = nil
|
|
18
|
+
@rows_affected = 0
|
|
19
|
+
@sql_data_types = nil
|
|
20
|
+
@column_names = nil
|
|
21
|
+
@java_data_types = nil
|
|
22
|
+
@data_sizes = nil
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def connect (connect_string = nil, user=nil, password=nil)
|
|
26
|
+
# I've established some sane defaults, mainly for testing
|
|
27
|
+
if(connect_string == nil) then
|
|
28
|
+
connect_string = "jdbc:hsqldb:file:testdb"
|
|
29
|
+
end
|
|
30
|
+
if(user == nil) then
|
|
31
|
+
user = "sa"
|
|
32
|
+
end
|
|
33
|
+
if(password == nil) then
|
|
34
|
+
password = ""
|
|
35
|
+
end
|
|
36
|
+
@conn = @driver_manager.getConnection(connect_string, user, password)
|
|
37
|
+
@statement = @conn.createStatement
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def execute_update (sql)
|
|
41
|
+
# use this for insert, update, drop, and insert
|
|
42
|
+
@rows_affected = @statement.executeUpdate(sql)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def execute_query (sql)
|
|
46
|
+
# use this for insert, update, drop, and insert
|
|
47
|
+
@rs = @statement.executeQuery(sql)
|
|
48
|
+
ret_val = convert_result_set
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def disconnect
|
|
52
|
+
if(@conn) then
|
|
53
|
+
@conn.close
|
|
54
|
+
end
|
|
55
|
+
@driver_manager = nil
|
|
56
|
+
@conn=nil
|
|
57
|
+
@statement=nil
|
|
58
|
+
@rs=nil
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def convert_result_set
|
|
62
|
+
convert_this_result_set @rs
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def convert_this_result_set rs
|
|
66
|
+
meta = rs.getMetaData
|
|
67
|
+
column_count = meta.getColumnCount
|
|
68
|
+
# question: can I ask the metadata for the row count?
|
|
69
|
+
row_count = 0
|
|
70
|
+
ruby_result_set = []
|
|
71
|
+
@sql_data_types = []
|
|
72
|
+
@column_names = []
|
|
73
|
+
@java_data_types = []
|
|
74
|
+
@data_sizes = []
|
|
75
|
+
|
|
76
|
+
while(rs.next) do
|
|
77
|
+
row_count = row_count + 1
|
|
78
|
+
x = 0
|
|
79
|
+
this_row = []
|
|
80
|
+
while( x < column_count ) do
|
|
81
|
+
x = x + 1
|
|
82
|
+
o = rs.getObject(x)
|
|
83
|
+
|
|
84
|
+
# should I convert this to a string or convert it properly here?
|
|
85
|
+
# I think that ActiveRecord does it's own conversion in the adapter
|
|
86
|
+
# Double check this... -jrr
|
|
87
|
+
|
|
88
|
+
value = o.to_s
|
|
89
|
+
name = meta.getColumnName(x)
|
|
90
|
+
this_row.push(value)
|
|
91
|
+
|
|
92
|
+
# I only want to extract data types and column names on the first row
|
|
93
|
+
if(@sql_data_types.length < column_count) then
|
|
94
|
+
|
|
95
|
+
int_type = meta.getColumnType(x)
|
|
96
|
+
data_type = convert_sql_data_type_to_string(int_type)
|
|
97
|
+
@sql_data_types.push(data_type)
|
|
98
|
+
|
|
99
|
+
@java_data_types.push(meta.getColumnClassName(x))
|
|
100
|
+
@column_names.push(meta.getColumnName(x))
|
|
101
|
+
@data_sizes.push(meta.getColumnDisplaySize(x))
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
#puts this_row
|
|
105
|
+
ruby_result_set.push(this_row)
|
|
106
|
+
end
|
|
107
|
+
ruby_result_set
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def get_column_name (index)
|
|
111
|
+
@rs.getColumnName(index)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def get_column_type_name(index)
|
|
115
|
+
@rs.getColumnTypeName(index)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def get_rows_affected
|
|
119
|
+
@rows_affected
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def get_table_name
|
|
123
|
+
if(@rs) then
|
|
124
|
+
@rs.getMetaData.getTableName
|
|
125
|
+
else
|
|
126
|
+
nil
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def tables
|
|
131
|
+
table_list = @conn.getMetaData.getTables(nil, nil, nil, ["TABLE"])
|
|
132
|
+
rs = convert_this_result_set table_list
|
|
133
|
+
rs[0]
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def current_database
|
|
137
|
+
cdb = @rs.getMetaData.getTableName(1)
|
|
138
|
+
cdb
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def java_data_types
|
|
142
|
+
@java_data_types
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def data_types
|
|
146
|
+
# return the list of data types contained in the current result set
|
|
147
|
+
@sql_data_types
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def column_names
|
|
151
|
+
@column_names
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def data_sizes
|
|
155
|
+
@data_sizes
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def convert_sql_data_type_to_string int_type
|
|
159
|
+
# these data types are SQL type from java.sql.Types
|
|
160
|
+
type = jstatic "java.sql.Types"
|
|
161
|
+
ret_val = nil
|
|
162
|
+
|
|
163
|
+
case int_type
|
|
164
|
+
when type.ARRAY
|
|
165
|
+
ret_val = "ARRAY"
|
|
166
|
+
when type.BIGINT
|
|
167
|
+
ret_val = "BIGINT"
|
|
168
|
+
when type.BINARY
|
|
169
|
+
ret_val = "BINARY"
|
|
170
|
+
when type.BIT
|
|
171
|
+
ret_val = "BIT"
|
|
172
|
+
when type.BLOB
|
|
173
|
+
ret_val = "BLOB"
|
|
174
|
+
when type.BOOLEAN
|
|
175
|
+
ret_val = "BOOLEAN"
|
|
176
|
+
when type.CHAR
|
|
177
|
+
ret_val = "CHAR"
|
|
178
|
+
when type.CLOB
|
|
179
|
+
ret_val = "CLOB"
|
|
180
|
+
when type.DATALINK
|
|
181
|
+
ret_val = "DATALINK"
|
|
182
|
+
when type.DATE
|
|
183
|
+
ret_val = "DATE"
|
|
184
|
+
when type.DECIMAL
|
|
185
|
+
ret_val = "DECIMAL"
|
|
186
|
+
when type.DISTINCT
|
|
187
|
+
ret_val = "DISTINCT"
|
|
188
|
+
when type.DOUBLE
|
|
189
|
+
ret_val = "DOUBLE"
|
|
190
|
+
when type.FLOAT
|
|
191
|
+
ret_val = "FLOAT"
|
|
192
|
+
when type.INTEGER
|
|
193
|
+
ret_val = "INTEGER"
|
|
194
|
+
when type.JAVA_OBJECT
|
|
195
|
+
ret_val = "JAVA_OBJECT"
|
|
196
|
+
when type.LONGVARBINARY
|
|
197
|
+
ret_val = "LONGVARBINARY"
|
|
198
|
+
when type.NULL
|
|
199
|
+
ret_val = "NULL"
|
|
200
|
+
when type.NUMERIC
|
|
201
|
+
ret_val = "NUMERIC"
|
|
202
|
+
when type.OTHER
|
|
203
|
+
ret_val = "OTHER"
|
|
204
|
+
when type.REAL
|
|
205
|
+
ret_val = "REAL"
|
|
206
|
+
when type.REF
|
|
207
|
+
ret_val = "REF"
|
|
208
|
+
when type.SMALLINT
|
|
209
|
+
ret_val = "SMALLINT"
|
|
210
|
+
when type.STRUCT
|
|
211
|
+
ret_val = "STRUCT"
|
|
212
|
+
when type.TIME
|
|
213
|
+
ret_val = "TIME"
|
|
214
|
+
when type.TIMESTAMP
|
|
215
|
+
ret_val = "TIMESTAMP"
|
|
216
|
+
when type.TINYINT
|
|
217
|
+
ret_val = "TINYINT"
|
|
218
|
+
when type.VARBINARY
|
|
219
|
+
ret_val = "VARBINARY"
|
|
220
|
+
when type.VARCHAR
|
|
221
|
+
ret_val = "VARCHAR"
|
|
222
|
+
end
|
|
223
|
+
ret_val
|
|
224
|
+
end
|
|
225
|
+
end
|
data/lib/hsqldb.jar
ADDED
|
Binary file
|
metadata
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
rubygems_version: 0.8.11
|
|
3
|
+
specification_version: 1
|
|
4
|
+
name: hypersonic
|
|
5
|
+
version: !ruby/object:Gem::Version
|
|
6
|
+
version: "1.0"
|
|
7
|
+
date: 2006-10-10 00:00:00 -04:00
|
|
8
|
+
summary: hypersonic is a Ruby adapter for the Hypersonic Java database
|
|
9
|
+
require_paths:
|
|
10
|
+
- lib
|
|
11
|
+
email: jared@jaredrichardson.net
|
|
12
|
+
homepage: http://jaredrichardson.net
|
|
13
|
+
rubyforge_project:
|
|
14
|
+
description:
|
|
15
|
+
autorequire: hypersonic
|
|
16
|
+
default_executable:
|
|
17
|
+
bindir: bin
|
|
18
|
+
has_rdoc: false
|
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
|
20
|
+
requirements:
|
|
21
|
+
- - ">"
|
|
22
|
+
- !ruby/object:Gem::Version
|
|
23
|
+
version: 0.0.0
|
|
24
|
+
version:
|
|
25
|
+
platform: ruby
|
|
26
|
+
signing_key:
|
|
27
|
+
cert_chain:
|
|
28
|
+
authors:
|
|
29
|
+
- Jared Richardson
|
|
30
|
+
files:
|
|
31
|
+
- lib/hsqldb.jar
|
|
32
|
+
- lib/Hypersonic.rb
|
|
33
|
+
test_files: []
|
|
34
|
+
|
|
35
|
+
rdoc_options: []
|
|
36
|
+
|
|
37
|
+
extra_rdoc_files: []
|
|
38
|
+
|
|
39
|
+
executables: []
|
|
40
|
+
|
|
41
|
+
extensions: []
|
|
42
|
+
|
|
43
|
+
requirements: []
|
|
44
|
+
|
|
45
|
+
dependencies: []
|
|
46
|
+
|