knjrbfw 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. data/VERSION +1 -1
  2. data/knjrbfw.gemspec +29 -8
  3. data/lib/knj/arrayext.rb +206 -153
  4. data/lib/knj/autoload/backups/ping.rb +2 -2
  5. data/lib/knj/autoload/erubis.rb +3 -3
  6. data/lib/knj/autoload/facets_dictionary.rb +2 -2
  7. data/lib/knj/autoload/gettext.rb +3 -3
  8. data/lib/knj/autoload/gtk2.rb +1 -1
  9. data/lib/knj/autoload/json.rb +14 -0
  10. data/lib/knj/autoload/magick.rb +3 -3
  11. data/lib/knj/autoload/mysql.rb +3 -3
  12. data/lib/knj/autoload/parsedate.rb +1 -1
  13. data/lib/knj/autoload/ping.rb +2 -2
  14. data/lib/knj/autoload/rexml.rb +5 -5
  15. data/lib/knj/autoload/soap.rb +1 -1
  16. data/lib/knj/autoload/sqlite3.rb +3 -3
  17. data/lib/knj/autoload/tmail.rb +3 -3
  18. data/lib/knj/autoload/xmlsimple.rb +3 -3
  19. data/lib/knj/autoload/zip.rb +3 -3
  20. data/lib/knj/autoload.rb +87 -81
  21. data/lib/knj/cmd_gen.rb +19 -19
  22. data/lib/knj/cmd_parser.rb +59 -0
  23. data/lib/knj/compiler.rb +34 -34
  24. data/lib/knj/cpufreq.rb +37 -37
  25. data/lib/knj/csv.rb +20 -0
  26. data/lib/knj/datarow.rb +406 -239
  27. data/lib/knj/datarow_custom.rb +124 -0
  28. data/lib/knj/datestamp.rb +89 -89
  29. data/lib/knj/datet.rb +550 -454
  30. data/lib/knj/db.rb +1 -0
  31. data/lib/knj/degulesider.rb +42 -44
  32. data/lib/knj/erb/erb.rb +5 -5
  33. data/lib/knj/erb/erb_cache_clean.rb +10 -10
  34. data/lib/knj/erb/erb_fcgi.rb +32 -32
  35. data/lib/knj/erb/erb_fcgi_1.9.rb +32 -32
  36. data/lib/knj/erb/erb_fcgi_jruby.rb +2 -2
  37. data/lib/knj/erb/erb_jruby.rb +5 -5
  38. data/lib/knj/erb/include.rb +243 -243
  39. data/lib/knj/errors.rb +19 -18
  40. data/lib/knj/eruby.rb +12 -10
  41. data/lib/knj/event_filemod.rb +31 -31
  42. data/lib/knj/event_handler.rb +73 -67
  43. data/lib/knj/exchangerates.rb +37 -37
  44. data/lib/knj/facebook_connect.rb +95 -18
  45. data/lib/knj/filesystem.rb +6 -6
  46. data/lib/knj/fs/drivers/filesystem.rb +12 -12
  47. data/lib/knj/fs/drivers/ftp.rb +31 -31
  48. data/lib/knj/fs/drivers/ssh.rb +26 -26
  49. data/lib/knj/fs/fs.rb +31 -31
  50. data/lib/knj/gettext_fallback.rb +15 -15
  51. data/lib/knj/gettext_threadded.rb +75 -75
  52. data/lib/knj/google_sitemap.rb +53 -53
  53. data/lib/knj/gtk2.rb +272 -272
  54. data/lib/knj/gtk2_cb.rb +80 -80
  55. data/lib/knj/gtk2_menu.rb +55 -55
  56. data/lib/knj/gtk2_statuswindow.rb +62 -62
  57. data/lib/knj/gtk2_tv.rb +58 -58
  58. data/lib/knj/hash_methods.rb +27 -36
  59. data/lib/knj/http.rb +189 -167
  60. data/lib/knj/http2.rb +259 -53
  61. data/lib/knj/image.rb +2 -2
  62. data/lib/knj/includes/appserver_cli.rb +18 -18
  63. data/lib/knj/includes/require_info.rb +15 -0
  64. data/lib/knj/ip2location.rb +20 -20
  65. data/lib/knj/ironruby-gtk2/button.rb +14 -14
  66. data/lib/knj/ironruby-gtk2/dialog.rb +42 -42
  67. data/lib/knj/ironruby-gtk2/entry.rb +4 -4
  68. data/lib/knj/ironruby-gtk2/gdk_event.rb +1 -1
  69. data/lib/knj/ironruby-gtk2/gdk_eventbutton.rb +11 -11
  70. data/lib/knj/ironruby-gtk2/gdk_pixbuf.rb +9 -9
  71. data/lib/knj/ironruby-gtk2/gladexml.rb +102 -102
  72. data/lib/knj/ironruby-gtk2/glib.rb +13 -13
  73. data/lib/knj/ironruby-gtk2/gtk2.rb +121 -121
  74. data/lib/knj/ironruby-gtk2/gtk_builder.rb +29 -29
  75. data/lib/knj/ironruby-gtk2/gtk_cellrenderertext.rb +3 -3
  76. data/lib/knj/ironruby-gtk2/gtk_combobox.rb +17 -17
  77. data/lib/knj/ironruby-gtk2/gtk_filechooserbutton.rb +3 -3
  78. data/lib/knj/ironruby-gtk2/gtk_liststore.rb +16 -16
  79. data/lib/knj/ironruby-gtk2/gtk_menu.rb +3 -3
  80. data/lib/knj/ironruby-gtk2/gtk_menuitem.rb +2 -2
  81. data/lib/knj/ironruby-gtk2/gtk_statusicon.rb +3 -3
  82. data/lib/knj/ironruby-gtk2/gtk_treeiter.rb +22 -22
  83. data/lib/knj/ironruby-gtk2/gtk_treeselection.rb +11 -11
  84. data/lib/knj/ironruby-gtk2/gtk_treeview.rb +17 -17
  85. data/lib/knj/ironruby-gtk2/gtk_treeviewcolumn.rb +30 -30
  86. data/lib/knj/ironruby-gtk2/iconsize.rb +1 -1
  87. data/lib/knj/ironruby-gtk2/image.rb +13 -13
  88. data/lib/knj/ironruby-gtk2/label.rb +17 -17
  89. data/lib/knj/ironruby-gtk2/stock.rb +2 -2
  90. data/lib/knj/ironruby-gtk2/tests/test_2.rb +14 -14
  91. data/lib/knj/ironruby-gtk2/tests/test_ironruby_window.rb +37 -37
  92. data/lib/knj/ironruby-gtk2/vbox.rb +3 -3
  93. data/lib/knj/ironruby-gtk2/window.rb +18 -18
  94. data/lib/knj/jruby-gtk2/builder/test_builder.rb +11 -11
  95. data/lib/knj/jruby-gtk2/builder.rb +25 -25
  96. data/lib/knj/jruby-gtk2/cellrenderertext.rb +10 -10
  97. data/lib/knj/jruby-gtk2/checkbutton.rb +1 -1
  98. data/lib/knj/jruby-gtk2/combobox.rb +27 -27
  99. data/lib/knj/jruby-gtk2/dialog.rb +40 -40
  100. data/lib/knj/jruby-gtk2/eventbutton.rb +19 -19
  101. data/lib/knj/jruby-gtk2/gladexml.rb +97 -97
  102. data/lib/knj/jruby-gtk2/gtk2.rb +203 -203
  103. data/lib/knj/jruby-gtk2/hbox.rb +8 -8
  104. data/lib/knj/jruby-gtk2/iconsize.rb +3 -3
  105. data/lib/knj/jruby-gtk2/image.rb +8 -8
  106. data/lib/knj/jruby-gtk2/liststore.rb +54 -54
  107. data/lib/knj/jruby-gtk2/menu.rb +35 -35
  108. data/lib/knj/jruby-gtk2/progressbar.rb +10 -10
  109. data/lib/knj/jruby-gtk2/statusicon.rb +3 -3
  110. data/lib/knj/jruby-gtk2/stock.rb +6 -6
  111. data/lib/knj/jruby-gtk2/tests/test_glade_window.rb +36 -36
  112. data/lib/knj/jruby-gtk2/tests/test_normal_window.rb +3 -3
  113. data/lib/knj/jruby-gtk2/tests/test_trayicon.rb +2 -2
  114. data/lib/knj/jruby-gtk2/treeview.rb +88 -88
  115. data/lib/knj/jruby-gtk2/vbox.rb +10 -10
  116. data/lib/knj/jruby-gtk2/window.rb +7 -7
  117. data/lib/knj/jruby_compiler.rb +12 -12
  118. data/lib/knj/knj.rb +12 -11
  119. data/lib/knj/knj_controller.rb +13 -8
  120. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb +499 -316
  121. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_columns.rb +127 -125
  122. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_indexes.rb +43 -25
  123. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb +316 -241
  124. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3.rb +12 -0
  125. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb +146 -146
  126. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_indexes.rb +24 -24
  127. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb +283 -283
  128. data/lib/knj/knjdb/libknjdb.rb +96 -52
  129. data/lib/knj/knjdb/libknjdb_java_sqlite3.rb +78 -78
  130. data/lib/knj/knjdb/libknjdb_row.rb +147 -147
  131. data/lib/knj/knjdb/libknjdb_sqlite3_ironruby.rb +61 -61
  132. data/lib/knj/knjdb/revision.rb +262 -0
  133. data/lib/knj/libqt.rb +69 -69
  134. data/lib/knj/libqt_window.rb +8 -8
  135. data/lib/knj/locales.rb +62 -52
  136. data/lib/knj/maemo/fremantle-calendar/fremantle-calendar.rb +54 -54
  137. data/lib/knj/mail.rb +73 -73
  138. data/lib/knj/mailobj.rb +82 -80
  139. data/lib/knj/mount.rb +113 -113
  140. data/lib/knj/notify.rb +11 -11
  141. data/lib/knj/nvidia_settings.rb +43 -43
  142. data/lib/knj/objects/objects_sqlhelper.rb +474 -0
  143. data/lib/knj/objects.rb +569 -793
  144. data/lib/knj/opts.rb +38 -38
  145. data/lib/knj/os.rb +176 -158
  146. data/lib/knj/php.rb +853 -683
  147. data/lib/knj/php_parser/arguments.rb +3 -3
  148. data/lib/knj/php_parser/functions.rb +95 -95
  149. data/lib/knj/php_parser/php_parser.rb +16 -16
  150. data/lib/knj/php_parser/tests/test.rb +6 -6
  151. data/lib/knj/php_parser/tests/test_function_run.rb +6 -6
  152. data/lib/knj/power_manager.rb +29 -29
  153. data/lib/knj/process.rb +457 -0
  154. data/lib/knj/process_meta.rb +400 -0
  155. data/lib/knj/rand.rb +8 -8
  156. data/lib/knj/retry.rb +69 -69
  157. data/lib/knj/rhodes/delegate.rb +414 -0
  158. data/lib/knj/rhodes/rhodes.rb +114 -40
  159. data/lib/knj/rhodes/weakref.rb +80 -0
  160. data/lib/knj/rsvgbin.rb +18 -18
  161. data/lib/knj/scripts/degulesider.rb +2 -2
  162. data/lib/knj/scripts/filesearch.rb +35 -35
  163. data/lib/knj/scripts/ip2location.rb +2 -2
  164. data/lib/knj/scripts/keepalive.rb +2 -2
  165. data/lib/knj/scripts/php_to_rb_helper.rb +376 -0
  166. data/lib/knj/scripts/process_meta_exec.rb +104 -0
  167. data/lib/knj/scripts/svn_merge.rb +21 -21
  168. data/lib/knj/scripts/upgrade_knjrbfw_checker.rb +26 -26
  169. data/lib/knj/sms.rb +52 -52
  170. data/lib/knj/sshrobot/sshrobot.rb +90 -88
  171. data/lib/knj/sshrobot.rb +1 -0
  172. data/lib/knj/strings.rb +186 -74
  173. data/lib/knj/sysuser.rb +25 -25
  174. data/lib/knj/table_writer.rb +97 -0
  175. data/lib/knj/tests/compiler/compiler_test.rb +2 -2
  176. data/lib/knj/tests/test_degulesider.rb +1 -1
  177. data/lib/knj/tests/test_http2_proxy.rb +26 -0
  178. data/lib/knj/tests/test_mount.rb +9 -9
  179. data/lib/knj/tests/test_retry.rb +17 -17
  180. data/lib/knj/thread.rb +23 -24
  181. data/lib/knj/thread2.rb +45 -45
  182. data/lib/knj/threadhandler.rb +135 -102
  183. data/lib/knj/threadpool.rb +195 -145
  184. data/lib/knj/translations.rb +128 -119
  185. data/lib/knj/unix_proc.rb +80 -80
  186. data/lib/knj/web.rb +947 -881
  187. data/lib/knj/webscripts/image.rhtml +142 -67
  188. data/lib/knj/win.rb +2 -2
  189. data/lib/knj/win_registry.rb +58 -58
  190. data/lib/knj/win_tightvnc.rb +125 -125
  191. data/lib/knj/wref.rb +104 -0
  192. data/lib/knj/x11vnc.rb +46 -46
  193. data/lib/knj/youtube.rb +33 -36
  194. data/lib/knjrbfw.rb +1 -0
  195. data/spec/cmd_parser_spec.rb +25 -0
  196. data/spec/db_spec.rb +40 -0
  197. data/spec/db_spec_encoding_test_file.txt +1 -0
  198. data/spec/http2_spec.rb +37 -0
  199. data/spec/knjrbfw_spec.rb +17 -15
  200. data/spec/php_spec.rb +69 -0
  201. data/spec/process_meta_spec.rb +150 -0
  202. data/spec/process_spec.rb +107 -0
  203. data/spec/strings_spec.rb +21 -0
  204. data/spec/web_spec.rb +16 -0
  205. metadata +42 -21
  206. data/lib/knj/autoload/json_autoload.rb +0 -7
  207. data/lib/knj/autoload/twitter.rb +0 -2
  208. data/lib/knj/ext/webrick.rb +0 -31
  209. data/lib/knj/jruby-gtk2/gtk-4.0.jar +0 -0
  210. data/lib/knj/knjdb/mysql-connector-java-5.1.13-bin.jar +0 -0
  211. data/lib/knj/knjdb/sqlitejdbc-v056.jar +0 -0
