Class: Mxrb::Model::DomainModel

Inherits:
Unit
  • Object
show all
Defined in:
lib/mxrb/model/domain_model.rb

Overview

$Type: DomainModels$DomainModel ContainmentName: "DomainModel" Unlike entities/attributes, DomainModel IS its own Unit row. Entities and Attributes are embedded inside the DomainModel BSON (not separate Unit rows).

Instance Attribute Summary collapse

Attributes inherited from Unit

#bson_type, #container_id, #containment_name, #id, #mpr

Instance Method Summary collapse

Methods inherited from Unit

#initialize, #save!

Constructor Details

This class inherits a constructor from Mxrb::Model::Unit

Instance Attribute Details

#annotationsObject (readonly)

Returns the value of attribute annotations.



14
15
16
# File 'lib/mxrb/model/domain_model.rb', line 14

def annotations
  @annotations
end

#documentationObject (readonly)

Returns the value of attribute documentation.



14
15
16
# File 'lib/mxrb/model/domain_model.rb', line 14

def documentation
  @documentation
end

Instance Method Details

#associationsObject



32
# File 'lib/mxrb/model/domain_model.rb', line 32

def associations = local_associations + cross_associations

#cross_associationsObject



31
# File 'lib/mxrb/model/domain_model.rb', line 31

def cross_associations = @cross_associations || []

#decode(doc) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/mxrb/model/domain_model.rb', line 16

def decode(doc)
  @documentation = doc["documentation"] || doc["Documentation"] || ""
  @annotations   = parse_array(doc["annotations"] || doc["Annotations"])

  entity_docs = parse_array(doc["entities"] || doc["Entities"])
  @entities   = entity_docs.map { Entity.from_bson(_1, @id, @mpr) }

  assoc_docs   = parse_array(doc["associations"] || doc["Associations"])
  @associations = assoc_docs.map { Association.from_bson(_1, @id, @mpr) }
  cross_docs = parse_array(doc["crossAssociations"] || doc["CrossAssociations"])
  @cross_associations = cross_docs.map { Association.from_bson(_1, @id, @mpr) }
end

#entitiesObject



29
# File 'lib/mxrb/model/domain_model.rb', line 29

def entities     = @entities     || []

#inspectObject



46
47
48
# File 'lib/mxrb/model/domain_model.rb', line 46

def inspect
  "#<Mxrb::DomainModel entities=#{entities.size} associations=#{associations.size}>"
end

#local_associationsObject



30
# File 'lib/mxrb/model/domain_model.rb', line 30

def local_associations = @associations || []

#to_bsonObject



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/mxrb/model/domain_model.rb', line 34

def to_bson
  {
    "$ID"           => @id,
    "$Type"         => "DomainModels$DomainModel",
    "entities"      => IO::BsonCodec.build_array(@entities.map(&:to_bson)),
    "associations"  => IO::BsonCodec.build_array(local_associations.map(&:to_bson)),
    "crossAssociations" => IO::BsonCodec.build_array(cross_associations.map(&:to_bson)),
    "annotations"   => IO::BsonCodec.build_array([]),
    "documentation" => @documentation || "",
  }
end