archestry_lookup 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- 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
|