archestry_lookup 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.gitlab-ci.yml +1 -0
  4. data/Gemfile +3 -0
  5. data/archestry_lookup.gemspec +29 -0
  6. data/lib/archestry_lookup.rb +45 -0
  7. data/lib/context/_refactor_dialog/constructors/DockedGroupings2AppFunctions.rb +28 -0
  8. data/lib/context/_refactor_dialog/constructors/Element2ModSend.rb +28 -0
  9. data/lib/context/_refactor_dialog/constructors/ElementsInElements.rb +29 -0
  10. data/lib/context/_refactor_dialog/data/1.ModReceive2GetData.rb +29 -0
  11. data/lib/context/_refactor_dialog/data/2.GetData2Elements.rb +29 -0
  12. data/lib/context/_refactor_dialog/data/3.GenData2Dest.rb +29 -0
  13. data/lib/context/_refactor_dialog/data/4.Results2GenData.rb +29 -0
  14. data/lib/context/_refactor_dialog/folder_lookup.rb +36 -0
  15. data/lib/context/_refactor_dialog/functional/1.Expect2Events.rb +28 -0
  16. data/lib/context/_refactor_dialog/functional/2.1.Events2AppEvent.rb +28 -0
  17. data/lib/context/_refactor_dialog/functional/2.2.1.Events2ModReceive.rb +28 -0
  18. data/lib/context/_refactor_dialog/functional/2.2.2.ModReceive2AppEvent.rb +28 -0
  19. data/lib/context/_refactor_dialog/functional/3.Appevent2EventBus.rb +28 -0
  20. data/lib/context/_refactor_dialog/functional/4.1.AppEvent2Elements.rb +28 -0
  21. data/lib/context/_refactor_dialog/functional/4.2.Elements2AppEvent.rb +28 -0
  22. data/lib/context/_refactor_dialog/functional/5.1.Element2ModElements.rb +28 -0
  23. data/lib/context/_refactor_dialog/functional/5.2.Element2ModSend.rb +27 -0
  24. data/lib/context/_refactor_dialog/functional/6.ModElementsSpecs.rb +28 -0
  25. data/lib/context/_refactor_dialog/functional/7.ElementChains.rb +28 -0
  26. data/lib/context/_refactor_dialog/main.rb +69 -0
  27. data/lib/context/archestry/library.rb +53 -0
  28. data/lib/context/archestry/prepost.rb +39 -0
  29. data/lib/objects/_old.rb +43 -0
  30. data/lib/objects/lookup.rb +152 -0
  31. data/lib/schema/schema.rb +38 -0
  32. data/lib/sql/dbhandlers.rb +81 -0
  33. data/lib/sql/lookup_mfv.rb +113 -0
  34. data/lib/sql/pre.rb +51 -0
  35. data/lib/sql/view2ModelElements.rb +227 -0
  36. data/lib/tooling/hash.rb +17 -0
  37. data/lib/tooling/log.rb +49 -0
  38. data/license.txt +428 -0
  39. 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
@@ -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
@@ -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