Class: XmlConv::Util::Application
- Inherits:
-
Object
- Object
- XmlConv::Util::Application
- Includes:
- ODBA::Persistable
- Defined in:
- lib/xmlconv/util/application.rb
Constant Summary collapse
- ODBA_EXCLUDE_VARS =
['@next_transaction_id', '@id_mutex']
Instance Attribute Summary collapse
-
#failed_transactions ⇒ Object
readonly
Returns the value of attribute failed_transactions.
-
#transactions ⇒ Object
readonly
Returns the value of attribute transactions.
Instance Method Summary collapse
-
#_execute(transaction) ⇒ Object
survive notification failure.
- #execute(transaction) ⇒ Object
- #export_orders(first = Time.local(1990,1,1), last = Time.local(2037,1,1), output_file = nil) ⇒ Object
- #init ⇒ Object
-
#initialize ⇒ Application
constructor
A new instance of Application.
- #next_transaction_id ⇒ Object
- #send_invoice(time_range, date = Date.today) ⇒ Object
- #transaction(transaction_id) ⇒ Object
Constructor Details
#initialize ⇒ Application
Returns a new instance of Application.
28 29 30 31 |
# File 'lib/xmlconv/util/application.rb', line 28 def initialize @transactions = [] @failed_transactions = [] end |
Instance Attribute Details
#failed_transactions ⇒ Object (readonly)
Returns the value of attribute failed_transactions.
25 26 27 |
# File 'lib/xmlconv/util/application.rb', line 25 def failed_transactions @failed_transactions end |
#transactions ⇒ Object (readonly)
Returns the value of attribute transactions.
25 26 27 |
# File 'lib/xmlconv/util/application.rb', line 25 def transactions @transactions end |
Instance Method Details
#_execute(transaction) ⇒ Object
survive notification failure
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# 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) ⇒ Object
35 36 37 38 39 40 |
# 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) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 |
# 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 ⇒ Object
32 33 34 |
# File 'lib/xmlconv/util/application.rb', line 32 def init @id_mutex = Mutex.new end |
#next_transaction_id ⇒ Object
62 63 64 65 66 67 68 69 |
# 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) ⇒ Object
83 84 85 86 87 88 |
# 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) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# 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 |