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,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
+