Class: State

Inherits:
Tag
  • Object
show all
Defined in:
lib/xmimodel/state.rb

Direct Known Subclasses

ActionState, FinalState, PseudoState

Instance Attribute Summary collapse

Attributes inherited from Tag

#id, #parent_tag, #xml

Instance Method Summary collapse

Methods inherited from Tag

#xml_root

Constructor Details

#initialize(xml, parent_tag) ⇒ State

Returns a new instance of State.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/xmimodel/state.rb', line 14

def initialize(xml, parent_tag)
	super(xml, parent_tag)

	@activity_graph = parent_tag
	
	@name = xml.attribute("name").to_s

	if @name.nil? || @name.empty?
		
		if xml.name == "Pseudostate"
			if xml.attribute("kind").to_s == "initial"
				@name = "Initial State" 
			else
				@name = "Decision Point" 
			end
		end
		@name = "Final State" if xml.name == "FinalState"
	elsif xml.name == "FinalState"
		@name = "Final State [#{@name}]"
	end

	@stereotypes = Array.new
	XmiHelper.stereotypes(xml).each do |uml_stereotype|
		stereotype = Stereotype.new(uml_stereotype, self)
		@stereotypes << stereotype
	end	

	@tagged_values = Array.new
	XmiHelper.tagged_values(xml).each do |uml_tagged_value|
		tagged_value = TaggedValue.new(uml_tagged_value, self)
		@tagged_values << tagged_value
	end		
end

Instance Attribute Details

#activity_graphObject (readonly)

Returns the value of attribute activity_graph.



7
8
9
# File 'lib/xmimodel/state.rb', line 7

def activity_graph
  @activity_graph
end

#nameObject (readonly)

Returns the value of attribute name.



9
10
11
# File 'lib/xmimodel/state.rb', line 9

def name
  @name
end

#stereotypesObject (readonly)

Returns the value of attribute stereotypes.



11
12
13
# File 'lib/xmimodel/state.rb', line 11

def stereotypes
  @stereotypes
end

#tagged_valuesObject (readonly)

Returns the value of attribute tagged_values.



12
13
14
# File 'lib/xmimodel/state.rb', line 12

def tagged_values
  @tagged_values
end

Instance Method Details

#full_nameObject



60
61
62
# File 'lib/xmimodel/state.rb', line 60

def full_name
	"#{@activity_graph.full_name} {'#{@name}'}"
end

#stereotype_by_name(name) ⇒ Object



48
49
50
51
52
# File 'lib/xmimodel/state.rb', line 48

def stereotype_by_name(name)
	stereotype = @stereotypes.select{|obj| obj.name == name}
	return stereotype[0] if !stereotype.nil? && stereotype.size > 0
	nil		
end

#tagged_value_by_name(tagged_value_name) ⇒ Object



54
55
56
57
58
# File 'lib/xmimodel/state.rb', line 54

def tagged_value_by_name(tagged_value_name)
	tagged_value = @tagged_values.select{|obj| obj.name == tagged_value_name}
	return tagged_value[0] if !tagged_value.nil? && tagged_value.size > 0
	nil
end

#to_sObject



64
65
66
# File 'lib/xmimodel/state.rb', line 64

def to_s
	"State[#{full_name}]"
end