class Salesforce::Column

Constants

SUPPORTED_DATE_RANGE
SUPPORTED_TIME_RANGE

Attributes

createable[RW]
name[RW]
original_name[RW]
type[RW]
updateable[RW]

Public Class Methods

new(field) click to toggle source
# File lib/salesforce/column.rb, line 8
def initialize(field)
  self.original_name = field["name"]
  self.name          = field["name"].gsub(/\_\_c$/, '').underscore
  self.type          = field["type"].to_sym
  self.createable    = field['createable']
  self.updateable    = field["updateable"]
end
to_csv_value(obj) click to toggle source
# File lib/salesforce/column.rb, line 50
def self.to_csv_value(obj)
  case (obj)
    when Date;
      obj.strftime("%Y-%m-%d")
    when TrueClass;
      'TRUE'
    when FalseClass;
      'FALSE'
    when Time;
      obj.xmlschema
    when NilClass;
      '#N/A'
    else
      "#{obj.to_s}"
  end
end
to_soql_value(obj) click to toggle source
# File lib/salesforce/column.rb, line 29
def self.to_soql_value(obj)
  case (obj)
    when Date
      obj.strftime("%Y-%m-%d")
    when TrueClass
      'TRUE'
    when FalseClass
      'FALSE'
    when Time
      obj.xmlschema
    when nil
      'NULL'
    when Numeric
      "#{obj.to_s}"
    when Array
      "(#{obj.map { |sobj| to_soql_value(sobj) }.join(',')})"
    else
      "'#{obj.to_s}'"
  end
end
typecast(type, value) click to toggle source
# File lib/salesforce/column.rb, line 67
def self.typecast(type, value)
  case (type)
    when :id, :reference
      if Config.use_full_length_ids?
        value
      else
        value.to_s.size == 15 ? value : value.to_s[0..14]
      end
    when :date
      begin
        parsed_date = Date.parse(value)
        if SUPPORTED_DATE_RANGE.cover?(parsed_date)
          parsed_date
        else
          nil
        end
      rescue ArgumentError
        nil
      rescue
        value if value.is_a?(Date)
      end
    when :datetime
      begin
        parsed_time = Time.parse(value)
        if SUPPORTED_TIME_RANGE.cover?(parsed_time)
          parsed_time
        else
          nil
        end
      rescue ArgumentError
        Time.now
      rescue
        value if value.is_a?(Time)
      end
    when :double
      begin
        value.to_s.to_d
      rescue
        value if value.is_a?(Numeric)
      end
    else
      value
  end
end

Public Instance Methods

==(other) click to toggle source
# File lib/salesforce/column.rb, line 112
def ==(other)
  return false unless other
  self.name == other.name && self.original_name == other.original_name
end
createable?() click to toggle source
# File lib/salesforce/column.rb, line 16
def createable?
  createable
end
editable?() click to toggle source
# File lib/salesforce/column.rb, line 24
def editable?
  createable? || updateable?
end
updateable?() click to toggle source
# File lib/salesforce/column.rb, line 20
def updateable?
  updateable
end