@@ -1,8 +1,12 @@
1
1
  class Knj::Db
2
2
  autoload :Dbtime, "#{File.dirname(__FILE__)}/dbtime.rb"
3
+ autoload :Revision, "#{File.dirname(__FILE__)}/revision.rb"
4
+
3
5
  attr_reader :opts, :conn, :conns, :int_types
4
6
 
5
7
  def initialize(opts)
8
+ require "#{$knjpath}threadhandler"
9
+
6
10
  self.setOpts(opts) if opts != nil
7
11
 
8
12
  @int_types = ["int", "bigint", "tinyint", "smallint", "mediumint"]
@@ -10,6 +14,8 @@ class Knj::Db
10
14
  if !@opts[:threadsafe]
11
15
  @mutex = Mutex.new
12
16
  end
17
+
18
+ @debug = @opts[:debug]
13
19
  end
14
20
 
15
21
  def col_table
@@ -71,24 +77,31 @@ class Knj::Db
71
77
  end
72
78
  end
73
79
 
74
- return Kernel.const_get("KnjDB_" + @opts[:type]).new(self)
80
+ return Kernel.const_get("KnjDB_#{@opts[:type]}").new(self)
75
81
  end
76
82
 
77
83
  def get_and_register_thread
78
84
  raise "KnjDB-object is not in threadding mode." if !@conns
