Class: Attribute

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

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) ⇒ Attribute

Returns a new instance of Attribute.



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/attribute.rb', line 20

def initialize(xml, parent_tag)
	super(xml, parent_tag)
	
	@clazz = parent_tag

	@name = xml.attribute("name").to_s.strip
	@visibility = xml.attribute("visibility").to_s
	@visibility = "private" if @visibility == ""

	@obj_type = XmiHelper.attribute_type(xml)
	@type = XmiHelper.attribute_type_name(xml)		

	@initial_value = XmiHelper.attribute_initial_value(xml)
	@multiplicity_range = XmiHelper.multiplicity_range(xml)

	@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

#clazzObject (readonly)

Returns the value of attribute clazz.



15
16
17
# File 'lib/xmimodel/attribute.rb', line 15

def clazz
  @clazz
end

#initial_valueObject (readonly)

Returns the value of attribute initial_value.



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

def initial_value
  @initial_value
end

#multiplicity_rangeObject (readonly)

Returns the value of attribute multiplicity_range.



13
14
15
# File 'lib/xmimodel/attribute.rb', line 13

def multiplicity_range
  @multiplicity_range
end

#nameObject (readonly)

Returns the value of attribute name.



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

def name
  @name
end

#stereotypesObject (readonly)

Returns the value of attribute stereotypes.



17
18
19
# File 'lib/xmimodel/attribute.rb', line 17

def stereotypes
  @stereotypes
end

#tagged_valuesObject (readonly)

Returns the value of attribute tagged_values.



18
19
20
# File 'lib/xmimodel/attribute.rb', line 18

def tagged_values
  @tagged_values
end

#typeObject (readonly)

Returns the value of attribute type.



10
11
12
# File 'lib/xmimodel/attribute.rb', line 10

def type
  @type
end

#visibilityObject (readonly)

Returns the value of attribute visibility.



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

def visibility
  @visibility
end

Instance Method Details

#==(obj) ⇒ Object



102
103
104
105
106
107
108
109
# File 'lib/xmimodel/attribute.rb', line 102

def ==(obj)
	return false if obj.nil?
	if String == obj.class
		full_name == obj
	else
   		full_name == obj.full_name
   	end
end

#add_xml_tagged_value(xml) ⇒ Object



48
49
50
# File 'lib/xmimodel/attribute.rb', line 48

def add_xml_tagged_value(xml)
	model_element_tagged_value().inner_html = model_element_tagged_value().inner_html + xml
end

#enum_objObject



80
81
82
83
84
# File 'lib/xmimodel/attribute.rb', line 80

def enum_obj
	return @enum_obj unless @enum_obj.nil?
	is_enum?
	@enum_obj
end

#full_nameObject



86
87
88
# File 'lib/xmimodel/attribute.rb', line 86

def full_name
	"#{@clazz.full_name}::#{@name}"
end

#is_enum?Boolean

def add_tagged_value(name, value) if tagged_values.include? name tag = tagged_value_by_name name else tagged_value = Nokogiri::XML::Node.new(‘TaggedValue’, self.xml.document) tagged_value = tagged_value = name model_element_tagged_value() << tagged_value end tag.value = value end

Returns:

  • (Boolean)


66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/xmimodel/attribute.rb', line 66

def is_enum?
	return false if @obj_type.nil?
	if @obj_type.class == Nokogiri::XML::Element
		return true if @obj_type.name == "Enumeration"

		if @obj_type.name == "Class"
			id = @obj_type.attribute('xmi.id').to_s
			@enum_obj = xml_root.class_by_id(id)
			return @enum_obj.stereotypes.include?("org.andromda.profile::Enumeration")
		end
	end		
	false		
end

#stereotype_by_name(name) ⇒ Object



90
91
92
93
94
# File 'lib/xmimodel/attribute.rb', line 90

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

#tagged_value_by_name(tagged_value_name) ⇒ Object



96
97
98
99
100
# File 'lib/xmimodel/attribute.rb', line 96

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

#to_sObject



111
112
113
# File 'lib/xmimodel/attribute.rb', line 111

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