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,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:
|