xmimerge 0.0.1

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