79
85
 
80
- db = @conns.get_and_lock
86
+ thread_cur = Thread.current
81
87
  tid = self.__id__
82
- Thread.current[:knjdb] = {} if !Thread.current[:knjdb]
83
- Thread.current[:knjdb][tid] = db
88
+ thread_cur[:knjdb] = {} if !thread_cur[:knjdb]
89
+
90
+ if thread_cur[:knjdb][tid]
91
+ #An object has already been spawned - free that first to avoid endless "used" objects.
92
+ self.free_thread
93
+ end
94
+
95
+ thread_cur[:knjdb][tid] = @conns.get_and_lock if !thread_cur[:knjdb][tid]
84
96
  end
85
97
 
86
98
  def free_thread
99
+ thread_cur = Thread.current
87
100
  tid = self.__id__
88
101
 
89
- if Thread.current[:knjdb] and Thread.current[:knjdb].key?(tid)
90
- db = Thread.current[:knjdb][tid]
91
- Thread.current[:knjdb].delete(tid)
102
+ if thread_cur[:knjdb] and thread_cur[:knjdb].key?(tid)
103
+ db = thread_cur[:knjdb][tid]
104
+ thread_cur[:knjdb].delete(tid)
92
105
  @conns.free(db) if @conns
93
106
  end
94
107
  end
