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.
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