Sha256: 85e7f500a646edb2ba7b0d2d7d4f7d9d89c1acb5d448a02534d2cf768cdc6abf

Contents?: true

Size: 1.87 KB

Versions: 1

Compression:

Stored size: 1.87 KB

Contents

module Sbuilder

  class DomainValue < Domain

    attr_reader :values

    # ------------------------------------------------------------------
    # mixer
    PROGNAME = "ValueDomain"          # progname for logger
    include Sbuilder::Utils::MyLogger # mix logger
    

    def initialize( options = {} )
      super( options )
      @logger = getLogger( PROGNAME, options )
      @logger.info( "#{__method__} initialized" )
      
      # default values one
      @values = []
    end

    
    # ------------------------------------------------------------------
    # cardinality overriden
    def cardinality
      @values.size
    end


    # @param i [integer|string] domain entry to access
    # @return value in location `i-1` ie. indexing from 1,2,3,.. when i:integer
    #         value with the given name when i:string
    def domain_entry( i )
      case i
      when Integer
        @values[i-1]
      when String
        ret = @values.select { |val| val == i }.first
        if ret.nil?
          raise DomainException.new <<-EOS
          Unknown domain entry #{i} 

          Known domain entries: #{values.join(',')}
          EOS
        end
        return ret
      else
        raise DomainException.new <<-EOS
        Unknown type #{i.class} in 'domain_entry' #{name}.

        Support only for Integer, String
        EOS
      end
    end
    

    # ------------------------------------------------------------------    
    # return array of strings for entries in domain - overides super
    def domain_entries
      @logger.debug( "#{__method__} #{name}: added domain_entries #{values.join(',')}" )            
      values
    end

    # ------------------------------------------------------------------
    # build

    def addValue( value )
      @logger.debug( "#{__method__} #{name}: added value #{value}" )      
      @values << value
      self
    end


  end

  
end



Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tla-sbuilder-0.1.0 lib/sbuilder/domain_value.rb