hypersonic-plus 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/lib/hdatastructures/hfieldtable.rb +285 -0
  3. data/lib/hdatastructures/hhash.rb +9 -0
  4. data/lib/hdatastructures/hlist.rb +100 -0
  5. data/lib/hdatastructures/hrecord.rb +75 -0
  6. data/lib/hdatastructures/hspreadfieldtable.rb +129 -0
  7. data/lib/hdb/hdataloader.rb +75 -0
  8. data/lib/hdb/hdb.rb +357 -0
  9. data/lib/hdb/hdb_test.rb +248 -0
  10. data/lib/hdb/hdbgenerator.rb +211 -0
  11. data/lib/hdb/hdbi.rb +63 -0
  12. data/lib/hdb/hdbi_test.rb +133 -0
  13. data/lib/hdb/hfield.rb +180 -0
  14. data/lib/hdb/hmysql.rb +99 -0
  15. data/lib/hdb/hmysql2.rb +96 -0
  16. data/lib/hdb/hodb.rb +948 -0
  17. data/lib/hdb/hpgsql.rb +54 -0
  18. data/lib/hengine/application_controller.rb +204 -0
  19. data/lib/hengine/hconfiguration.rb +40 -0
  20. data/lib/hengine/hhotlogger.rb +13 -0
  21. data/lib/hengine/hlogger.rb +119 -0
  22. data/lib/hengine/hmalloc.rb +275 -0
  23. data/lib/hengine/hmoduleloader.rb +15 -0
  24. data/lib/hengine/hsessiondata.rb +79 -0
  25. data/lib/hengine/hshareddata.rb +60 -0
  26. data/lib/hengine/htranslate.rb +40 -0
  27. data/lib/hengine/hviewloader.rb +99 -0
  28. data/lib/hinit/hinit.rb +3 -0
  29. data/lib/hmisc/hcolorize.rb +100 -0
  30. data/lib/hmisc/hdecoratorfunctions.rb +15 -0
  31. data/lib/hmisc/hdir.rb +19 -0
  32. data/lib/hmisc/hhtmlnode.rb +27 -0
  33. data/lib/hmisc/hinputvalidator.rb +95 -0
  34. data/lib/hmisc/hio.rb +142 -0
  35. data/lib/hmisc/hjson.rb +16 -0
  36. data/lib/hsqlmanager/hpgsqldatabasemanager.rb +76 -0
  37. data/lib/hsqlmanager/hsqldatabasemanager.rb +349 -0
  38. data/lib/hsqlmanager/hsqltable.rb +16 -0
  39. data/lib/husermanager/husermanager.rb +122 -0
  40. data/lib/hwidgets/haccordionmenu.rb +117 -0
  41. data/lib/hwidgets/hcheckboxtag.rb +33 -0
  42. data/lib/hwidgets/hdbactionbuttons.rb +26 -0
  43. data/lib/hwidgets/hdbcombobox.rb +71 -0
  44. data/lib/hwidgets/hdbdialogview.rb +190 -0
  45. data/lib/hwidgets/hdbfilterview.rb +28 -0
  46. data/lib/hwidgets/hdbtableview.rb +213 -0
  47. data/lib/hwidgets/hdbview.rb +63 -0
  48. data/lib/hwidgets/hdivtag.rb +9 -0
  49. data/lib/hwidgets/hdropdown.rb +44 -0
  50. data/lib/hwidgets/hformfield.rb +91 -0
  51. data/lib/hwidgets/hgrouptag.rb +65 -0
  52. data/lib/hwidgets/hhiddeninputtag.rb +12 -0
  53. data/lib/hwidgets/hinputtag.rb +55 -0
  54. data/lib/hwidgets/hlabeltag.rb +30 -0
  55. data/lib/hwidgets/hmainview.rb +37 -0
  56. data/lib/hwidgets/hpagination.rb +65 -0
  57. data/lib/hwidgets/hradiobuttontag.rb +30 -0
  58. data/lib/hwidgets/hselecttag.rb +32 -0
  59. data/lib/hwidgets/htableview.rb +262 -0
  60. data/lib/hwidgets/htabview.rb +84 -0
  61. data/lib/hwidgets/htextareatag.rb +20 -0
  62. data/lib/hwidgets/htopnav.rb +85 -0
  63. data/lib/hwidgets/hwidget.rb +423 -0
  64. data/lib/hypersonic.rb +9 -0
  65. metadata +276 -0
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env ruby
2
+ require 'dbi'
3
+ require 'hdb/hdb'
4
+
5
+ class HDBI < HDB
6
+
7
+ def initialize(host, port, dbname, user, password, timezone, connectionName, connector = "Pg")
8
+
9
+ super(host, port, dbname, user, password, timezone, connectionName, connector)
10
+ @connector = connector
11
+ @sth = nil
12
+
13
+ end
14
+
15
+ def connect()
16
+
17
+ @connection = DBI.connect("dbi:#{@connector}:#{@dbname}:#{@host}", @user, @password)
18
+ hl << "Server version: #{self.execute("SHOW server_version").firstData.to_s}"
19
+ self.execute("SET TIME ZONE '#{@timezone}'") if @timezone
20
+ return @connection
21
+
22
+ end
23
+
24
+ def disconnect()
25
+
26
+ @connection.disconnect()
27
+ @connection = nil
28
+
29
+ end
30
+
31
+ def _execute(queryStr = self.queryStr)
32
+
33
+ @sth = @connection.execute(queryStr)
34
+ result = @sth.fetch_all
35
+ @resultTable = HFieldTable.new()
36
+ self.fieldNameList().each { |fieldName| @resultTable.addFieldName(fieldName) }
37
+ @resultTable.makeCaption()
38
+ result.each_with_index do |row, i|
39
+ row.each_with_name do |fieldValue, fieldName|
40
+ @resultTable.setDataByFieldName(i, fieldName, fieldValue)
41
+ end
42
+ end
43
+ @sth.finish
44
+ @sth = nil
45
+ return self
46
+
47
+ end
48
+
49
+ def fieldNameList()
50
+
51
+ fieldList = HList.new()
52
+
53
+ @sth.column_names.each { |fieldName| fieldList << fieldName }
54
+
55
+ return fieldList
56
+
57
+ end
58
+
59
+ def rowsAffected
60
+ return @sth.rows # rows affected
61
+ end
62
+ end
63
+
@@ -0,0 +1,133 @@
1
+ #!/usr/bin/env ruby
2
+ require 'hdb/hdbi.rb'
3
+
4
+ class HDBI
5
+
6
+ def self.testx
7
+ resultTable = hdb.select([:id, :name]).from(:recipe_types).where(["id > 0", "id < 20000"]).orderBy([:id, :name]).execute
8
+ resultTable.show
9
+ end
10
+
11
+ def self.testxx
12
+ resultTable = hdb("quickorder_pg").select([:id, :name]).from(:recipe_types).where(["id > 0", "id < 20000"]).orderBy([:id, :name]).execute
13
+ resultTable.show
14
+ end
15
+
16
+ def self.testmysql
17
+ id = hdb("quickorder").insert(:city_table, {name: "Wien"})
18
+ puts "id: #{id}"
19
+ resultTable = hdb("quickorder").select([:id, :name]).from(:city_table).where(["id > 0", "id < 20"]).orderBy([:id, :name]).execute
20
+ resultTable.show
21
+ end
22
+
23
+ def self.test
24
+ end
25
+
26
+
27
+ def self.test0
28
+
29
+ hdb = HDB.new('localhost', '5432', 'quickorder', 'quickorder', 'quickorder')
30
+ hdb.openConnection()
31
+ resultTable = hdb.select([:id, :name]).from(:cookbook).where(["id > 0", "id < 200"]).orderBy([:id, :name]).execute
32
+ resultTable = hdb.select("id, name").from("cookbook").where("id > 0 and id < 200").execute
33
+ hdb.show()
34
+ resultTable = hdb.select([:id, :name]).from(:cookbook).where(["id > 0", "id < 200"], "or").orderBy([:id, :name]).execute(pageSize: 10, page: 2)
35
+ hdb.toSqlTable().show()
36
+ id = hdb.insert(:recipe_types, {name: "'nome"})
37
+ p "delete: " + hdb.delete(:recipe_types, {id: id, name: '10'}).to_s
38
+ hdb.select(:name).from(:recipe_types).execute
39
+ hdb.show()
40
+ hdb.closeConnection
41
+
42
+ end
43
+
44
+
45
+ def self.test1
46
+
47
+ dbh = DBI.connect("dbi:Pg:quickorder:localhost", "quickorder", "quickorder")
48
+ sth = dbh.execute("select * from cookbook")
49
+ p sth.column_names
50
+ sth.fetch do |row|
51
+ #p row['name'] # or row.by_field("name")
52
+ #p row[3] # or row.by_index(3)
53
+ row.each_with_name do |fieldValue, fieldName|
54
+ p " #{fieldName}: #{fieldValue}"
55
+ end
56
+ p "======================="
57
+ end
58
+ sth.finish
59
+
60
+ end
61
+
62
+ def self.test2
63
+
64
+ dbh = DBI.connect("dbi:Pg:quickorder:localhost", "quickorder", "quickorder")
65
+ sth = dbh.prepare("select * from cookbook where id = ?")
66
+ sth.execute(1)
67
+ p sth.column_names
68
+ sth.fetch do |row|
69
+ #p row['name'] # or row.by_field("name")
70
+ #p row[3] # or row.by_index(3)
71
+ row.each_with_name do |fieldValue, fieldName|
72
+ p " #{fieldName}: #{fieldValue}"
73
+ end
74
+ p "======================="
75
+ end
76
+ sth.finish
77
+
78
+ end
79
+
80
+
81
+ # finish isn't required
82
+ def self.test3
83
+
84
+ dbh = DBI.connect("dbi:Pg:quickorder:localhost", "quickorder", "quickorder")
85
+ rows = dbh.select_all("select * from cookbook") # con select_all o select_one non e' necessario finish
86
+ rows.each do |row|
87
+ row.each_with_name do |fieldValue, fieldName|
88
+ p " #{fieldName}: #{fieldValue}"
89
+ end
90
+ p "======================="
91
+ end
92
+
93
+ end
94
+
95
+
96
+ def self.test4
97
+
98
+ dbh = DBI.connect("dbi:Pg:quickorder:localhost", "quickorder", "quickorder")
99
+ dbh.do("insert into recipe_types(name, position, department) values(?, ?, ?)", 'hypersonic', 1, nil)
100
+
101
+ end
102
+
103
+ def self.test5
104
+
105
+ dbh = DBI.connect("dbi:Pg:quickorder:localhost", "quickorder", "quickorder")
106
+ sth = dbh.prepare("insert into recipe_types(name, position, department) values(?, ?, ?)")
107
+ sth.execute('hypersonic', 1, nil)
108
+ sth.finish
109
+
110
+ end
111
+
112
+ def self.test6
113
+
114
+ dbh = DBI.connect("dbi:Pg:quickorder:localhost", "quickorder", "quickorder")
115
+ sth = dbh.execute("select * from cookbook")
116
+ rows = sth.fetch_all
117
+
118
+ printf "Number of rows affected: %d\n", sth.rows
119
+ printf "Number of columns: %d\n", sth.column_names.size
120
+
121
+ rows.each do |row|
122
+ row.each_with_name do |fieldValue, fieldName|
123
+ p " #{fieldName}: #{fieldValue}"
124
+ end
125
+ p "======================="
126
+ end
127
+ sth.finish
128
+
129
+ end
130
+
131
+ end
132
+
133
+
@@ -0,0 +1,180 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ =begin
4
+ FIELDS_TO_PGTYPES = {
5
+ fields.boolean: 'bool',
6
+ fields.integer: 'int4',
7
+ fields.text: 'text',
8
+ fields.html: 'text',
9
+ fields.date: 'date',
10
+ fields.datetime: 'timestamp',
11
+ fields.binary: 'bytea',
12
+ fields.many2one: 'int4',
13
+ fields.serialized: 'text',
14
+ }
15
+ =end
16
+
17
+ class HField < Hash
18
+
19
+ def initialize(args)
20
+ args.each { |key, value| self[key] = value }
21
+ end
22
+
23
+ def defaultValue()
24
+
25
+ case self[:type]
26
+ when "char"
27
+ return 'true'
28
+ when "text"
29
+ return ''
30
+ when "integer"
31
+ return 0
32
+ when "float"
33
+ return 0
34
+ when "date"
35
+ return ''
36
+ when "dateTime"
37
+ return ''
38
+ when "binary"
39
+ return ''
40
+ when "selection"
41
+ return ''
42
+ when "boolean"
43
+ return 'true'
44
+ else
45
+ return nil
46
+ end
47
+
48
+ end
49
+
50
+ def self.autoComplete(modelName, fieldName, args = {})
51
+
52
+ return args if args[:type] != "automatic"
53
+
54
+ if fieldName =~ /^(\w+)_id$/
55
+ return self.manyToOne($1, args)
56
+ elsif fieldName =~ /^(\w+)_table$/
57
+ return self.oneToMany($1, "#{modelName}_id", args)
58
+ elsif fieldName =~ /^(\w+)_join$/
59
+ return self.manyToMany($1, "#{modelName}_#{fieldName}", "#{modelName}_id", "#{$1}_id", args)
60
+ elsif fieldName =~ /^(\w+)_virtual$/
61
+ return self.virtual($1, nil, args)
62
+ end
63
+
64
+ return HField.new(args)
65
+
66
+ end
67
+
68
+ def self.automatic(args = {})
69
+ args[:type] = "automatic"
70
+ return HField.new(args)
71
+ end
72
+
73
+ def self.magic(args = {})
74
+ return self.automatic(args)
75
+ end
76
+
77
+ def self.char(args = {})
78
+ args[:type] = "char"
79
+ args[:default] = '' unless args[:default]
80
+ return HField.new(args)
81
+ end
82
+
83
+ def self.text(args = {})
84
+ args[:type] = "text"
85
+ args[:default] = '' unless args[:default]
86
+ return HField.new(args)
87
+ end
88
+
89
+ def self.integer(args = {})
90
+ args[:type] = "integer"
91
+ args[:default] = 0 unless args[:default]
92
+ return HField.new(args)
93
+ end
94
+
95
+ def self.float(args = {})
96
+ args[:type] = "float"
97
+ args[:default] = 0 unless args[:default]
98
+ return HField.new(args)
99
+ end
100
+
101
+ def self.date(args = {})
102
+ args[:type] = "date"
103
+ args[:default] = '' unless args[:default]
104
+ return HField.new(args)
105
+ end
106
+
107
+ def self.dateTime(args = {})
108
+ args[:type] = "datetime"
109
+ return HField.new(args)
110
+ end
111
+
112
+ def self.binary(args = {})
113
+ args[:type] = "binary"
114
+ args[:default] = '' unless args[:default]
115
+ return HField.new(args)
116
+ end
117
+
118
+ def self.selection(args = {})
119
+ args[:type] = "selection"
120
+ return HField.new(args)
121
+ end
122
+
123
+ def self.boolean(args = {})
124
+ args[:type] = "boolean"
125
+ args[:default] = false unless args[:default]
126
+ return HField.new(args)
127
+ end
128
+
129
+ def self.oneToOne(modelName, args = {})
130
+ args[:modelNameReference] = modelName
131
+ #args[:constraint] = 'NOT NULL'
132
+ args[:onDelete] = 'CASCADE' # CASCADE or RESTRICT
133
+ args[:onUpdate] = 'CASCADE'
134
+ args[:type] = "oneToOne"
135
+ return HField.new(args)
136
+ end
137
+
138
+ def self.oneToMany(modelName, referenceFieldName, args = {})
139
+ args[:modelNameReference] = modelName
140
+ args[:referenceFieldName] = referenceFieldName
141
+ args[:type] = "oneToMany"
142
+ return HField.new(args)
143
+ end
144
+
145
+ def self.manyToOne(modelName, args = {})
146
+ args[:modelNameReference] = modelName
147
+ args[:onDelete] = 'CASCADE'
148
+ args[:onUpdate] = 'CASCADE'
149
+ #args[:constraint] = 'NOT NULL'
150
+ args[:type] = "manyToOne"
151
+ return HField.new(args)
152
+ end
153
+
154
+ def self.manyToMany(modelName, joinTable, referenceFieldName, referenceFieldName2, args = {})
155
+ args[:modelNameReference] = modelName
156
+ args[:joinTable] = joinTable
157
+ args[:referenceFieldName] = referenceFieldName
158
+ args[:referenceFieldName2] = referenceFieldName2
159
+ #args[:constraint] = 'NOT NULL'
160
+ args[:type] = "manyToMany"
161
+ return HField.new(args)
162
+ end
163
+
164
+ def self.virtual(functionName = nil, object = nil, args = {}, &block)
165
+ args[:object] = object
166
+ args[:functionName] = functionName
167
+ args[:type] = "virtual"
168
+ args[:block] = block
169
+ return HField.new(args)
170
+ end
171
+
172
+ def self.primaryKey(args = {})
173
+ args[:type] = 'integer'
174
+ args[:system] = true
175
+ args[:constraint] = 'SERIAL PRIMARY KEY'
176
+ return HField.new(args)
177
+ end
178
+
179
+ end
180
+
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'mysql'
4
+ require 'hdb/hdb'
5
+
6
+ class Hash
7
+
8
+ def join(separator)
9
+
10
+ arr = []
11
+ self.each do |key, value|
12
+ arr << "#{key} = #{value}"
13
+ end
14
+ return arr.join(separator)
15
+
16
+ end
17
+ end
18
+
19
+ class Array
20
+
21
+ def hjoin(separator, quoteChar = '"')
22
+
23
+ arr = []
24
+ self.each { |value| arr << "#{value}" }
25
+ return arr.join(separator)
26
+ end
27
+
28
+ end
29
+
30
+ class HMySql < HDB
31
+
32
+ def initialize(host, port, dbname, user, password, timezone, connectionName)
33
+
34
+ super(host, port, dbname, user, password, timezone, connectionName, "hmysql")
35
+ @result = nil
36
+
37
+ end
38
+
39
+ def connect()
40
+
41
+ @connection = Mysql.new(@host, @user, @password, @dbname, @port.to_i)
42
+ #hl << "Server version: #{self.execute("SHOW server_version").dataByFieldIndex(0,0).to_s}"
43
+ self.execute("SET time_zone = '#{@timezone}'") if @timezone
44
+ return @connection
45
+
46
+ end
47
+
48
+ def disconnect()
49
+
50
+ @connection.close()
51
+ @connection = nil
52
+
53
+ end
54
+
55
+ def _execute(queryStr = self.queryStr)
56
+
57
+ @result = @connection.query(queryStr)
58
+
59
+ return self unless @result
60
+
61
+ @resultTable = HFieldTable.new()
62
+ self.fieldNameList().each { |fieldName| @resultTable.addFieldName(fieldName) }
63
+ @resultTable.makeCaption()
64
+ r = 0
65
+ @result.each do |row|
66
+ row.each_with_index do |fieldValue, c|
67
+ @resultTable.setDataByFieldIndex(r, c, fieldValue.to_s)
68
+ end
69
+ r += 1
70
+ end
71
+
72
+ return self
73
+
74
+ end
75
+
76
+ def fieldNameList()
77
+
78
+ fieldList = HList.new()
79
+
80
+ @result.fetch_fields.each { |field| fieldList << field.name }
81
+
82
+ return fieldList
83
+
84
+ end
85
+
86
+ def insert(tableName, values)
87
+
88
+ self.execute("INSERT INTO #{tableName} #{self.insertValues(values)}")
89
+ return @connection.insert_id
90
+
91
+ end
92
+
93
+ def rowsAffected
94
+ return @connection.affected_rows()
95
+ end
96
+
97
+
98
+ end
99
+