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
         
     |