class Seiun::XMLGenerators::BatchXML

Public Class Methods

add_batch(records, callback: nil) click to toggle source
# File lib/seiun/xml_generators/batch_xml.rb, line 5
def add_batch(records, callback: nil)
  generator = new(callback: callback)
  generator.add_batch(records)
end

Public Instance Methods

add_batch(records) click to toggle source
# File lib/seiun/xml_generators/batch_xml.rb, line 11
def add_batch(records)
  sobjects = rexml_doc.add_element("sObjects", 
    "xmlns" => "http://www.force.com/2009/06/asyncapi/dataload",
    "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance")
  records.each do |record|
    add_record(sobjects, record)
  end
  str = to_s
  sobjects = nil
  clear_rexml_doc!
  str
end

Private Instance Methods

add_record(parent, record) click to toggle source
# File lib/seiun/xml_generators/batch_xml.rb, line 31
def add_record(parent, record)
  sobject = parent.add_element("sObject")
  record.to_hash.each_pair do |key, value|
    if value.is_a?(Hash)
      relation = sobject.add_element(key.to_s)
      add_record(relation, value)
    elsif value.is_a?(NilClass) || value.is_a?(String) && value.empty?
      sobject.add_element(key.to_s, "xsi:nil" => "true")
    else
      sobject.add_element(key.to_s).add_text(convert_value(value))
    end
  end
end
convert_value(value) click to toggle source
# File lib/seiun/xml_generators/batch_xml.rb, line 45
def convert_value(value)
  if value.is_a?(Time) || value.is_a?(DateTime)
    value.iso8601.to_s
  elsif value.is_a?(Date)
    value.strftime("%Y-%m-%d")
  elsif value.is_a?(Array)
    value.join(";")
  else
    value.to_s
  end
end
to_s() click to toggle source
Calls superclass method Seiun::XMLGenerators::Base#to_s
# File lib/seiun/xml_generators/batch_xml.rb, line 26
def to_s
  @callback.after_build_xml(rexml_doc) if @callback
  super
end