hypersonic-plus 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/hdatastructures/hfieldtable.rb +285 -0
- data/lib/hdatastructures/hhash.rb +9 -0
- data/lib/hdatastructures/hlist.rb +100 -0
- data/lib/hdatastructures/hrecord.rb +75 -0
- data/lib/hdatastructures/hspreadfieldtable.rb +129 -0
- data/lib/hdb/hdataloader.rb +75 -0
- data/lib/hdb/hdb.rb +357 -0
- data/lib/hdb/hdb_test.rb +248 -0
- data/lib/hdb/hdbgenerator.rb +211 -0
- data/lib/hdb/hdbi.rb +63 -0
- data/lib/hdb/hdbi_test.rb +133 -0
- data/lib/hdb/hfield.rb +180 -0
- data/lib/hdb/hmysql.rb +99 -0
- data/lib/hdb/hmysql2.rb +96 -0
- data/lib/hdb/hodb.rb +948 -0
- data/lib/hdb/hpgsql.rb +54 -0
- data/lib/hengine/application_controller.rb +204 -0
- data/lib/hengine/hconfiguration.rb +40 -0
- data/lib/hengine/hhotlogger.rb +13 -0
- data/lib/hengine/hlogger.rb +119 -0
- data/lib/hengine/hmalloc.rb +275 -0
- data/lib/hengine/hmoduleloader.rb +15 -0
- data/lib/hengine/hsessiondata.rb +79 -0
- data/lib/hengine/hshareddata.rb +60 -0
- data/lib/hengine/htranslate.rb +40 -0
- data/lib/hengine/hviewloader.rb +99 -0
- data/lib/hinit/hinit.rb +3 -0
- data/lib/hmisc/hcolorize.rb +100 -0
- data/lib/hmisc/hdecoratorfunctions.rb +15 -0
- data/lib/hmisc/hdir.rb +19 -0
- data/lib/hmisc/hhtmlnode.rb +27 -0
- data/lib/hmisc/hinputvalidator.rb +95 -0
- data/lib/hmisc/hio.rb +142 -0
- data/lib/hmisc/hjson.rb +16 -0
- data/lib/hsqlmanager/hpgsqldatabasemanager.rb +76 -0
- data/lib/hsqlmanager/hsqldatabasemanager.rb +349 -0
- data/lib/hsqlmanager/hsqltable.rb +16 -0
- data/lib/husermanager/husermanager.rb +122 -0
- data/lib/hwidgets/haccordionmenu.rb +117 -0
- data/lib/hwidgets/hcheckboxtag.rb +33 -0
- data/lib/hwidgets/hdbactionbuttons.rb +26 -0
- data/lib/hwidgets/hdbcombobox.rb +71 -0
- data/lib/hwidgets/hdbdialogview.rb +190 -0
- data/lib/hwidgets/hdbfilterview.rb +28 -0
- data/lib/hwidgets/hdbtableview.rb +213 -0
- data/lib/hwidgets/hdbview.rb +63 -0
- data/lib/hwidgets/hdivtag.rb +9 -0
- data/lib/hwidgets/hdropdown.rb +44 -0
- data/lib/hwidgets/hformfield.rb +91 -0
- data/lib/hwidgets/hgrouptag.rb +65 -0
- data/lib/hwidgets/hhiddeninputtag.rb +12 -0
- data/lib/hwidgets/hinputtag.rb +55 -0
- data/lib/hwidgets/hlabeltag.rb +30 -0
- data/lib/hwidgets/hmainview.rb +37 -0
- data/lib/hwidgets/hpagination.rb +65 -0
- data/lib/hwidgets/hradiobuttontag.rb +30 -0
- data/lib/hwidgets/hselecttag.rb +32 -0
- data/lib/hwidgets/htableview.rb +262 -0
- data/lib/hwidgets/htabview.rb +84 -0
- data/lib/hwidgets/htextareatag.rb +20 -0
- data/lib/hwidgets/htopnav.rb +85 -0
- data/lib/hwidgets/hwidget.rb +423 -0
- data/lib/hypersonic.rb +9 -0
- metadata +276 -0
@@ -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
|
+
|
data/lib/hinit/hinit.rb
ADDED
@@ -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
|
+
|
data/lib/hmisc/hdir.rb
ADDED
@@ -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
|
+
|