Module: Sbuilder::ControllerUtils

Included in:
Controller
Defined in:
lib/sbuilder/controller_utils.rb

Overview

collect method, which all

Instance Method Summary collapse

Instance Method Details

#dispatchExtendDomain(domainDef) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/sbuilder/controller_utils.rb', line 8

def dispatchExtendDomain( domainDef )
  Utils::Validate.validateProperties( domainDef, Constants::VALIDATION[:domain_extension][:required], Constants::VALIDATION[:domain_extension][:allowed] )
  Utils::Validate.oneOf( domainDef, Constants::VALIDATION[:domain_extension][:one_of] )
  
  if !domainDef['cardinality'].nil? then
    extendDomainWithCardinality(  domainDef )
  elsif !domainDef['values'].nil?
    extendDomainWithValues(  domainDef )
  elsif !domainDef['range'].nil?
    extendDomainRange(  domainDef )
  elsif !domainDef['type'].nil?
    extendDomainWithType(  domainDef )
  else
    raise ExtensionException,  "Invalid domain definition #{domainDef}"
  end
end

#extendDomainRange(domainDef) ⇒ Object

Extend domain with (integer) range

Parameters:

  • (Hash)
  • domainDef (Hash)

    a customizable set of options

Options Hash (domainDef):

  • range (String)

    array lenght 2 start-stop

Raises:



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/sbuilder/controller_utils.rb', line 31

def extendDomainRange(  domainDef )
  # must be array with length of two, with first element less or equal
  raise ExtensionException,  "Invalid domain range defintion" unless domainDef['range'] &&
                                                                     domainDef['range'].is_a?( Array ) &&
                                                                     domainDef['range'].length == 2 &&
                                                                     domainDef['range'][0]  <= domainDef['range'][1]

  domain = factory.createDomain( Sbuilder::Constants::TYPE_RANGE_DOMAIN )
  domain.setName( domainDef['domain'] )
  domain.setRange( domainDef['range'][0], domainDef['range'][1] )

  # pass to model via controller      
  extendDomain( domain )
  
end

#extendDomainWithCardinality(domainDef) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/sbuilder/controller_utils.rb', line 67

def extendDomainWithCardinality(  domainDef )
  # @logger.info( "#{__method__} domainDef=#{domainDef}" )
  # validateProperties( domainDef, @@extensionDoaminProperties )
  Utils::Validate.validateProperties(
    domainDef,
    Constants::VALIDATION[:domain_extension][:cardinality_required], Constants::VALIDATION[:domain_extension][:cardinality_allowed]
  )

  # create & configure
  domain = factory.createDomain( Sbuilder::Constants::TYPE_CARDINALITY_DOMAIN )
  domain.setName( domainDef['domain'] )
  domain.setCardinality( domainDef['cardinality'] )      

  # pass to model via controller      
  extendDomain( domain )
end

#extendDomainWithType(domainDef) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/sbuilder/controller_utils.rb', line 49

def extendDomainWithType( domainDef )
  # @logger.info( "#{__method__}: domainDef=#{domainDef}" )
  Utils::Validate.validateProperties(
    domainDef,
    Constants::VALIDATION[:domain_extension][:type_required], Constants::VALIDATION[:domain_extension][:type_allowed]
  )

  # create & configure
  domain = factory.createDomain( Sbuilder::Constants::TYPE_DOMAIN_TYPE )
  domain.setName( domainDef['domain'] )
  domain.setType( domainDef['type'] )      

  # pass to model via controller      
  extendDomain( domain )
end

#extendDomainWithValues(domainDef) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/sbuilder/controller_utils.rb', line 99

def extendDomainWithValues(  domainDef )
  # @logger.info( "#{__method__} domainDef=#{domainDef}" )
  # validateProperties( domainDef, @@extensionValuesProperties )
  Utils::Validate.validateProperties(
    domainDef,
    Constants::VALIDATION[:domain_extension][:value_required], Constants::VALIDATION[:domain_extension][:value_allowed]
  )

  # create & configure
  domain = factory.createDomain( Sbuilder::Constants::TYPE_VALUE_DOMAIN )
  domain.setName( domainDef['domain'] )
  domainDef['values'].each { |value| domain.addValue( value  ) }

  # pass to model via controller
  extendDomain( domain )      
  
end

#setApplicationDomainValues(domainName, arrOfDomainValues) ⇒ Object

Creates ‘domainDef’ and delegates to ‘extendDomainWithValues’

Parameters:

  • domainName (String)
  • arrOfDomainValues (String:Array)


90
91
92
93
94
95
96
97
# File 'lib/sbuilder/controller_utils.rb', line 90

def setApplicationDomainValues( domainName, arrOfDomainValues )
  domainDef = {
    'domain' => domainName,
    'values' => arrOfDomainValues
  }
  # add to model
  addApplicationDomainValue( domainDef )
end