@@ -101,8 +114,8 @@ class Knj::Db
101
114
  @conns = nil
102
115
  end
103
116
 
104
- def clone_conn
105
- return Knj::Db.new(@opts)
117
+ def clone_conn(args = {})
118
+ return Knj::Db.new(@opts.clone.merge(args))
106
119
  end
107
120
 
108
121
  def copy_to(db, args = {})
@@ -152,36 +165,34 @@ class Knj::Db
152
165
  end
153
166
 
154
167
  def insert(tablename, arr_insert, args = {})
155
- sql = ""
156
-
157
168
  conn_exec do |driver|
158
- sql += "INSERT INTO #{driver.escape_table}#{tablename.to_s}#{driver.escape_table} ("
169
+ sql = "INSERT INTO #{driver.escape_table}#{tablename.to_s}#{driver.escape_table} ("
159
170
 
160
171
  first = true
161
172
  arr_insert.each do |key, value|
162
173
  if first
163
174
  first = false
164
175
  else
165
- sql += ", "
176
+ sql << ", "
166
177
  end
167
178
 
168
- sql += "#{driver.escape_col}#{key.to_s}#{driver.escape_col}"
179
+ sql << "#{driver.escape_col}#{key.to_s}#{driver.escape_col}"
169
180
  end
170
181
 
