class XmlConv::Util::Transaction
Constants
- ODBA_PREFETCH
- ODBA_SERIALIZABLE
Attributes
arguments[RW]
commit_time[R]
debug_recipients[RW]
destination[RW]
domain[RW]
error[RW]
error_recipients[RW]
input[RW]
input_model[R]
model[R]
origin[RW]
output[R]
output_model[R]
partner[RW]
postprocs[RW]
reader[RW]
response[RW]
start_time[R]
transaction_id[RW]
writer[RW]
Public Class Methods
new()
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 23 def initialize @postprocs = [] end
Public Instance Methods
execute()
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 26 def execute reader_instance = Conversion.const_get(@reader) writer_instance = Conversion.const_get(@writer) @start_time = Time.now @input = @input.force_encoding("UTF-8") @input = @input.encode("UTF-8", :invalid=>:replace, :replace=>"?") if !@input.valid_encoding? @input.gsub!(/\t+|\s+/, ' ') input_model = reader_instance.parse(@input) @arguments ||= [] @model = reader_instance.convert(input_model, *@arguments) output_model = writer_instance.convert(@model, *@arguments) @output = output_model.is_a?(Array) ? output_model.join("\n").to_s : output_model.to_s SBSM.info("_execute #{input_model.class} => #{@output} #{@destination.inspect}") @destination.deliver(output_model) @commit_time = Time.now @output ensure @destination.forget_credentials! end
invoice_ids()
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 46 def invoice_ids @model.invoices.collect do |inv| inv.invoice_id.last.to_s.gsub /^0+/, '' end end
notify()
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 51 def notify recipients = [@debug_recipients] subject = 'XmlConv2 - Debug-Notification' if(@error) recipients.push(@error_recipients) subject = 'XmlConv2 - Error-Notification' end recipients.flatten! recipients.compact! recipients.uniq! return if(recipients.empty?) body = <<-EOS Date: #{@start_time.strftime("%d.%m.%Y")} Time: #{@start_time.strftime("%H:%M:%S")} Status: #{status} Error: #{@error} Link: http://#{@domain}/de/transaction/transaction_id/#{@transaction_id} Input: # input start #{@input} # input end Output: # output start #{@output} # output end EOS Util::Mail.notify recipients, subject, body end
odba_store()
click to toggle source
Calls superclass method
# File lib/xmlconv/util/transaction.rb, line 81 def odba_store @input.extend(ODBA::Persistable) if(@input) @output.extend(ODBA::Persistable) if(@output) super end
postprocess()
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 86 def postprocess if(@postprocs.respond_to?(:each)) @postprocs.each do |klass, *args| next if args.empty? SBSM.info(msg = "Postprocess calling for klass #{klass} #{args.inspect}") args.push(self) res = PostProcess.const_get(klass).send(*args) SBSM.info(msg = "Postprocess returned #{res} for klass #{klass}") end end end
respond(delivery, response)
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 97 def respond delivery, response responses[delivery] = response end
responses()
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 106 def responses @responses ||= [] end
status()
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 109 def status if(@error) :error elsif(@model.nil? || @model.empty?) :empty elsif(@destination.respond_to?(:status)) @destination.status end end
status=(status)
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 118 def status=(status) if @destination.respond_to?(:status=) @destination.status = status @destination.odba_store @destination.status end end
status_comparable()
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 125 def status_comparable if(@destination.respond_to?(:status_comparable)) @destination.status_comparable end end
update_status()
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 130 def update_status if(@destination.respond_to?(:update_status)) @destination.update_status end end
uri()
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 135 def uri @destination.uri if(@destination.respond_to?(:uri)) end
uri_comparable()
click to toggle source
# File lib/xmlconv/util/transaction.rb, line 138 def uri_comparable self.uri.to_s end