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