171
- sql += ") VALUES ("
182
+ sql << ") VALUES ("
172
183
 
173
184
  first = true
174
185
  arr_insert.each do |key, value|
175
186
  if first
176
187
  first = false
177
188
  else
178
- sql += ", "
189
+ sql << ", "
179
190
  end
180
191
 
181
- sql += "#{driver.escape_val}#{driver.escape(value.to_s)}#{driver.escape_val}"
192
+ sql << "#{driver.escape_val}#{driver.escape(value.to_s)}#{driver.escape_val}"
182
193
  end
183
194
 
184
- sql += ")"
195
+ sql << ")"
185
196
 
186
197
  driver.query(sql)
187
198
  return driver.lastID if args[:return_id]
@@ -206,60 +217,58 @@ class Knj::Db
206
217
 
207
218
  conn_exec do |driver|
208
219
  sql = ""
209
- sql += "UPDATE #{driver.escape_col}#{tablename.to_s}#{driver.escape_col} SET "
220
+ sql << "UPDATE #{driver.escape_col}#{tablename.to_s}#{driver.escape_col} SET "
210
221
 
211
222
  first = true
212
223
  arr_update.each do |key, value|
213
224
  if first
214
225
  first = false
215
226
  else
216
- sql += ", "
227
+ sql << ", "
217
228
  end
218
229
 
219
- sql += "#{driver.escape_col}#{key.to_s}#{driver.escape_col} = "
220
- sql += "#{driver.escape_val}#{driver.escape(value.to_s)}#{driver.escape_val}"
230
+ sql << "#{driver.escape_col}#{key.to_s}#{driver.escape_col} = "
231
+ sql << "#{driver.escape_val}#{driver.escape(value.to_s)}#{driver.escape_val}"
221
232
  end
222
233
 
223
234
  if arr_terms and arr_terms.length > 0
224
- sql += " WHERE #{self.makeWhere(arr_terms, driver)}"
235
+ sql << " WHERE #{self.makeWhere(arr_terms, driver)}"
225
236
  end
226
237
 
227
238
  driver.query(sql)
228
239
  end
229
240
  end
230
241
 
