class Salesforce::Bulk::Batch
Constants
- Result
Attributes
csv[RW]
filename[RW]
id[RW]
job[RW]
number_records_failed[RW]
number_records_processed[RW]
state[RW]
state_message[RW]
total_time_processed[RW]
Public Class Methods
new(job)
click to toggle source
# File lib/salesforce/bulk/batch.rb, line 15 def initialize(job) self.job = job self.filename = temporary_csv_file self.csv = CSVLib.open(self.filename, 'w+') self.csv << csv_header end
Public Instance Methods
create!()
click to toggle source
# File lib/salesforce/bulk/batch.rb, line 37 def create! self.csv.close response = ::Salesforce.connection.async_post("job/#{job.id}/batch", File.read(self.filename), :format => :xml, :content_type => 'text/csv') assign_attributes!(response) end
ordered_values(record)
click to toggle source
# File lib/salesforce/bulk/batch.rb, line 30 def ordered_values(record) job.csv_columns.map do |col| raw_value = record[col.name.to_sym] Column.to_csv_value Column.typecast(col.type, raw_value) end end
record(record)
click to toggle source
# File lib/salesforce/bulk/batch.rb, line 22 def record(record) if record.is_a?(Hash) self.csv << ordered_values(record) else self.csv << ordered_values(record.attributes) end end
results()
click to toggle source
# File lib/salesforce/bulk/batch.rb, line 49 def results parse_csv_results ::Salesforce.connection.async_get("job/#{job.id}/batch/#{id}/result") end
temporary_csv_file()
click to toggle source
# File lib/salesforce/bulk/batch.rb, line 59 def temporary_csv_file if Object.const_defined?(:Rails) && Rails.respond_to?(:root) && Rails.root.present? Rails.root.join('tmp', 'files', "#{ Time.now.to_i}#{rand(10000)}.csv") else File.join("/tmp/#{ Time.now.to_i}#{rand(10000)}.csv") end end
update_status()
click to toggle source
# File lib/salesforce/bulk/batch.rb, line 43 def update_status return state if completed? response = ::Salesforce.connection.async_get("job/#{job.id}/batch/#{id}", :format => :xml) self.state = response[:state] end
Private Instance Methods
csv_header()
click to toggle source
# File lib/salesforce/bulk/batch.rb, line 74 def csv_header self.job.csv_columns.map(&:original_name) end
parse_csv_results(results)
click to toggle source
# File lib/salesforce/bulk/batch.rb, line 69 def parse_csv_results(results) parsed_results = CSVLib.parse(results) parsed_results[1..-1].map { |row| Result.new(*row) } end