archestry_lookup 0.0.11
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.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/.gitlab-ci.yml +1 -0
- data/Gemfile +3 -0
- data/archestry_lookup.gemspec +29 -0
- data/lib/archestry_lookup.rb +45 -0
- data/lib/context/_refactor_dialog/constructors/DockedGroupings2AppFunctions.rb +28 -0
- data/lib/context/_refactor_dialog/constructors/Element2ModSend.rb +28 -0
- data/lib/context/_refactor_dialog/constructors/ElementsInElements.rb +29 -0
- data/lib/context/_refactor_dialog/data/1.ModReceive2GetData.rb +29 -0
- data/lib/context/_refactor_dialog/data/2.GetData2Elements.rb +29 -0
- data/lib/context/_refactor_dialog/data/3.GenData2Dest.rb +29 -0
- data/lib/context/_refactor_dialog/data/4.Results2GenData.rb +29 -0
- data/lib/context/_refactor_dialog/folder_lookup.rb +36 -0
- data/lib/context/_refactor_dialog/functional/1.Expect2Events.rb +28 -0
- data/lib/context/_refactor_dialog/functional/2.1.Events2AppEvent.rb +28 -0
- data/lib/context/_refactor_dialog/functional/2.2.1.Events2ModReceive.rb +28 -0
- data/lib/context/_refactor_dialog/functional/2.2.2.ModReceive2AppEvent.rb +28 -0
- data/lib/context/_refactor_dialog/functional/3.Appevent2EventBus.rb +28 -0
- data/lib/context/_refactor_dialog/functional/4.1.AppEvent2Elements.rb +28 -0
- data/lib/context/_refactor_dialog/functional/4.2.Elements2AppEvent.rb +28 -0
- data/lib/context/_refactor_dialog/functional/5.1.Element2ModElements.rb +28 -0
- data/lib/context/_refactor_dialog/functional/5.2.Element2ModSend.rb +27 -0
- data/lib/context/_refactor_dialog/functional/6.ModElementsSpecs.rb +28 -0
- data/lib/context/_refactor_dialog/functional/7.ElementChains.rb +28 -0
- data/lib/context/_refactor_dialog/main.rb +69 -0
- data/lib/context/archestry/library.rb +53 -0
- data/lib/context/archestry/prepost.rb +39 -0
- data/lib/objects/_old.rb +43 -0
- data/lib/objects/lookup.rb +152 -0
- data/lib/schema/schema.rb +38 -0
- data/lib/sql/dbhandlers.rb +81 -0
- data/lib/sql/lookup_mfv.rb +113 -0
- data/lib/sql/pre.rb +51 -0
- data/lib/sql/view2ModelElements.rb +227 -0
- data/lib/tooling/hash.rb +17 -0
- data/lib/tooling/log.rb +49 -0
- data/license.txt +428 -0
- metadata +123 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
|
2
|
+
## / / / / License \ \ \ \
|
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
|
7
|
+
######## ####### ######## ####### ######## ########
|
|
8
|
+
## / / / / Code Climate \ \ \ \
|
|
9
|
+
## Language = ruby
|
|
10
|
+
## Indent = space; 4 chars;
|
|
11
|
+
######## ####### ######## ####### ######## ########
|
|
12
|
+
module ArchestryLookup
|
|
13
|
+
module Sql
|
|
14
|
+
class << self
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def initElementsHash(args, mtype, f)
|
|
18
|
+
args[:elements][:base][mtype][:id][f[:f1]][f[:f2]][f[:f3]][:c] ||= {}
|
|
19
|
+
args[:elements][:base][mtype][:id][f[:f1]][f[:f2]][f[:f3]][f[:self]] ||= {}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def getViewConnectionsFromView(args, state, mfv)
|
|
24
|
+
|
|
25
|
+
rows = {}
|
|
26
|
+
links = {}
|
|
27
|
+
i = 1
|
|
28
|
+
mtype = mfv[:model][:type]
|
|
29
|
+
|
|
30
|
+
# (views_objects.id in (views_connections.source_object_id) AND views_objects.id not in (views_connections.target_object_id))
|
|
31
|
+
sqlQuery(state, "
|
|
32
|
+
select distinct
|
|
33
|
+
|
|
34
|
+
views_objects.id as o_oid,
|
|
35
|
+
views_objects.version as o_ver,
|
|
36
|
+
views_objects.created_by as o_cby,
|
|
37
|
+
views_objects.created_on as o_con,
|
|
38
|
+
|
|
39
|
+
elements.class as e_class,
|
|
40
|
+
elements.name as e_name,
|
|
41
|
+
elements.documentation as e_doc,
|
|
42
|
+
elements.version as e_ver,
|
|
43
|
+
elements.created_by as e_cby,
|
|
44
|
+
elements.created_on as e_con,
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
relationships.id as r_id,
|
|
48
|
+
relationships.version as r_ver,
|
|
49
|
+
relationships.class as r_class,
|
|
50
|
+
relationships.name as r_name,
|
|
51
|
+
relationships.source_id as s_eid,
|
|
52
|
+
relationships.target_id as t_eid,
|
|
53
|
+
relationships.created_by as r_cby,
|
|
54
|
+
relationships.created_on as r_con,
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
views_connections.source_object_id as s_oid,
|
|
58
|
+
views_connections.target_object_id as t_oid,
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
properties.name as prop_name,
|
|
62
|
+
properties.value as prop_value
|
|
63
|
+
|
|
64
|
+
from views_connections_in_view
|
|
65
|
+
INNER JOIN views_connections ON views_connections_in_view.connection_id = views_connections.id
|
|
66
|
+
AND views_connections.version = (select max(vc1.version) from views_connections as vc1 where vc1.id = views_connections_in_view.connection_id )
|
|
67
|
+
INNER JOIN relationships ON relationships.id = views_connections.relationship_id
|
|
68
|
+
|
|
69
|
+
INNER JOIN views_objects ON (views_objects.id = views_connections.source_object_id OR
|
|
70
|
+
views_objects.id = views_connections.target_object_id) AND
|
|
71
|
+
|
|
72
|
+
views_objects.version = (select max(vo1.version) from views_objects as vo1 where (
|
|
73
|
+
(vo1.id in (views_connections.target_object_id) AND vo1.id not in (views_connections.source_object_id))
|
|
74
|
+
))
|
|
75
|
+
|
|
76
|
+
INNER JOIN elements ON elements.id = views_objects.element_id AND elements.version = (select max(e1.version) from elements as e1 where e1.id in (views_objects.element_id))
|
|
77
|
+
LEFT JOIN properties ON properties.parent_id = elements.id AND
|
|
78
|
+
properties.parent_version = (select max(p1.parent_version) from properties as p1 where p1.parent_id in (elements.id))
|
|
79
|
+
#{state[:db][:propSQL]}
|
|
80
|
+
|
|
81
|
+
where views_connections_in_view.view_id like '#{mfv[:view][:id]}'
|
|
82
|
+
and views_connections_in_view.view_version = (select max(vciv1.view_version) from views_connections_in_view as vciv1 where vciv1.view_id like '#{mfv[:view][:id]}')
|
|
83
|
+
#{state[:db][:relSQL]}
|
|
84
|
+
#{state[:db][:elementsSQL]}
|
|
85
|
+
and elements.version = (select max(e2.version) from elements as e2 where e2.id in (views_objects.element_id))
|
|
86
|
+
|
|
87
|
+
").each do |rowID, row|
|
|
88
|
+
|
|
89
|
+
#unpack("H8H4H4H4H12").join('-')
|
|
90
|
+
row[:m_id] = mfv[:model][:id]
|
|
91
|
+
row[:m_name] = mfv[:model][:name]
|
|
92
|
+
row[:m_ver] = mfv[:model][:ver]
|
|
93
|
+
row[:m_type] = mtype
|
|
94
|
+
|
|
95
|
+
row[:f_id] = mfv[:folder][:id]
|
|
96
|
+
row[:f_name] = mfv[:folder][:name]
|
|
97
|
+
row[:f_ver] = mfv[:folder][:ver]
|
|
98
|
+
|
|
99
|
+
row[:v_id] = mfv[:view][:id]
|
|
100
|
+
row[:v_name] = mfv[:view][:name]
|
|
101
|
+
row[:v_ver] = mfv[:view][:ver]
|
|
102
|
+
row[:v_point] = mfv[:view][:viewpoint]
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
case row[:o_oid]
|
|
106
|
+
when row[:s_oid]
|
|
107
|
+
f12 = {:self => :s, :d => 12, :f1 => row[:s_eid], :f2 => row[:t_eid], :f3 => row[:s_oid], :myOID => row[:s_oid], :pairOID => row[:t_oid]}
|
|
108
|
+
f21 = {:self => :t, :d => 21, :f1 => row[:t_eid], :f2 => row[:s_eid], :f3 => row[:t_oid], :myOID => row[:s_oid], :pairOID => row[:t_oid]}
|
|
109
|
+
|
|
110
|
+
when row[:t_oid]
|
|
111
|
+
f12 = {:self => :s, :d => 12, :f1 => row[:t_eid], :f2 => row[:s_eid], :f3 => row[:t_oid], :myOID => row[:t_oid], :pairOID => row[:s_oid]}
|
|
112
|
+
f21 = {:self => :t, :d => 21, :f1 => row[:s_eid], :f2 => row[:t_eid], :f3 => row[:s_oid], :myOID => row[:t_oid], :pairOID => row[:s_oid]}
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
initElementsHash(args, mtype, f12)
|
|
117
|
+
initElementsHash(args, mtype, f21)
|
|
118
|
+
|
|
119
|
+
args[:elements][:base][mtype][:oid] ||= {}
|
|
120
|
+
args[:elements][:base][mtype][:oid][12] ||= {}
|
|
121
|
+
args[:elements][:base][mtype][:oid][21] ||= {}
|
|
122
|
+
args[:elements][:base][mtype][:oid][12][f12[:myOID]] = {:f1 => f12[:f1], :f2 => f12[:f2], :f3 => f12[:f3]}
|
|
123
|
+
args[:elements][:base][mtype][:oid][21][f21[:myOID]] = {:f1 => f21[:f1], :f2 => f21[:f2], :f3 => f21[:f3]}
|
|
124
|
+
|
|
125
|
+
args[:elements][:base][mtype][:id][f12[:f1]][f12[:f2]][f12[:f3]][f12[:self]][:myOID] = f12[:myOID]
|
|
126
|
+
args[:elements][:base][mtype][:id][f21[:f1]][f21[:f2]][f21[:f3]][f21[:self]][:myOID] = f21[:myOID]
|
|
127
|
+
|
|
128
|
+
args[:elements][:base][mtype][:id][f12[:f1]][f12[:f2]][f12[:f3]][f12[:self]][:pairOID] = f12[:pairOID]
|
|
129
|
+
args[:elements][:base][mtype][:id][f21[:f1]][f21[:f2]][f21[:f3]][f21[:self]][:pairOID] = f21[:pairOID]
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
# args[:elements][:base][mtype][:id][f12[:f1]][f12[:f2]][f12[:f3]][f12[:self]][:direction] = f12[:d]
|
|
133
|
+
# args[:elements][:base][mtype][:id][f21[:f1]][f21[:f2]][f21[:f3]][f21[:self]][:direction] = f21[:d]
|
|
134
|
+
|
|
135
|
+
row.each do |k, v|
|
|
136
|
+
key = k.to_s.split('_')
|
|
137
|
+
key[1] =~ /id$/ ? key = "#{key[0]}#{key[1].upcase}".to_sym : key = "#{key[0]}#{key[1].capitalize}".to_sym
|
|
138
|
+
|
|
139
|
+
case key
|
|
140
|
+
when :propName
|
|
141
|
+
unless row[:prop_name].nil?
|
|
142
|
+
args[:elements][:base][mtype][:id][f12[:f1]][f12[:f2]][f12[:f3]][f12[:self]][:props] ||= {}
|
|
143
|
+
args[:elements][:base][mtype][:id][f12[:f1]][f12[:f2]][f12[:f3]][f12[:self]][:props][row[:prop_name]] = row[:prop_value]
|
|
144
|
+
|
|
145
|
+
args[:elements][:base][mtype][:id][f21[:f1]][f21[:f2]][f21[:f3]][f21[:self]][:props] ||= {}
|
|
146
|
+
args[:elements][:base][mtype][:id][f21[:f1]][f21[:f2]][f21[:f3]][f21[:self]][:props][row[:prop_name]] = row[:prop_value]
|
|
147
|
+
else
|
|
148
|
+
args[:elements][:base][mtype][:id][f12[:f1]][f12[:f2]][f12[:f3]][f12[:self]][:props] ||= nil
|
|
149
|
+
args[:elements][:base][mtype][:id][f21[:f1]][f21[:f2]][f21[:f3]][f21[:self]][:props] ||= nil
|
|
150
|
+
end
|
|
151
|
+
when :propValue
|
|
152
|
+
next
|
|
153
|
+
when :rClass, :mID, :mName, :mVer, :mType, :fID, :fName, :fVer, :vID, :vName, :vVer, :vPoint, :rID, :rCby, :rVer
|
|
154
|
+
args[:elements][:base][mtype][:id][f12[:f1]][f12[:f2]][f12[:f3]][:c][key] = v
|
|
155
|
+
args[:elements][:base][mtype][:id][f21[:f1]][f21[:f2]][f21[:f3]][:c][key] = v
|
|
156
|
+
when :rCon
|
|
157
|
+
epoh = Time.parse(v).to_i
|
|
158
|
+
args[:elements][:base][mtype][:id][f12[:f1]][f12[:f2]][f12[:f3]][:c][key] = epoh
|
|
159
|
+
args[:elements][:base][mtype][:id][f21[:f1]][f21[:f2]][f21[:f3]][:c][key] = epoh
|
|
160
|
+
when :eClass, :eName, :oCby, :oVer, :eVer
|
|
161
|
+
args[:elements][:base][mtype][:id][f12[:f1]][f12[:f2]][f12[:f3]][f12[:self]][key] = v
|
|
162
|
+
args[:elements][:base][mtype][:id][f21[:f1]][f21[:f2]][f21[:f3]][f21[:self]][key] = v
|
|
163
|
+
when :oCon
|
|
164
|
+
epoh = Time.parse(v).to_i
|
|
165
|
+
args[:elements][:base][mtype][:id][f12[:f1]][f12[:f2]][f12[:f3]][f12[:self]][key] = epoh
|
|
166
|
+
args[:elements][:base][mtype][:id][f21[:f1]][f21[:f2]][f21[:f3]][f21[:self]][key] = epoh
|
|
167
|
+
when :sOID, :tOID
|
|
168
|
+
true
|
|
169
|
+
else
|
|
170
|
+
# pp "#{key} - #{v}"
|
|
171
|
+
true
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
ArchestryLookup.logger.debug "### ROW ##{i}: #{row}"
|
|
176
|
+
i = i + 1
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
i = 1
|
|
180
|
+
schema = ArchestryLookup::Schema.getElementsSchema
|
|
181
|
+
args[:elements][:base][mtype][:id].each do |f1, f1Params|
|
|
182
|
+
f1Params.each do |f2, f2Params|
|
|
183
|
+
f2Params.clone.each do |f3, e|
|
|
184
|
+
postCheck(args, mtype, f1, f2, f3, e, :s, :t)
|
|
185
|
+
postCheck(args, mtype, f1, f2, f3, e, :t, :s)
|
|
186
|
+
makeElementsLookups(args, :elements, schema, e, f1, f2, f3)
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def makeElementsLookups(args, keyType, schema, container, f1, f2, f3)
|
|
194
|
+
schema[keyType][:schema].each do |k|
|
|
195
|
+
# p "#{k} :: #{container[:c][k]}"
|
|
196
|
+
args[keyType][k][container[:c][k]][f1][f2][f3] ||= {}
|
|
197
|
+
end
|
|
198
|
+
schema[keyType][:schemaDir].each do |k|
|
|
199
|
+
args[keyType][k] ||= {}
|
|
200
|
+
[:s, :t].each do |mod|
|
|
201
|
+
args[keyType][k][container[mod][k]][f1][f2][f3] ||= {}
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
def postCheck(args, mtype, f1, f2, f3, e, key, sure)
|
|
207
|
+
unless e.has_key?(key)
|
|
208
|
+
|
|
209
|
+
fPairOID12 = args[:elements][:base][mtype][:oid][12][e[sure][:pairOID]]
|
|
210
|
+
fPairOID21 = args[:elements][:base][mtype][:oid][21][e[sure][:pairOID]]
|
|
211
|
+
|
|
212
|
+
is_lookup = true if args[:elements][:base][mtype][:id].has_key?(fPairOID12[:f1]) and args[:elements][:base][mtype][:id][fPairOID12[:f1]].has_key?(fPairOID12[:f2]) and args[:elements][:base][mtype][:id][fPairOID12[:f1]][fPairOID12[:f2]].has_key?(fPairOID12[:f3]) and args[:elements][:base][mtype][:id][fPairOID12[:f1]][fPairOID12[:f2]][fPairOID12[:f3]].has_key?(key)
|
|
213
|
+
# lookup21 = args[:elements][:base][mtype][:id][fPairOID21[:f1]][fPairOID21[:f2]][fPairOID21[:f3]]
|
|
214
|
+
|
|
215
|
+
if is_lookup == true
|
|
216
|
+
args[:elements][:base][mtype][:id][f1][f2][f3][key] = args[:elements][:base][mtype][:id][fPairOID12[:f1]][fPairOID12[:f2]][fPairOID12[:f3]][key]
|
|
217
|
+
else
|
|
218
|
+
p "#{f1} - #{f2} - #{f3}"
|
|
219
|
+
puts "## !!! No key ':#{key}' in view '#{e[:c][:vName]}': probably fail in link '#{e[:c][:rClass]}' of element '#{e[sure][:eName]}' of class #{e[sure][:eClass]}'! \n## Remove all unused elements & relations, recreate obj links and try again."
|
|
220
|
+
exit 1
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
end
|
data/lib/tooling/hash.rb
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
|
2
|
+
## / / / / License \ \ \ \
|
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
|
7
|
+
######## ####### ######## ####### ######## ########
|
|
8
|
+
## / / / / Code Climate \ \ \ \
|
|
9
|
+
## Language = ruby
|
|
10
|
+
## Indent = space; 2 chars;
|
|
11
|
+
######## ####### ######## ####### ######## ########
|
|
12
|
+
|
|
13
|
+
class Hash
|
|
14
|
+
def self.recursive
|
|
15
|
+
new { |hash, key| hash[key] = recursive }
|
|
16
|
+
end
|
|
17
|
+
end
|
data/lib/tooling/log.rb
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
|
2
|
+
## / / / / License \ \ \ \
|
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
|
7
|
+
######## ####### ######## ####### ######## ########
|
|
8
|
+
## / / / / Code Climate \ \ \ \
|
|
9
|
+
## Language = ruby
|
|
10
|
+
## Indent = space; 2 chars;
|
|
11
|
+
######## ####### ######## ####### ######## ########
|
|
12
|
+
|
|
13
|
+
module ArchestryLookup
|
|
14
|
+
def self.logger
|
|
15
|
+
@logger ||= Log.new('info')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class Log
|
|
19
|
+
def initialize(debug_level)
|
|
20
|
+
@logger ||= Logger.new(STDERR)
|
|
21
|
+
@logger.datetime_format = "sec: %S.%6N"
|
|
22
|
+
@logger.formatter = proc do |_severity, _datetime, _progname, msg|
|
|
23
|
+
"#{msg}\n"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
@debug_level = debug_level
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def catch(message)
|
|
30
|
+
@logger.debug "\033[33m#{message}\033[0m" if [:debug].include? @debug_level.to_sym
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def debug(message)
|
|
34
|
+
@logger.debug "\033[32m#{message}\033[0m" if [:debug].include? @debug_level.to_sym
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def info(message)
|
|
38
|
+
@logger.info "\033[36m#{message}\033[0m" if [:info, :debug].include? @debug_level.to_sym
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def warn(message)
|
|
42
|
+
@logger.warn "\033[35m#{message}\033[0m" if [:warn, :info, :debug].include? @debug_level.to_sym
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def error(message)
|
|
46
|
+
@logger.error "\033[31m#{message}\033[0m" if [:error, :warn, :info, :debug].include? @debug_level.to_sym
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|