231
- def select(tablename, arr_terms = nil, args = nil)
242
+ def select(tablename, arr_terms = nil, args = nil, &block)
232
243
  sql = ""
233
244
 
234
245
  conn_exec do |driver|
235
- sql += "SELECT * FROM #{driver.escape_table}#{tablename.to_s}#{driver.escape_table}"
246
+ sql = "SELECT * FROM #{driver.escape_table}#{tablename.to_s}#{driver.escape_table}"
236
247
 
237
248
  if arr_terms != nil and !arr_terms.empty?
238
- sql += " WHERE #{self.makeWhere(arr_terms, driver)}"
249
+ sql << " WHERE #{self.makeWhere(arr_terms, driver)}"
239
250
  end
240
251
 
241
252
  if args != nil
242
253
  if args["orderby"]
243
- sql += " ORDER BY "
244
- sql += args["orderby"]
254
+ sql << " ORDER BY "
255
+ sql << args["orderby"]
245
256
  end
246
257
 
247
258
  if args["limit"]
248
- sql += " LIMIT " + args["limit"].to_s
259
+ sql << " LIMIT " + args["limit"].to_s
249
260
  end
250
261
 
251
262
  if args["limit_from"] and args["limit_to"]
252
263
  raise "'limit_from' was not numeric: '#{args["limit_from"]}'." if !Knj::Php.is_numeric(args["limit_from"])
253
264
  raise "'limit_to' was not numeric: '#{args["limit_to"]}'." if !Knj::Php.is_numeric(args["limit_to"])
254
265
 
255
- sql += " LIMIT #{args["limit_from"]}, #{args["limit_to"]}"
266
+ sql << " LIMIT #{args["limit_from"]}, #{args["limit_to"]}"
256
267
  end
257
268
  end
258
-
259
- return driver.query(sql)
260
269
  end
261
270
 
262
- raise "Something went wrong."
271
+ return self.q(sql, &block)
263
272
  end
264
273
 
265
274
  def selectsingle(tablename, arr_terms = nil, args = {})
@@ -273,13 +282,11 @@ class Knj::Db
273
282
  end
274
283
 
275
284
  def delete(tablename, arr_terms)
276
- sql = ""
277
-
278
285
  conn_exec do |driver|
279
- sql += "DELETE FROM #{driver.escape_table}#{tablename.to_s}#{driver.escape_table}"
286
+ sql = "DELETE FROM #{driver.escape_table}#{tablename}#{driver.escape_table}"
280
287
 
281
- if arr_terms != nil
282
- sql += " WHERE #{self.makeWhere(arr_terms, driver)}"
288
+ if arr_terms != nil and !arr_terms.empty?
289
+ sql << " WHERE #{self.makeWhere(arr_terms, driver)}"
283
290
  end
284
291
 
285
292
  driver.query(sql)
@@ -294,15 +301,20 @@ class Knj::Db
294
301
  if first
295
302
  first = false
296
303
  else
297
- sql += " AND "
304
+ sql << " AND "
298
305
  end
299
306
 
300
- sql += "#{driver.escape_col}#{key.to_s}#{driver.escape_col} = #{driver.escape_val}#{driver.escape(value)}#{driver.escape_val}"
307
+ if value.is_a?(Array)
308
+ sql << "#{driver.escape_col}#{key}#{driver.escape_col} IN (#{Knj::ArrayExt.join(:arr => value, :sep => ",", :surr => "'", :callback => proc{|ele| self.esc(ele)})})"
309
+ else
310
+ sql << "#{driver.escape_col}#{key}#{driver.escape_col} = #{driver.escape_val}#{driver.escape(value)}#{driver.escape_val}"
311
+ end
301
312
  end
302
313
 
303
314
  return sql
304
315
  end
305
316
 
317
+ #Returns a driver-object based on the current thread and free driver-objects.
306
318
  def conn_exec
307
319
  if Thread.current[:knjdb]
308
320
  tid = self.__id__
@@ -341,34 +353,63 @@ class Knj::Db
341
353
  raise "Could not figure out how to find a driver to use?"
342
354
  end
343
355
 
356
+ #Executes a query and returns the result.
344
357
  def query(string)
