Class: Sbuilder::Domain

Inherits:
Object
  • Object
show all
Includes:
Utils::MyLogger
Defined in:
lib/sbuilder/domain.rb

Direct Known Subclasses

DomainCardinality, DomainValue

Constant Summary collapse

PROGNAME =

mixer

"domain"

Constants included from Utils::MyLogger

Utils::MyLogger::LOGFILE

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils::MyLogger

#getLogger, #logfile

Constructor Details

#initialize(options = {}) ⇒ Domain

Returns a new instance of Domain.



16
17
18
19
# File 'lib/sbuilder/domain.rb', line 16

def initialize( options = {} )
  @logger = getLogger( PROGNAME, options )
  @logger.debug( "#{__method__} initialized" )
end

Instance Attribute Details

#extensionObject (readonly)

Returns the value of attribute extension.



8
9
10
# File 'lib/sbuilder/domain.rb', line 8

def extension
  @extension
end

#nameObject (readonly) Also known as: domain_name

Returns the value of attribute name.



6
7
8
# File 'lib/sbuilder/domain.rb', line 6

def name
  @name
end

Instance Method Details

#cardinalityObject

delegate to extension - return 1 if does not exist



50
51
52
53
# File 'lib/sbuilder/domain.rb', line 50

def cardinality
  return 1 unless extension
  extension.cardinality
end

#domain_entriesObject

return array of strings for entries in domain - overrid



96
97
98
99
# File 'lib/sbuilder/domain.rb', line 96

def domain_entries
  arr = *(1..cardinality).map { |i| domain_entry( i ) }
  return arr
end

#domain_entry(i) ⇒ Object

Return domain value for for element ‘i’. Possibly delegate to sub-class.

Parameters:

  • i (Integer|String)

    element index (interger) or String value non integer

Returns:

  • value of domain element ‘i’, false if i==0



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/sbuilder/domain.rb', line 72

def domain_entry( i )

  # interpret 0 as Nil
  return false if i.is_a?(Integer) && i == 0

  # delegage - if possible
  return extension.domain_entry( i ) if extension
  
  raise DomainException.new <<-EOS unless i.is_a?(Integer)
  Unknown type '#{i.class}' with value '#{i}' in 'domain_entry' #{name}.

  Support only for Integer
  EOS

  raise DomainException.new <<-EOS if i > cardinality
  Requested cardinality #{i} exceeds cardinality #{cardinality} of domain #{name}
  EOS
                                                 
                                                 
  "d_#{domain_name}_#{i}"
end

#domain_valuesObject

return and array of :value,:_comma hashes



103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/sbuilder/domain.rb', line 103

def domain_values
  # delegate  - if extended
  return extension.domain_values if extension
  arra = domain_entries.map.with_index do |domain_entry, i|
            {
              :namespace => Constants::TYPE_NAMESPACE_DOM,
              :value => domain_entry, 
              :_comma => (i +1) == cardinality ? "" : ",",
              :index => i+1,
            }
  end
  @logger.debug( "#{__method__} #{name}: arra #{arra.to_yaml}" )                  
  return arra
end

#setExtension(extension) ⇒ Object


extendDomain



42
43
44
# File 'lib/sbuilder/domain.rb', line 42

def setExtension( extension )
  @extension = extension
end

#setName(name) ⇒ Object


config



28
29
30
31
# File 'lib/sbuilder/domain.rb', line 28

def setName( name )
  @name = name
  self
end

#to_sObject



21
22
23
# File 'lib/sbuilder/domain.rb', line 21

def to_s
  "#{self.class}: name=#{name}"
end