Class: Salesforce::Bulk::Batch

Inherits:
Object
  • Object
show all
Includes:
Blockenspiel::DSL, Attributes
Defined in:
lib/salesforce/bulk/batch.rb

Defined Under Namespace

Classes: Result

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(job) ⇒ Batch

Returns a new instance of Batch.



11
12
13
14
15
16
# File 'lib/salesforce/bulk/batch.rb', line 11

def initialize(job)
  self.job = job
  self.filename = temporary_csv_file
  self.csv = FasterCSV.open(self.filename, 'w+')
  self.csv << csv_header
end

Instance Attribute Details

#csvObject

Returns the value of attribute csv.



7
8
9
# File 'lib/salesforce/bulk/batch.rb', line 7

def csv
  @csv
end

#filenameObject

Returns the value of attribute filename.



7
8
9
# File 'lib/salesforce/bulk/batch.rb', line 7

def filename
  @filename
end

#idObject

Returns the value of attribute id.



7
8
9
# File 'lib/salesforce/bulk/batch.rb', line 7

def id
  @id
end

#jobObject

Returns the value of attribute job.



7
8
9
# File 'lib/salesforce/bulk/batch.rb', line 7

def job
  @job
end

#number_records_failedObject

Returns the value of attribute number_records_failed.



7
8
9
# File 'lib/salesforce/bulk/batch.rb', line 7

def number_records_failed
  @number_records_failed
end

#number_records_processedObject

Returns the value of attribute number_records_processed.



7
8
9
# File 'lib/salesforce/bulk/batch.rb', line 7

def number_records_processed
  @number_records_processed
end

#stateObject

Returns the value of attribute state.



7
8
9
# File 'lib/salesforce/bulk/batch.rb', line 7

def state
  @state
end

#state_messageObject

Returns the value of attribute state_message.



7
8
9
# File 'lib/salesforce/bulk/batch.rb', line 7

def state_message
  @state_message
end

#total_time_processedObject

Returns the value of attribute total_time_processed.



7
8
9
# File 'lib/salesforce/bulk/batch.rb', line 7

def total_time_processed
  @total_time_processed
end

Instance Method Details

#create!Object



33
34
35
36
37
# File 'lib/salesforce/bulk/batch.rb', line 33

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) ⇒ Object



26
27
28
29
30
31
# File 'lib/salesforce/bulk/batch.rb', line 26

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) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/salesforce/bulk/batch.rb', line 18

def record(record)
  if record.is_a?(Hash)
    self.csv << ordered_values(record)
  else
    self.csv << ordered_values(record.attributes)
  end
end

#resultsObject



45
46
47
# File 'lib/salesforce/bulk/batch.rb', line 45

def results
  parse_csv_results ::Salesforce.connection.async_get("job/#{job.id}/batch/#{id}/result")
end

#temporary_csv_fileObject



55
56
57
58
59
60
61
# File 'lib/salesforce/bulk/batch.rb', line 55

def temporary_csv_file
  if Object.const_defined?(:Rails)
    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_statusObject



39
40
41
42
43
# File 'lib/salesforce/bulk/batch.rb', line 39

def update_status
  return state if completed?
  response = ::Salesforce.connection.async_get("job/#{job.id}/batch/#{id}", :format => :xml)
  self.state = response[:state]
end