xmimerge 0.0.1

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.
@@ -0,0 +1,98 @@
1
+ require File.join(File.dirname(__FILE__), 'merge.rb')
2
+
3
+ class MergeTransitions < Merge
4
+
5
+ def initialize(from_activity_graph, to_activity_graph)
6
+ super()
7
+ @from_activity_graph = from_activity_graph
8
+ @to_activity_graph = to_activity_graph
9
+ end
10
+
11
+ def verify
12
+
13
+ @log.info("Checking Transitions: " + @from_activity_graph.transitions.size.to_s)
14
+
15
+ @from_activity_graph.transitions.each do |transition|
16
+ check_changes transition
17
+ end
18
+
19
+ check_removed
20
+ end
21
+
22
+ def check_changes(from_transition)
23
+
24
+ from_source_obj = @from.state_by_id(from_transition.source)
25
+ from_target_obj = @from.state_by_id(from_transition.target)
26
+
27
+ to_transition = @to_activity_graph.transition_by_source_target_ids(from_source_obj.id, from_target_obj.id)
28
+
29
+ @log.debug("Checking Transition between '#{from_source_obj.name}' and '#{from_target_obj.name}'")
30
+
31
+ if to_transition.nil?
32
+ new_obj(from_transition, from_source_obj, from_target_obj)
33
+ else
34
+ check_existing(from_transition, to_transition)
35
+ end
36
+ end
37
+
38
+ def new_obj(from_transition, from_source_obj, from_target_obj)
39
+
40
+ if from_source_obj.name == "Decision Point"
41
+ source = "#{from_source_obj.name} [#{from_transition.guard_condition}]"
42
+ else
43
+ source = "#{from_source_obj.name}"
44
+ end
45
+
46
+ target = "#{from_target_obj.name}"
47
+
48
+ command = "+ Transition #{from_source_obj.activity_graph.full_name} {#{source}} --> {#{target}}"
49
+ @commands.add_command_to_buffer(command)
50
+ end
51
+
52
+ def check_existing(from_transition, to_transition)
53
+
54
+ # Stereotypes
55
+ merge = MergeStereotypes.new("Transition", from_transition, to_transition)
56
+ @only_check ? merge.check : merge.merge
57
+
58
+ # TaggedValues
59
+ merge = MergeTaggedValues.new("Transition", from_transition, to_transition)
60
+ @only_check ? merge.check : merge.merge
61
+ end
62
+
63
+ def check_removed
64
+
65
+ @log.debug("Checking Removed Transitions ...")
66
+
67
+ @to_activity_graph.transitions.each do |to_transition|
68
+
69
+ to_source_obj = @to.state_by_id(to_transition.source)
70
+ to_target_obj = @to.state_by_id(to_transition.target)
71
+
72
+ ok = false
73
+ @from_activity_graph.transitions.each do |from_transition|
74
+
75
+ from_source_obj = @from.state_by_id(from_transition.source)
76
+ from_target_obj = @from.state_by_id(from_transition.target)
77
+
78
+ if from_source_obj.name == to_source_obj.name && from_target_obj.name == from_target_obj.name
79
+ ok = true
80
+ break
81
+ end
82
+ end
83
+ if !ok
84
+ @log.debug("Transition Removed: #{to_source_obj.activity_graph.full_name} {#{to_source_obj.name}} --> {#{to_target_obj.name}}")
85
+ command = "- Transition #{to_source_obj.activity_graph.full_name} {#{to_source_obj.name}} --> {#{to_target_obj.name}}"
86
+ @commands.add_command_to_buffer(command)
87
+ unless @only_check
88
+ if @commands.has_command?(command)
89
+ @log.info "[OK] #{command}"
90
+ else
91
+ #@log.info "[NOT] #{command}"
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
97
+
98
+ end
@@ -0,0 +1,89 @@
1
+ require File.join(File.dirname(__FILE__), 'merge.rb')
2
+ require File.join(File.dirname(__FILE__), 'merge_activity_graphs.rb')
3
+ require File.join(File.dirname(__FILE__), 'merge_classes.rb')
4
+ require File.join(File.dirname(__FILE__), 'merge_signal_events.rb')
5
+
6
+ class MergeUseCases < Merge
7
+
8
+ def initialize(from_package, to_package)
9
+ super()
10
+ @from_package = from_package
11
+ @to_package = to_package
12
+ end
13
+
14
+ def verify
15
+
16
+ @log.debug("Checking Use Cases...")
17
+
18
+ @from_package.use_cases.each do |use_case|
19
+ check_changes use_case
20
+ end
21
+
22
+ check_removed
23
+ end
24
+
25
+ def check_changes(from_use_case)
26
+
27
+ @log.info("Checking UseCase #{from_use_case.full_name}")
28
+
29
+ to_use_case = @to_package.use_case_by_name(from_use_case.name)
30
+
31
+ if to_use_case.nil?
32
+ new_use_case to_use_case
33
+ else
34
+ check_existing_use_case(from_use_case, to_use_case)
35
+ end
36
+ end
37
+
38
+ def new_use_case(from_use_case)
39
+ command = "+ UseCase #{from_use_case.full_name}"
40
+ @commands.add_command_to_buffer(command)
41
+ end
42
+
43
+ def check_existing_use_case(from_use_case, to_use_case)
44
+
45
+ # Stereotypes
46
+ merge = MergeStereotypes.new("UseCase", from_use_case, to_use_case)
47
+ @only_check ? merge.check : merge.merge
48
+
49
+ # TaggedValues
50
+ merge = MergeTaggedValues.new("UseCase", from_use_case, to_use_case)
51
+ @only_check ? merge.check : merge.merge
52
+
53
+ # SignalEvent
54
+ merge = MergeSignalEvents.new(from_use_case, to_use_case)
55
+ @only_check ? merge.check : merge.merge
56
+
57
+ # SignalEvent
58
+ merge = MergeActivityGraphs.new(from_use_case, to_use_case)
59
+ @only_check ? merge.check : merge.merge
60
+ end
61
+
62
+ def check_removed
63
+ @log.debug("Checking Removed UseCases on package #{@to_package.full_name}...")
64
+
65
+ @to_package.use_cases.each do |to_use_case|
66
+
67
+ ok = false
68
+ @from_package.use_cases.each do |from_use_case|
69
+
70
+ if from_use_case.name == to_use_case.name
71
+ ok = true
72
+ break
73
+ end
74
+ end
75
+ if !ok
76
+ command = "- UseCase #{from_use_case.full_name}"
77
+ @commands.add_command_to_buffer(command)
78
+ unless @only_check
79
+ if @commands.has_command?(command)
80
+ @log.info "[OK] #{command}"
81
+ else
82
+ @log.info "[NOT] #{command}"
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
88
+
89
+ end
@@ -0,0 +1,48 @@
1
+
2
+ class Util
3
+
4
+ def self.attribute_changes(attribute, from, to)
5
+ from_attribute_name = from.attribute(attribute).to_s
6
+ to_attribute_name = to.attribute(attribute).to_s
7
+
8
+ if !(from_attribute_name.eql? to_attribute_name)
9
+ App.instance.logger.debug("Property '#{attribute}' changed: old = #{to_attribute_name}, new = #{from_attribute_name}")
10
+ return [to_attribute_name, from_attribute_name]
11
+ end
12
+ nil
13
+ end
14
+
15
+ def self.check_change_by_method(method, from, to)
16
+
17
+ from_value = from.send(method)
18
+ to_value = to.send(method)
19
+
20
+ if !(from_value.eql? to_value)
21
+ App.logger.debug("'#{method}' changed: old = '#{to_value}', new = '#{from_value}'")
22
+ return [to_value,from_value]
23
+ end
24
+ nil
25
+ end
26
+
27
+ def self.diff_time(start_time, end_time = Time.now)
28
+ diff = (end_time - start_time)
29
+ s = (diff % 60).to_i
30
+ m = (diff / 60).to_i
31
+ h = (m / 60).to_i
32
+
33
+ if s > 0 || m >0 || h >0
34
+ if h == 0
35
+ if m == 0
36
+ "#{(s < 10) ? '0' + s.to_s : s} second(s)"
37
+ else
38
+ "#{(m < 10) ? '0' + m.to_s : m} minute(s) and #{(s < 10) ? '0' + s.to_s : s} second(s)"
39
+ end
40
+ else
41
+ "#{(h < 10) ? '0' + h.to_s : h}:#{(m < 10) ? '0' + m.to_s : m}:#{(s < 10) ? '0' + s.to_s : s}"
42
+ end
43
+ else
44
+ format("%.5f", diff) + " miliseconds"
45
+ end
46
+ end
47
+
48
+ end
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xmimerge
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Marcus Siqueira
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-28 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A helper gem for merge XMI files
14
+ email: marvinsiq@gmail.com
15
+ executables:
16
+ - xmimerge
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/xmimerge.rb
21
+ - lib/xmimerge/merge_multiplicity.rb
22
+ - lib/xmimerge/merge_associations.rb
23
+ - lib/xmimerge/util.rb
24
+ - lib/xmimerge/merge_packages.rb
25
+ - lib/xmimerge/merge_final_states.rb
26
+ - lib/xmimerge/merge_use_cases.rb
27
+ - lib/xmimerge/merge_action_states.rb
28
+ - lib/xmimerge/merge_activity_graphs.rb
29
+ - lib/xmimerge/merge_call_events.rb
30
+ - lib/xmimerge/merge_classes.rb
31
+ - lib/xmimerge/merge_tagged_values.rb
32
+ - lib/xmimerge/merge.rb
33
+ - lib/xmimerge/merge_stereotypes.rb
34
+ - lib/xmimerge/merge_parameters.rb
35
+ - lib/xmimerge/merge_attributes.rb
36
+ - lib/xmimerge/merge_transitions.rb
37
+ - lib/xmimerge/app.rb
38
+ - lib/xmimerge/merge_associations_end.rb
39
+ - lib/xmimerge/merge_operations.rb
40
+ - lib/xmimerge/merge_signal_events.rb
41
+ - lib/xmimerge/merge_states.rb
42
+ - lib/xmimerge/merge_pseudo_states.rb
43
+ - lib/xmimerge/commands_file.rb
44
+ - bin/xmimerge
45
+ homepage: https://github.com/marvinsiq/xmimerge
46
+ licenses: []
47
+ metadata: {}
48
+ post_install_message:
49
+ rdoc_options: []
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 2.0.7
65
+ signing_key:
66
+ specification_version: 4
67
+ summary: Xmi Merge
68
+ test_files: []
69
+ has_rdoc: