hypersonicplus 0.0.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.
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,15 @@
1
+ require "singleton"
2
+
3
+ class HModuleLoader
4
+
5
+ include Singleton
6
+
7
+ def initialize()
8
+ end
9
+
10
+ def modules()
11
+ return HDir.new("#{Dir.pwd}/app/modules/*").onlyDirectories()
12
+ end
13
+
14
+ end
15
+
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "singleton"
4
+
5
+ class HSessionData
6
+
7
+ include Singleton
8
+
9
+ def initialize()
10
+
11
+ @databaseManager = hpgsql()
12
+
13
+ end
14
+
15
+ def session()
16
+ return hsd().value(:session)
17
+ end
18
+
19
+ def sessionId()
20
+ return (self.session()[:sessionId]) ? self.session()[:sessionId] : -1
21
+ end
22
+
23
+ def setValues(params)
24
+
25
+ sessionId = self.sessionId
26
+ self.session[:sessionId] = sessionId = @databaseManager.insertOrUpdateIfExist("session_table", "id = #{sessionId}", {:value => params})
27
+
28
+ i = 0
29
+ session_record = Hash.new()
30
+ params.each do |key, value|
31
+ session_record = {:session_id => sessionId,
32
+ :field_name => key,
33
+ :field_value => value,
34
+ :ordering => i}
35
+ session_recordWhere = "session_id = #{sessionId} and field_name = '#{key}'"
36
+ @databaseManager.insertOrUpdateIfExist("session_record_table", session_recordWhere, session_record)
37
+ i += 1
38
+
39
+ # se trova username tra i parametri lo memorizza singolarmente
40
+ # in modo da essere usato piu' facilmente dalle altre funzioni
41
+ username = @databaseManager.parentChildValueOf("session", "session_record", sessionId, key, "username")
42
+ self.setValues({:username => username}) if (username)
43
+
44
+ end
45
+
46
+ end
47
+
48
+ def valueOf(fieldName, key = nil)
49
+
50
+ return @databaseManager.parentChildValueOf("session", "session_record", self.sessionId, fieldName, key)
51
+
52
+ end
53
+
54
+
55
+ def value1()
56
+
57
+ sessionId = self.sessionId
58
+ return nil if(sessionId == -1)
59
+
60
+ selectQuery = "select value from session_table where id = #{sessionId}"
61
+ tableResult = @databaseManager.run(selectQuery).result
62
+ return nil if(tableResult.count == 0)
63
+ return eval(tableResult[0]["value"])
64
+
65
+ end
66
+
67
+ def self.test1()
68
+
69
+ end
70
+
71
+
72
+ end
73
+
74
+
75
+ def hsession()
76
+
77
+ return HSessionData.instance()
78
+
79
+ end
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "singleton"
4
+
5
+ class HSharedData
6
+
7
+ include Singleton
8
+
9
+ def initialize()
10
+
11
+ @sharedData = Hash.new
12
+
13
+ end
14
+
15
+ def sharedData(sharedDataName)
16
+ @sharedData[sharedDataName] = Hash.new() unless (@sharedData[sharedDataName])
17
+ return @sharedData[sharedDataName]
18
+ end
19
+
20
+ def setValue(fieldValue, fieldName, sharedDataName = "default")
21
+
22
+ #puts "=======> setValue(#{fieldValue}, #{fieldName})".hight_cyan
23
+ if(fieldValue == nil)
24
+ self.sharedData(sharedDataName).delete(fieldName)
25
+ else
26
+ self.sharedData(sharedDataName)[fieldName] = fieldValue
27
+ end
28
+ end
29
+
30
+ def set(fieldName, fieldValue, sharedDataName = 'default')
31
+ self.setValue(fieldValue, fieldName, sharedDataName)
32
+ end
33
+
34
+ def value(fieldName, sharedDataName = "default")
35
+
36
+ return self.sharedData(sharedDataName)[fieldName]
37
+
38
+ end
39
+
40
+ def show()
41
+ #p "=======> @sharedData: #{@sharedData}"
42
+ end
43
+
44
+ def self.test1()
45
+
46
+ HSharedData.instance().setValue("wien", "best_city")
47
+ puts HSharedData.instance().value("best_city")
48
+
49
+ end
50
+
51
+ #HSharedData.test1()
52
+
53
+ end
54
+
55
+
56
+ def hsd()
57
+
58
+ return HSharedData.instance()
59
+
60
+ end
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "singleton"
4
+ #require "hmisc/hconfiguration"
5
+
6
+ class HTranslate
7
+
8
+ include Singleton
9
+
10
+ def initialize()
11
+
12
+ #p I18n.t("hello")
13
+
14
+ language = HConfiguration.instance().value("language")
15
+ @dictionary = YAML.load_file("config/locales/#{language}.yml")[language]
16
+
17
+ end
18
+
19
+ def translate(word)
20
+
21
+ wd = @dictionary[word]
22
+ return (wd) ? wd : word
23
+
24
+ end
25
+
26
+ def tr(word)
27
+
28
+ return self.translate(word)
29
+
30
+ end
31
+
32
+ end
33
+
34
+
35
+ def ht(word)
36
+
37
+ return HTranslate.instance().tr(word)
38
+
39
+ end
40
+
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "singleton"
4
+ require "nokogiri"
5
+
6
+ class Nokogiri::XML::Element
7
+
8
+ # <panel name="article">
9
+ # <panel name="product" caption="Product" position="inside">
10
+ # <field name="hello" caption="Name"/>
11
+ # </panel>
12
+ # </panel>
13
+
14
+ # If node is <field name="name" caption="Name"/> then:
15
+ # - node.value("name") # => hello
16
+ # - node.value("caption") # => Name
17
+ # e se voglio in name di panel ?
18
+ # - node.value("panel.name") # => product
19
+ # - node.value("panel.panel.name") # => article
20
+
21
+ def value(name)
22
+ tokens = name.split('.')
23
+ return nil if tokens.empty?
24
+ return self.parent.value(tokens[1..-1].join('.')) if tokens.length > 2
25
+ # Se per es. name e' "panel.label" e arriviamo all'elemento panel si deve restituire il valore di label
26
+ # e se tale elemento non esiste si restituisce nil ma non si deve continare a ricercare tra i genitori
27
+ return self[tokens[1]] if (tokens.length == 2 and tokens[0] == self.name)
28
+ return self[name] if self[name]
29
+ return (self.parent and self.parent.class == Nokogiri::XML::Element) ? self.parent.value(name) : nil
30
+ end
31
+
32
+ end
33
+
34
+ class HViewLoader
35
+
36
+ include Singleton
37
+
38
+ def initialize()
39
+ @hviews = {} # hypersonic views
40
+ end
41
+
42
+ def viewByFileName(moduleName, filename)
43
+
44
+ viewName = filename
45
+ @hviews[moduleName] = {} unless @hviews[moduleName]
46
+ return @hviews[moduleName][viewName] if @hviews[moduleName][viewName]
47
+ @hviews[moduleName][viewName] = Nokogiri::Slop(File.read(filename))
48
+
49
+ end
50
+
51
+ def view(moduleName, viewName)
52
+
53
+ return self.viewByFileName(moduleName, "#{Dir.pwd}/app/modules/#{moduleName}/#{viewName}/#{viewName}_view.xml")
54
+
55
+ end
56
+
57
+ def value(fieldName, viewName)
58
+
59
+ return self.view(viewName)[fieldName]
60
+
61
+ end
62
+
63
+ def viewByType(moduleName, viewName, type)
64
+ return self.view(moduleName, viewName).xpath("//view[@type='#{type}']//*")
65
+ end
66
+
67
+ def viewParsing(moduleName, viewName, type)
68
+
69
+ nodes = []
70
+ view = self.view(moduleName, viewName).xpath("//view[@type='#{type}']//*")
71
+ #view = view.xpath(".//*")
72
+ view.each do |node|
73
+ p node.name
74
+ # node[:type]
75
+ case node.name
76
+ when "table"
77
+ puts "table"
78
+ when "form"
79
+ puts "form"
80
+ when "panel"
81
+ puts "panel"
82
+ when "field"
83
+ nodes << node
84
+ else
85
+ end
86
+ end
87
+
88
+ return nodes
89
+
90
+ end
91
+
92
+ end
93
+
94
+ def hv()
95
+
96
+ return HViewLoader.instance()
97
+
98
+ end
99
+
@@ -0,0 +1,3 @@
1
+ class HInit
2
+
3
+ end
@@ -0,0 +1,100 @@
1
+ class String
2
+ # colorization
3
+ # http://bitmote.com/index.php?post/2012/11/19/Using-ANSI-Color-Codes-to-Colorize-Your-Bash-Prompt-on-Linux
4
+
5
+ def color(code)
6
+ style = 38
7
+ resetColor = "\033[m"
8
+ newColor = "\033[#{style};5;#{code}m"
9
+ return "#{newColor}#{self}#{resetColor}"
10
+ end
11
+
12
+ def colorize(color_code)
13
+ "\e[1;#{color_code}m#{self}\e[0m"
14
+ end
15
+
16
+ def white
17
+ colorize(37)
18
+ end
19
+
20
+ def red
21
+ colorize(31)
22
+ end
23
+
24
+ def green
25
+ colorize(32)
26
+ end
27
+
28
+ def yellow
29
+ colorize(33)
30
+ end
31
+
32
+ def blue
33
+ colorize(34)
34
+ end
35
+
36
+ def pink
37
+ colorize(35)
38
+ end
39
+
40
+ def hight_red
41
+ colorize(91)
42
+ end
43
+
44
+ def hight_green
45
+ colorize(92)
46
+ end
47
+
48
+ def hight_yellow
49
+ colorize(93)
50
+ end
51
+
52
+ def hight_blue
53
+ colorize(94)
54
+ end
55
+
56
+ def hight_purple
57
+ colorize(95)
58
+ end
59
+
60
+ def hight_cyan
61
+ colorize(96)
62
+ end
63
+
64
+ def hight_white
65
+ colorize(97)
66
+ end
67
+
68
+
69
+ def showColorTable
70
+
71
+ puts
72
+ print " +"
73
+ for i in 0..35 do
74
+ print "%3.3s" % "#{i}"
75
+ end
76
+ puts
77
+ puts
78
+
79
+ print " 0 "
80
+ for i in 0..15 do
81
+ print "\033[48;5;#{i}m \033[m "
82
+ end
83
+ puts
84
+ puts
85
+
86
+ for i in 0..6 do
87
+ i = i * 36 + 16
88
+ print "%4.4s" % "#{i} "
89
+ for j in 0..35 do
90
+ val = i + j
91
+ print "\033[48;5;#{val}m \033[m "
92
+ end
93
+ puts
94
+ puts
95
+ end
96
+
97
+ end
98
+
99
+
100
+ end
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ class HDecoratorFunctions
4
+
5
+ def self.numberToMoney(value = "@arg@")
6
+
7
+ return value
8
+ currency = HConfiguration.instance().value("currency").to_sym
9
+ decimals = HConfiguration.instance().value("decimals")
10
+ return "ActionController::Base.helpers.number_to_currency(#{value}, precision: #{decimals}, locale: :#{currency}).to_s" if(value == "@arg@")
11
+ return ActionController::Base.helpers.number_to_currency(value, precision: decimals, locale: currency).to_s
12
+ end
13
+
14
+ end
15
+
@@ -0,0 +1,19 @@
1
+ class HDir
2
+
3
+ def initialize(pathName)
4
+ @pathName = pathName
5
+ end
6
+
7
+ def onlyDirectories
8
+
9
+ directories = []
10
+ Dir[@pathName].map do |file|
11
+ next if File.file?(file)
12
+ directories << File.basename(file)
13
+ end
14
+
15
+ return directories
16
+
17
+ end
18
+
19
+ end
@@ -0,0 +1,27 @@
1
+ class Nokogiri::XML::NodeSet
2
+
3
+ def hchildren
4
+
5
+ result = []
6
+ self.children.each do |node|
7
+ result << node if(node.name != "text")
8
+ end
9
+
10
+ return result
11
+
12
+ end
13
+
14
+
15
+ def to_a_of_h # array of hash
16
+
17
+ return self.map { |node| node.to_h.symbolize_keys }
18
+ # The follow instruction is replaced by that above
19
+ items = []
20
+ self.each { |node| items << node.to_h.symbolize_keys }
21
+ return items
22
+
23
+ end
24
+
25
+ end
26
+
27
+