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.
- 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
|