345
- conn_exec do |driver|
358
+ if @debug
359
+ begin
360
+ raise "test"
361
+ rescue => e
362
+ print "SQL: #{string}\n"
363
+ print e.backtrace.join("\n")
364
+ print "\n"
365
+ end
366
+ end
367
+
368
+ self.conn_exec do |driver|
346
369
  return driver.query(string)
347
370
  end
348
371
  end
349
372
 
350
- def q(str)
373
+ #Execute an ubuffered query and returns the result.
374
+ def query_ubuf(string, &block)
375
+ ret = nil
376
+
377
+ self.conn_exec do |driver|
378
+ ret = driver.query_ubuf(string, &block)
379
+ end
380
+
381
+ if block
382
+ ret.each(&block)
383
+ return nil
384
+ end
385
+
386
+ return ret
387
+ end
388
+
389
+ #Executes a query and returns the result. If a block is given the result is iterated over that block instead and it returns nil.
390
+ def q(str, &block)
351
391
  ret = self.query(str)
352
392
 
353
- if block_given?
354
- while data = ret.fetch
355
- yield data
356
- end
393
+ if block
394
+ ret.each(&block)
395
+ return nil
357
396
  end
358
397
 
359
398
  return ret
360
399
  end
361
400
 
401
+ #Returns the last inserted ID.
362
402
  def lastID
363
- conn_exec do |driver|
403
+ self.conn_exec do |driver|
364
404
  return driver.lastID
365
405
  end
366
406
  end
367
407
 
368
408
  alias :last_id :lastID
369
409
 
410
+ #Escapes a string to be safe-to-use in a query-string.
370
411
  def escape(string)
371
- conn_exec do |driver|
412
+ self.conn_exec do |driver|
372
413
  return driver.escape(string)
373
414
  end
374
415
  end
@@ -376,20 +417,20 @@ class Knj::Db
376
417
  alias :esc :escape
377
418
 
378
419
  def esc_col(str)
379
- conn_exec do |driver|
420
+ self.conn_exec do |driver|
380
421
  return driver.esc_col(str)
381
422
  end
382
423
  end
383
424
 
384
425
  def esc_table(str)
385
- conn_exec do |driver|
426
+ self.conn_exec do |driver|
386
427
  return driver.esc_table(str)
387
428
  end
388
429
  end
389
430
 
390
431
  def enc_table
391
432
  if !@enc_table
392
- conn_exec do |driver|
433
+ self.conn_exec do |driver|
393
434
  @enc_table = driver.escape_table
394
435
  end
395
436
  end
@@ -399,7 +440,7 @@ class Knj::Db
399
440
 
400
441
  def enc_col
401
442
  if !@enc_col
402
- conn_exec do |driver|
443
+ self.conn_exec do |driver|
403
444
  @enc_col = driver.escape_col
404
445
  end
405
446
  end
@@ -415,6 +456,7 @@ class Knj::Db
415
456
  return Knj::Datet.in(date_obj)
416
457
  end
417
458
 
459
+ #Returns the table-module and spawns it if it isnt already spawned.
418
460
  def tables
419
461
  conn_exec do |driver|
420
462
  if !driver.tables
@@ -429,6 +471,7 @@ class Knj::Db
429
471
  end
430
472
  end
431
473
 
474
+ #Returns the columns-module and spawns it if it isnt already spawned.
432
475
  def cols
433
476
  if !@cols
434
477
  require "#{File.dirname(__FILE__)}/drivers/#{@opts[:type]}/knjdb_#{@opts[:type]}_columns" if (!@opts.key?(:require) or @opts[:require])
@@ -441,6 +484,7 @@ class Knj::Db
441
484
  return @cols
442
485
  end
443
486
 
487
+ #Returns the index-module and spawns it if it isnt already spawned.
444
488
  def indexes
445
489
  if !@indexes
446
490
  require "#{File.dirname(__FILE__)}/drivers/#{@opts[:type]}/knjdb_#{@opts[:type]}_indexes" if (!@opts.key?(:require) or @opts[:require])
@@ -1,83 +1,83 @@
1
1
  class KnjDB_java_sqlite3
