Module: Archimate::DataModel::Referenceable

Included in:
Connection, Diagram, Element, Organization, PropertyDefinition, ReferenceableList, Relationship, ViewNode, Viewpoint
Defined in:
lib/archimate/data_model/referenceable.rb

Overview

Something that can be referenced by another entity.

Instance Method Summary collapse

Instance Method Details

#add_reference(referencer) ⇒ Object



7
8
9
# File 'lib/archimate/data_model/referenceable.rb', line 7

def add_reference(referencer)
  references << referencer unless references.include?(referencer)
end

#destroyObject



23
24
25
26
# File 'lib/archimate/data_model/referenceable.rb', line 23

def destroy
  references.each { |ref| ref.remove_reference(self) }
  to_h.values.select { |v| v.is_a?(Referenceable) }.each { |ref| ref.remove_reference(self) }
end

#modelObject



19
20
21
# File 'lib/archimate/data_model/referenceable.rb', line 19

def model
  references.find { |ref| ref.is_a?(Model) }
end

#referencesObject



15
16
17
# File 'lib/archimate/data_model/referenceable.rb', line 15

def references
  @referenceable_set ||= []
end

#remove_reference(referencer) ⇒ Object



11
12
13
# File 'lib/archimate/data_model/referenceable.rb', line 11

def remove_reference(referencer)
  references.delete(referencer)
end

#replace_item_with(item, replacement) ⇒ Object



35
36
37
38
# File 'lib/archimate/data_model/referenceable.rb', line 35

def replace_item_with(item, replacement)
  # default not doing anything
  # puts Archimate::Color.uncolor("        Referenceable(#{cls_name(self)}).replace_item_with item: #{item} replacement: #{replacement}")
end

#replace_with(other) ⇒ Object



28
29
30
31
32
33
# File 'lib/archimate/data_model/referenceable.rb', line 28

def replace_with(other)
  references.dup.each do |ref|
    ref.replace_item_with(self, other)
    remove_reference(ref)
  end
end