xmimerge 0.0.1

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