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,81 @@
1
+ require File.join(File.dirname(__FILE__), 'merge.rb')
2
+ require File.join(File.dirname(__FILE__), 'merge_classes.rb')
3
+ require File.join(File.dirname(__FILE__), 'merge_use_cases.rb')
4
+
5
+ class MergePackages < Merge
6
+
7
+ def initialize()
8
+ super()
9
+ end
10
+
11
+ def verify
12
+
13
+ @log.debug("Checking Packages...") if @only_check
14
+
15
+ @from.packages.each do |package|
16
+ check_changes package
17
+ end
18
+
19
+ check_removed
20
+
21
+ end
22
+
23
+ def check_changes(from_package)
24
+
25
+ @log.info("Checking Package #{from_package.full_name}") if @only_check
26
+
27
+ to_package = @to.package_by_full_name(from_package.full_name)
28
+
29
+ if to_package.nil?
30
+ new_obj from_package
31
+ else
32
+ check_existing_package(from_package, to_package)
33
+ end
34
+ end
35
+
36
+ def new_obj(from_package)
37
+ command = "+ Package #{from_package.full_name}"
38
+ @commands.add_command_to_buffer(command)
39
+ end
40
+
41
+ def check_existing_package(from_package, to_package)
42
+
43
+ @log.debug("Checking existing package '#{from_package.name}'...") if @only_check
44
+
45
+ merge = MergeClasses.new(from_package, to_package)
46
+ @only_check ? merge.check : merge.merge
47
+
48
+ merge = MergeUseCases.new(from_package, to_package)
49
+ @only_check ? merge.check : merge.merge
50
+ end
51
+
52
+ def check_removed
53
+
54
+ @log.debug("Checking Removed Packages...") if @only_check
55
+
56
+ @to.packages.each do |to_package|
57
+
58
+ ok = false
59
+ @from.packages.each do |from_package|
60
+
61
+ if from_package.full_name == to_package.full_name
62
+ ok = true
63
+ break
64
+ end
65
+ end
66
+ if !ok
67
+ @log.info("Package removed: #{to_package.full_name}") if @only_check
68
+ command = "- Package #{to_package.full_name}"
69
+ @commands.add_command_to_buffer(command)
70
+ unless @only_check
71
+ if @commands.has_command?(command)
72
+ @log.info "[OK] #{command}"
73
+ else
74
+ #@log.info "[NOT] #{command}"
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ end
@@ -0,0 +1,89 @@
1
+ require File.join(File.dirname(__FILE__), 'merge.rb')
2
+
3
+ class MergeParameters < Merge
4
+
5
+ def initialize(name, from_tag, to_tag)
6
+ super()
7
+ @name = name
8
+ @from_tag = from_tag
9
+ @to_tag = to_tag
10
+ end
11
+
12
+ def verify
13
+
14
+ @from_tag.parameters.each do |from_parameter|
15
+ check_changes(from_parameter)
16
+ end
17
+
18
+ check_removed
19
+
20
+ end
21
+
22
+ def check_changes(from_parameter)
23
+
24
+ @log.debug("Checking #{@name}Parameter #{from_parameter.full_name}...")
25
+
26
+ to_parameter = @to_tag.parameter_by_name(from_parameter.name)
27
+
28
+ if to_parameter.nil?
29
+ new_obj from_parameter
30
+ else
31
+ check_existing(from_parameter, to_parameter)
32
+ end
33
+ end
34
+
35
+ def new_obj(from_parameter)
36
+
37
+ @log.debug("New Parameter #{from_parameter.name}...")
38
+
39
+ command = "+ #{@name}Parameter #{@from_tag.full_name} {'#{from_parameter.name}'}"
40
+ @commands.add_command_to_buffer(command)
41
+ unless @only_check
42
+ if @commands.has_command?(command)
43
+ @log.info "[OK] #{command}"
44
+ else
45
+ #@log.info "[NOT] #{command}"
46
+ end
47
+ end
48
+ end
49
+
50
+ def check_existing(from_parameter, to_parameter)
51
+
52
+ # TODO
53
+
54
+ # kind
55
+
56
+ # UML:Parameter.type
57
+
58
+ # Stereotypes
59
+ merge = MergeStereotypes.new("#{@name}Parameter", from_parameter, to_parameter)
60
+ @only_check ? merge.check : merge.merge
61
+
62
+ # TaggedValues
63
+ merge = MergeTaggedValues.new("#{@name}Parameter", from_parameter, to_parameter)
64
+ @only_check ? merge.check : merge.merge
65
+ end
66
+
67
+ def check_removed
68
+ to_parameters = @to_tag.parameters.each do |to_parameter|
69
+ ok = false
70
+ @from_tag.parameters.each do |from_parameter|
71
+ if to_parameter.name == from_parameter.name
72
+ ok = true
73
+ break
74
+ end
75
+ end
76
+ if !ok
77
+ command = "- #{@name}Parameter #{@from_tag.full_name} {'#{to_parameter.name}'}"
78
+ @commands.add_command_to_buffer(command)
79
+ unless @only_check
80
+ if @commands.has_command?(command)
81
+ @log.info "[OK] #{command}"
82
+ else
83
+ #@log.info "[NOT] #{command}"
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,9 @@
1
+ require File.join(File.dirname(__FILE__), 'merge_states.rb')
2
+
3
+ class MergePseudoStates < MergeStates
4
+
5
+ def initialize(from_activity_graph, to_activity_graph)
6
+ super("PseudoState", "pseudo_states", from_activity_graph, to_activity_graph)
7
+ end
8
+
9
+ end
@@ -0,0 +1,71 @@
1
+ require File.join(File.dirname(__FILE__), 'merge.rb')
2
+ require File.join(File.dirname(__FILE__), 'merge_parameters.rb')
3
+
4
+ class MergeSignalEvents < Merge
5
+
6
+ def initialize(from_use_case, to_use_case)
7
+ super()
8
+ @from_use_case = from_use_case
9
+ @to_use_case = to_use_case
10
+ end
11
+
12
+ def verify
13
+ #@from_use_case.signal_events.each do |from_signal_event|
14
+ # check_changes(from_signal_event)
15
+ #end
16
+
17
+ #check_removed
18
+ end
19
+
20
+ def check_changes(from_signal_event)
21
+ @log.debug("Checking Signal Event #{from_signal_event.name}...")
22
+
23
+ to_signal_event = @to_use_case.signal_event_by_name(from_signal_event.name)
24
+
25
+ if to_signal_event.nil?
26
+ new_obj from_signal_event
27
+ else
28
+ check_existing(from_signal_event, to_signal_event)
29
+ end
30
+ end
31
+
32
+ def check_removed
33
+
34
+ to_signal_events = @to_use_case.signal_events.each do |to_signal_event|
35
+
36
+ ok = false
37
+ @from_use_case.signal_events.each do |from_signal_event|
38
+
39
+ if from_signal_event.name == to_signal_event.name
40
+ ok = true
41
+ break
42
+ end
43
+ end
44
+ if !ok
45
+ command = "- SignalEvent #{@from_use_case.full_name}::#{to_signal_event.name}"
46
+ @commands.add_command_to_buffer(command)
47
+ unless @only_check
48
+ if @commands.has_command?(command)
49
+ @log.info "[OK] #{command}"
50
+ else
51
+ #@log.info "[NOT] #{command}"
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ def new_obj(from_signal_event)
59
+ command = "+ SignalEvent #{@from_use_case.full_name}::#{from_signal_event.name}"
60
+ @commands.add_command_to_buffer(command)
61
+ end
62
+
63
+ def check_existing(from_signal_event, to_signal_event)
64
+
65
+ @log.debug("Checking existing Signal Event: #{@from_use_case.full_name}::#{from_signal_event.name}")
66
+
67
+ # Parameters
68
+ merge = MergeParameters.new("SignalEvent", from_signal_event, to_signal_event)
69
+ @only_check ? merge.check : merge.merge
70
+ end
71
+ end
@@ -0,0 +1,81 @@
1
+ require File.join(File.dirname(__FILE__), 'merge.rb')
2
+ require File.join(File.dirname(__FILE__), 'merge_stereotypes.rb')
3
+ require File.join(File.dirname(__FILE__), 'merge_tagged_values.rb')
4
+
5
+ class MergeStates < Merge
6
+
7
+ def initialize(name_state, method_name, from_activity_graph, to_activity_graph)
8
+ super()
9
+ @name_state = name_state
10
+ @from_activity_graph = from_activity_graph
11
+ @to_activity_graph = to_activity_graph
12
+ @method_name = method_name
13
+ end
14
+
15
+ def verify
16
+
17
+ @from_activity_graph.send(@method_name).each do |state|
18
+ check_changes state
19
+ end
20
+
21
+ check_removed
22
+ end
23
+
24
+ def check_changes(from_state)
25
+
26
+ to_state = @to_activity_graph.state_by_name(@name_state, from_state.name)
27
+
28
+ @log.debug("Checking #{@name_state} #{from_state.full_name}")
29
+
30
+ if to_state.nil?
31
+ new_obj from_state
32
+ else
33
+ check_existing(from_state, to_state)
34
+ end
35
+ end
36
+
37
+ def new_obj(from_action_state)
38
+ command = "+ #{@name_state} #{from_action_state.full_name}"
39
+ @commands.add_command_to_buffer(command)
40
+ end
41
+
42
+ def check_existing(from_action_state, to_action_state)
43
+
44
+ # Stereotypes
45
+ merge = MergeStereotypes.new(@name_state, from_action_state, to_action_state)
46
+ @only_check ? merge.check : merge.merge
47
+
48
+ # TaggedValues
49
+ merge = MergeTaggedValues.new(@name_state, from_action_state, to_action_state)
50
+ @only_check ? merge.check : merge.merge
51
+ end
52
+
53
+ def check_removed
54
+
55
+ @log.debug("Checking Removed #{@name_state}...")
56
+
57
+ @to_activity_graph.send(@method_name).each do |to_action_state|
58
+
59
+ ok = false
60
+ @from_activity_graph.send(@method_name).each do |from_action_state|
61
+
62
+ if from_action_state.name == to_action_state.name
63
+ ok = true
64
+ break
65
+ end
66
+ end
67
+ if !ok
68
+ @log.debug("#{@name_state} Removed: #{to_action_state.full_name}")
69
+ command = "- #{@name_state} #{to_action_state.full_name}"
70
+ @commands.add_command_to_buffer(command)
71
+ unless @only_check
72
+ if @commands.has_command?(command)
73
+ @log.info "[OK] #{command}"
74
+ else
75
+ #@log.info "[NOT] #{command}"
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,82 @@
1
+ require File.join(File.dirname(__FILE__), 'merge.rb')
2
+
3
+ class MergeStereotypes < Merge
4
+
5
+ def initialize(name, from_tag, to_tag)
6
+ super()
7
+ @name = name
8
+ @from_tag = from_tag
9
+ @to_tag = to_tag
10
+ end
11
+
12
+ def verify
13
+
14
+ @from_tag.stereotypes.each do |from_stereotype|
15
+ check_changes(from_stereotype)
16
+ end
17
+
18
+ check_removed
19
+
20
+ end
21
+
22
+ def check_changes(from_stereotype)
23
+
24
+ @log.debug("Checking Stereotype of #{@name} #{from_stereotype.name}...")
25
+
26
+ to_stereotype = @to_tag.stereotype_by_name(from_stereotype.name)
27
+
28
+ if to_stereotype.nil?
29
+ new_stereotype from_stereotype
30
+ end
31
+ end
32
+
33
+ def new_stereotype(from_stereotype)
34
+
35
+ @log.debug("New Stereotype of #{@name} #{from_stereotype.name}...")
36
+
37
+ command = "\t+ #{@name}Stereotype #{@from_tag.full_name} {'#{from_stereotype.name}'}"
38
+ @commands.add_command_to_buffer(command)
39
+ unless @only_check
40
+ if @commands.has_command?(command)
41
+ @to_tag.add_xml_stereotype(from_stereotype.xml)
42
+ @log.info "[OK] #{command}"
43
+ else
44
+ @log.debug "[NOT] #{command}"
45
+ end
46
+ end
47
+ end
48
+
49
+ def check_removed
50
+ @to_tag.stereotypes.each do |to_stereotype|
51
+
52
+ #puts "Xml stereotype: #{to_stereotype.xml}"
53
+ #puts "Xml stereotype parent: #{to_stereotype.xml.parent}\n\n"
54
+
55
+ ok = false
56
+ @from_tag.stereotypes.each do |from_stereotype|
57
+ if to_stereotype.name == from_stereotype.name
58
+ ok = true
59
+ break
60
+ end
61
+ end
62
+ if !ok
63
+ command = "\t- #{@name}Stereotype #{@from_tag.full_name} {'#{to_stereotype.name}'}"
64
+ @commands.add_command_to_buffer(command)
65
+ unless @only_check
66
+ if @commands.has_command?(command)
67
+
68
+ to_stereotype.xml.inner_html = "asdasd"
69
+ @to_tag.stereotypes.delete(to_stereotype)
70
+
71
+ #puts "testando: #{to_stereotype.xml}"
72
+ #puts "testando: #{@to_tag.xml}"
73
+ @log.info "[OK] #{command}"
74
+ else
75
+ @log.debug "[NOT] #{command}"
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+
82
+ end
@@ -0,0 +1,75 @@
1
+ require File.join(File.dirname(__FILE__), 'merge.rb')
2
+
3
+ class MergeTaggedValues < Merge
4
+
5
+ def initialize(name, from_tag, to_tag)
6
+ super()
7
+ @name = name
8
+ @from_tag = from_tag
9
+ @to_tag = to_tag
10
+ end
11
+
12
+ def verify
13
+ @from_tag.tagged_values.each do |from_tagged_value|
14
+ check_new(from_tagged_value)
15
+ end
16
+ check_removed
17
+ end
18
+
19
+ def check_new(from_tagged_value)
20
+
21
+ @log.debug("Checking TaggedValue of #{@name} '#{from_tagged_value.name}'...") if @only_check
22
+
23
+ to_tagged_value = @to_tag.tagged_value_by_name(from_tagged_value.name)
24
+ if to_tagged_value.nil?
25
+
26
+ @log.debug("New Tagged Value #{from_tagged_value.name}...") if @only_check
27
+ command = "\t+ #{@name}TaggedValue #{@from_tag.full_name} {'#{from_tagged_value.name}' = '#{from_tagged_value.value}'}"
28
+ @commands.add_command_to_buffer(command)
29
+ unless @only_check
30
+ if @commands.has_command?(command)
31
+ @to_tag.add_xml_tagged_value(from_tagged_value.xml.to_xml)
32
+ @log.info "[OK] #{command}"
33
+ else
34
+ #@log.info "[NOT] #{command}"
35
+ end
36
+ end
37
+ else
38
+ if from_tagged_value.value != to_tagged_value.value
39
+ @log.debug("Change Tagged Value #{from_tagged_value.name}...") if @only_check
40
+ command = "\t* #{@name}TaggedValue #{@from_tag.full_name} {'#{from_tagged_value.name}'} '#{to_tagged_value.value}' --> '#{from_tagged_value.value}'"
41
+ @commands.add_command_to_buffer(command)
42
+ unless @only_check
43
+ if @commands.has_command?(command)
44
+ @log.info "[OK] #{command}"
45
+ else
46
+ #@log.info "[NOT] #{command}"
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ def check_removed
54
+ to_tagged_values = @to_tag.tagged_values.each do |to_tagged_value|
55
+ ok = false
56
+ @from_tag.tagged_values.each do |from_tagged_value|
57
+ if to_tagged_value.name == from_tagged_value.name
58
+ ok = true
59
+ break
60
+ end
61
+ end
62
+ if !ok
63
+ command = "\t- #{@name}TaggedValue #{@from_tag.full_name} {'#{to_tagged_value.name}'}"
64
+ @commands.add_command_to_buffer(command)
65
+ unless @only_check
66
+ if @commands.has_command?(command)
67
+ @log.info "[OK] #{command}"
68
+ else
69
+ #@log.info "[NOT] #{command}"
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end