class XmlConv::Util::Application
Constants
- ODBA_EXCLUDE_VARS
Attributes
failed_transactions[R]
transactions[R]
Public Class Methods
new()
click to toggle source
# File lib/xmlconv/util/application.rb, line 28 def initialize @transactions = [] @failed_transactions = [] end
Public Instance Methods
_execute(transaction)
click to toggle source
# File lib/xmlconv/util/application.rb, line 41 def _execute(transaction) has_error = false transaction.transaction_id = next_transaction_id SBSM.info "Starting_transaction #{transaction.transaction_id}" transaction.execute res = transaction.postprocess SBSM.info "Postprocessed_transaction #{transaction.transaction_id} res #{res.class}" res rescue Exception => error has_error = true SBSM.info "error_transaction #{transaction.transaction_id} error #{error} \n#{error.backtrace}" transaction.error = error ensure res = ODBA.transaction { transaction.odba_store @transactions.push(transaction) @transactions.odba_isolated_store } SBSM.info "has_error_transaction is #{has_error} #{transaction.transaction_id} res is #{res.class}" if has_error res end
execute(transaction)
click to toggle source
# File lib/xmlconv/util/application.rb, line 35 def execute(transaction) _execute(transaction) transaction.notify rescue Exception => error ## survive notification failure end
export_orders(first=Time.local(1990,1,1), last=Time.local(2037,1,1), output_file=nil)
click to toggle source
# File lib/xmlconv/util/application.rb, line 89 def export_orders(first=Time.local(1990,1,1), last=Time.local(2037,1,1), output_file=nil) range=Range.new(first, last) output_file ||= "/home/ywesee/xmlconv_export/xmlconv_export.csv" open(output_file, "w") do |f| self.transactions.reverse.each do |t| if range.include?(t.commit_time) f.print t.output end end end end
init()
click to toggle source
# File lib/xmlconv/util/application.rb, line 32 def init @id_mutex = Mutex.new end
next_transaction_id()
click to toggle source
# File lib/xmlconv/util/application.rb, line 62 def next_transaction_id @id_mutex.synchronize { @next_transaction_id ||= @transactions.collect { |transaction| transaction.transaction_id.to_i }.max.to_i @next_transaction_id += 1 } end
send_invoice(time_range, date = Date.today)
click to toggle source
# File lib/xmlconv/util/application.rb, line 83 def send_invoice(time_range, date = Date.today) transactions = @transactions.select { |trans| time_range.include?(trans.commit_time) } Util::Invoicer.run(time_range, transactions, date) end
transaction(transaction_id)
click to toggle source
# File lib/xmlconv/util/application.rb, line 70 def transaction(transaction_id) transaction_id = transaction_id.to_i if((last_id = @transactions.last.transaction_id) \ && (last_id >= transaction_id)) start = (transaction_id - last_id - 1) if(start + @transactions.size < 0) start = 0 end @transactions[start..-1].each { |trans| return trans if(trans.transaction_id == transaction_id) } end end