xmimerge 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/xmimerge +61 -0
- data/lib/xmimerge.rb +53 -0
- data/lib/xmimerge/app.rb +47 -0
- data/lib/xmimerge/commands_file.rb +46 -0
- data/lib/xmimerge/merge.rb +40 -0
- data/lib/xmimerge/merge_action_states.rb +10 -0
- data/lib/xmimerge/merge_activity_graphs.rb +91 -0
- data/lib/xmimerge/merge_associations.rb +116 -0
- data/lib/xmimerge/merge_associations_end.rb +59 -0
- data/lib/xmimerge/merge_attributes.rb +125 -0
- data/lib/xmimerge/merge_call_events.rb +39 -0
- data/lib/xmimerge/merge_classes.rb +122 -0
- data/lib/xmimerge/merge_final_states.rb +9 -0
- data/lib/xmimerge/merge_multiplicity.rb +35 -0
- data/lib/xmimerge/merge_operations.rb +83 -0
- data/lib/xmimerge/merge_packages.rb +81 -0
- data/lib/xmimerge/merge_parameters.rb +89 -0
- data/lib/xmimerge/merge_pseudo_states.rb +9 -0
- data/lib/xmimerge/merge_signal_events.rb +71 -0
- data/lib/xmimerge/merge_states.rb +81 -0
- data/lib/xmimerge/merge_stereotypes.rb +82 -0
- data/lib/xmimerge/merge_tagged_values.rb +75 -0
- data/lib/xmimerge/merge_transitions.rb +98 -0
- data/lib/xmimerge/merge_use_cases.rb +89 -0
- data/lib/xmimerge/util.rb +48 -0
- metadata +69 -0
@@ -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,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
|