2
- def escape_table
3
- return "`"
4
- end
5
-
6
- def escape_col
7
- return "`"
8
- end
9
-
10
- def escape_val
11
- return "'"
12
- end
13
-
14
- def initialize(knjdb_ob)
15
- @knjdb = knjdb_ob
16
-
17
- if @knjdb.opts[:sqlite_driver]
18
- require @knjdb.opts[:sqlite_driver]
19
- else
20
- require File.dirname(__FILE__) + "/sqlitejdbc-v056.jar"
21
- end
22
-
23
- require "java"
24
- import "org.sqlite.JDBC"
25
- @conn = java.sql.DriverManager::getConnection("jdbc:sqlite:" + @knjdb.opts[:path])
26
- @stat = @conn.createStatement
27
- end
28
-
29
- def query(string)
30
- begin
31
- return KnjDB_java_sqlite3_result.new(@stat.executeQuery(string))
32
- rescue java.sql.SQLException => e
33
- if e.message == "java.sql.SQLException: query does not return ResultSet"
34
- #ignore it.
35
- else
36
- raise e
37
- end
38
- end
39
- end
40
-
41
- def fetch(result)
42
- return result.fetch
43
- end
44
-
45
- def escape(string)
46
- if (!string)
47
- return ""
48
- end
49
-
50
- string = string.gsub("'", "\\'")
51
- return string
52
- end
53
-
54
- def lastID
55
- return @conn.last_insert_row_id
56
- end
2
+ def escape_table
3
+ return "`"
4
+ end
5
+
6
+ def escape_col
7
+ return "`"
8
+ end
9
+
10
+ def escape_val
11
+ return "'"
12
+ end
13
+
14
+ def initialize(knjdb_ob)
15
+ @knjdb = knjdb_ob
16
+
17
+ if @knjdb.opts[:sqlite_driver]
18
+ require @knjdb.opts[:sqlite_driver]
19
+ else
20
+ require File.dirname(__FILE__) + "/sqlitejdbc-v056.jar"
21
+ end
22
+
23
+ require "java"
24
+ import "org.sqlite.JDBC"
25
+ @conn = java.sql.DriverManager::getConnection("jdbc:sqlite:" + @knjdb.opts[:path])
26
+ @stat = @conn.createStatement
27
+ end
28
+
29
+ def query(string)
30
+ begin
31
+ return KnjDB_java_sqlite3_result.new(@stat.executeQuery(string))
32
+ rescue java.sql.SQLException => e
33
+ if e.message == "java.sql.SQLException: query does not return ResultSet"
34
+ #ignore it.
35
+ else
36
+ raise e
37
+ end
38
+ end
39
+ end
40
+
41
+ def fetch(result)
42
+ return result.fetch
43
+ end
44
+
45
+ def escape(string)
46
+ if (!string)
47
+ return ""
48
+ end
49
+
50
+ string = string.gsub("'", "\\'")
51
+ return string
52
+ end
53
+
54
+ def lastID
55
+ return @conn.last_insert_row_id
56
+ end
57
57
  end
58
58
 
59
59
  class KnjDB_java_sqlite3_result
60
- def initialize(rs)
61
- @rs = rs
62
- @index = 0
63
-
64
- if rs
65
- @metadata = rs.getMetaData
66
- @columns_count = @metadata.getColumnCount
67
- end
68
- end
69
-
70
- def fetch
71
- if !@rs.next
72
- return false
73
- end
74
-
75
- tha_return = {}
76
- for i in (1..@columns_count)
77
- col_name = @metadata.getColumnName(i)
78
- tha_return.store(col_name, @rs.getString(i))
79
- end
80
-
81
- return tha_return
82
- end
60
+ def initialize(rs)
61
+ @rs = rs
62
+ @index = 0
63
+
64
+ if rs
65
+ @metadata = rs.getMetaData
66
+ @columns_count = @metadata.getColumnCount
67
+ end
68
+ end
69
+
70
+ def fetch
71
+ if !@rs.next
72
+ return false
73
+ end
74
+
75
+ tha_return = {}
76
+ for i in (1..@columns_count)
77
+ col_name = @metadata.getColumnName(i)
78
+ tha_return.store(col_name, @rs.getString(i))
79
+ end
80
+
81
+ return tha_return
82
+ end
83
83
  end