class Reactor::Cm::ObjClass

Public Class Methods

create(name, type) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 17
def self.create(name, type)
  klass = ObjClass.new
  klass.send(:create,name, type)
  klass
end
exists?(name) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 8
def self.exists?(name)
  klass = ObjClass.new
  begin
    return klass.send(:get, name).ok?
  rescue
    return false
  end
end
get(name) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 23
def self.get(name)
  klass = ObjClass.new
  klass.send(:get, name)
  klass
end
new(name=nil) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 145
def initialize(name=nil)
  @name = name
  @params = {}
  @params_options = {}
  @preset = {}
end
rename(current_name, new_name) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 29
def self.rename(current_name, new_name)
  request = XmlRequest.prepare do |xml|
    xml.tag!('objClass-where') do
      xml.tag!('name', current_name)
    end
    xml.tag!('objClass-set') do
      xml.tag!('name', new_name)
    end
  end
  request.execute!
end

Public Instance Methods

attributes() click to toggle source
# File lib/reactor/cm/obj_class.rb, line 116
def attributes
  __attributes_get('attributes')
end
attributes=(attr_arr) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 120
def attributes=(attr_arr)
  __attributes_set('attributes', attr_arr)
end
delete!() click to toggle source
# File lib/reactor/cm/obj_class.rb, line 132
def delete!
  request = XmlRequest.prepare do |xml|
    xml.where_key_tag!(base_name, 'name', @name)
    xml.tag!("#{base_name}-delete")
  end
  response = request.execute!
end
has_attribute?(attr_name) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 112
def has_attribute?(attr_name)
  attributes.include? attr_name
end
mandatory_attributes() click to toggle source
# File lib/reactor/cm/obj_class.rb, line 124
def mandatory_attributes
  __attributes_get('mandatoryAttributes')
end
mandatory_attributes=(attr_arr) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 128
def mandatory_attributes=(attr_arr)
  __attributes_set('mandatoryAttributes', attr_arr)
end
preset(key, value) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 46
def preset(key, value)
  @preset[key] = value
end
preset_attributes() click to toggle source
# File lib/reactor/cm/obj_class.rb, line 50
def preset_attributes
  request = XmlRequest.prepare do |xml|
    xml.where_key_tag!(base_name, 'name', @name)
    xml.get_key_tag!(base_name, 'presetAttributes')
  end
  response = request.execute!
  result = response.xpath('//dictitem')
  result = [result] unless result.kind_of?(Array)
  result.map do |dictitem|
    key = dictitem.children.detect {|c| c.name == 'key'}.text
    raw_value = dictitem.children.detect {|c| c.name == 'value'}
    if raw_value.children.detect {|c| c.kind_of?(::REXML::Text) }
      value = raw_value.text
    else
      value = raw_value.children.map {|c| c.text }
    end
    {key => value}
  end.inject({}, &:merge)
end
save!() click to toggle source
# File lib/reactor/cm/obj_class.rb, line 71
def save!
  request = XmlRequest.prepare do |xml|
    xml.where_key_tag!(base_name, 'name', @name)
    xml.set_tag!(base_name) do
      @params.each do |key, value|
        if @params_options[key][:cdata]
          xml.tag!(key.to_s) do
            xml.cdata!(value)
          end
        else
          xml.value_tag!(key.to_s, value)
        end
      end
      unless @preset.empty?
        all_preset = (preset_attributes.merge(@preset))
        xml.tag!('presetAttributes') do
          @preset.each do |key, value|
            xml.tag!('dictitem') do
              xml.tag!('key') do
                xml.text!(key.to_s)
              end
              xml.tag!('value') do
                if value.kind_of?(Array)
                  value.each do |item|
                    xml.tag!('listitem') do
                      xml.text!(item.to_s)
                    end
                  end
                else
                  xml.text!(value.to_s)
                end
              end
            end
          end
        end
      end
    end
  end
  response = request.execute!
end
set(key, value, options={}) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 41
def set(key, value, options={})
  @params_options[key.to_sym] = (!options.nil? && !options.empty? && options) || {}
  @params[key.to_sym] = value
end

Protected Instance Methods

base_name() click to toggle source
# File lib/reactor/cm/obj_class.rb, line 141
def base_name
  'objClass'
end
create(name, type) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 162
def create(name, type)
  request = XmlRequest.prepare do |xml|
    xml.create_tag!(base_name) do |xml|
      xml.tag!('name') do
        xml.text!(name)
      end
      xml.tag!('objType') do
        xml.text!(type)
      end
    end
  end
  response = request.execute!
  @name = name
  response
end
get(name) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 152
def get(name)
  request = XmlRequest.prepare do |xml|
    xml.where_key_tag!(base_name, 'name', name)
    xml.get_key_tag!(base_name, 'name')
  end
  response = request.execute!
  @name = name
  response
end

Private Instance Methods

__attributes_get(field) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 179
def __attributes_get(field)
  request = XmlRequest.prepare do |xml|
    xml.where_key_tag!(base_name, 'name', @name)
    xml.get_key_tag!(base_name, field)
  end
  response = request.execute!
  items = response.xpath("//listitem/text()")
  return [items.to_s] unless items.kind_of?(Array)
  items.map(&:to_s)
end
__attributes_set(field, attr_arr) click to toggle source
# File lib/reactor/cm/obj_class.rb, line 190
def __attributes_set(field, attr_arr)
  request = XmlRequest.prepare do |xml|
    xml.where_key_tag!(base_name, 'name', @name)
    xml.set_key_tag!(base_name, field, attr_arr)
  end
  response = request.execute!
end