ruport 0.4.21 → 0.4.23

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,32 @@
1
+ require "rubygems" rescue LoadError nil
2
+ require "ruport"
3
+
4
+ class SampleInvoiceReport < Ruport::Report
5
+
6
+ include Invoice
7
+
8
+ #optional
9
+ prepare { self.file = "foo.pdf" }
10
+
11
+ #mandatory
12
+ generate {
13
+ render_invoice do |i|
14
+ i.company_info = "Foo Inc.\n42 Rock Street\nNew Haven, CT"
15
+ i.customer_info = "Gregory Brown\ngregory.t.brown@gmail.com"
16
+ i.order_info = "Order ID: 18180\nCustomer ID: 6291\n" +
17
+ "Order Date: #{Date.today}"
18
+ i.data = [["Rock Collection","$25.00"],
19
+ ["Endless Sand Supply","$500.00"],
20
+ ["Fire Filled Pit","$800.00"]].to_table %w[item price]
21
+ i.comments = "Be sure to visit our website at www.iheartruport.com"
22
+ i.title = "Invoice for Gregory"
23
+ #i.active_plugin.paper = "A4"
24
+ end
25
+ }
26
+
27
+ #optional
28
+ cleanup { }
29
+
30
+ end
31
+
32
+ SampleInvoiceReport.run { |res| res.write }
@@ -14,7 +14,7 @@ module Ruport
14
14
 
15
15
  #begin; require 'rubygems'; rescue LoadError; nil end
16
16
 
17
- VERSION = "0.4.21"
17
+ VERSION = "0.4.23"
18
18
 
19
19
  # Ruports logging and error interface.
20
20
  # Can generate warnings or raise fatal errors
@@ -21,6 +21,11 @@ module Ruport::Data
21
21
  Table.new({:data => data.map { |r| r.to_a }}.merge(options))
22
22
  end
23
23
 
24
+ def method_missing(id,*args)
25
+ return as($1.to_sym) if id.to_s =~ /^to_(.*)/
26
+ super
27
+ end
28
+
24
29
  attr_reader :data
25
30
  def_delegators :@data, :each, :length, :[], :empty?
26
31
  end
@@ -1,5 +1,6 @@
1
1
  class Array
2
2
  def to_table(options={})
3
+ options = { :column_names => options } if options.kind_of? Array
3
4
  Ruport::Data::Table.new({:data => self}.merge(options))
4
5
  end
5
6
  end
@@ -16,6 +17,7 @@ module Ruport::Data
16
17
 
17
18
  def column_names=(other)
18
19
  @column_names = other.dup
20
+ map { |r| r.attributes = @column_names }
19
21
  end
20
22
 
21
23
  def eql?(other)
@@ -43,7 +45,11 @@ module Ruport::Data
43
45
  end
44
46
 
45
47
  def reorder!(*indices)
46
- @column_names = indices
48
+ @column_names = if indices.all? { |i| i.kind_of? Integer }
49
+ indices.map { |i| @column_names[i] }
50
+ else
51
+ indices
52
+ end
47
53
  @data.each { |r| r.reorder! *indices }; self
48
54
  end
49
55
 
@@ -51,6 +57,15 @@ module Ruport::Data
51
57
  dup.reorder! *indices
52
58
  end
53
59
 
60
+ def append_column(options={})
61
+ self.column_names += [options[:name]] if options[:name]
62
+ if block_given?
63
+ each { |r| r.data << yield(r) || options[:fill] }
64
+ else
65
+ each { |r| r.data << options[:fill] }
66
+ end
67
+ end
68
+
54
69
  def dup
55
70
  a = self.class.new(:data => @data, :column_names => @column_names)
56
71
  end
@@ -102,10 +117,5 @@ module Ruport::Data
102
117
  end
103
118
  end
104
119
 
105
- def method_missing(id,*args)
106
- return as($1.to_sym) if id.to_s =~ /^to_(.*)/
107
- super
108
- end
109
-
110
120
  end
111
121
  end
@@ -151,7 +151,7 @@ module Ruport
151
151
  options[:auto_render] = true unless options.has_key? :auto_render
152
152
 
153
153
 
154
- options[:data] = options[:data].dup
154
+ options[:data] = options[:data].dup if options[:data]
155
155
 
156
156
  options.each do |k,v|
157
157
  my_engine.send("#{k}=",v) if my_engine.respond_to? k
@@ -27,9 +27,10 @@ module Ruport
27
27
  Format::Engine.engine_classes[name] = klass
28
28
  end
29
29
 
30
- def data=(data)
31
- @data = data
32
- active_plugin.data = data.dup if active_plugin
30
+ def data=(stuff)
31
+ return unless stuff
32
+ @data = stuff
33
+ active_plugin.data = stuff.dup if active_plugin
33
34
  end
34
35
 
35
36
  def options=(opts)
@@ -55,7 +56,6 @@ module Ruport
55
56
 
56
57
  def render
57
58
  raise "No plugin specified" unless plugin
58
- raise "No data provided" unless data
59
59
  active_plugin.data = data.dup
60
60
  if active_plugin.respond_to? :init_plugin_helper
61
61
  active_plugin.init_plugin_helper(self)
@@ -97,12 +97,14 @@ module Ruport
97
97
  class Format::Engine::Invoice < Ruport::Format::Engine
98
98
 
99
99
  # order meta data
100
- attributes [:customer_info, :company_info]
100
+ attributes [ :customer_info, :company_info,
101
+ :comments, :order_info, :title]
101
102
 
102
103
  renderer do
103
104
  super
104
- build_company_header
105
- build_customer_header
105
+ build_headers
106
+ build_body
107
+ build_footer
106
108
  active_plugin.render_invoice
107
109
  end
108
110
 
@@ -16,12 +16,6 @@ module Ruport
16
16
 
17
17
  def plugin_name(name=nil); @name ||= name; end
18
18
 
19
- #def format_name
20
- # pattern = /Ruport::Format|Plugin/
21
- # @name ||=
22
- # self.name.gsub(pattern,"").downcase.delete(":").to_sym
23
- #end
24
-
25
19
  def renderer(render_type,&block)
26
20
  m = "render_#{render_type}".to_sym
27
21
  block ||= lambda { data }
@@ -164,31 +158,45 @@ module Ruport
164
158
 
165
159
  format_field_names { data.column_names }
166
160
 
167
- renderer :invoice do
168
- return unless defined? PDF::Writer
169
-
170
- pdf.start_page_numbering(500, 20, 8, :right)
171
-
172
- # order contents
173
- pdf.y = 620
174
-
175
- PDF::SimpleTable.new do |table|
176
- table.width = 450
177
- table.orientation = :center
178
- table.data = data
179
- table.show_lines = :outer
180
- table.column_order = data.column_names
181
- table.render_on(pdf)
182
- table.font_size = 12
161
+ renderer(:invoice) { pdf.render }
162
+
163
+ # Company Information in top lefthand corner
164
+ helper(:build_company_header) { |eng|
165
+ @tod = pdf.y
166
+ text_box(eng.company_info)
167
+ }
168
+
169
+ helper(:build_headers) { |eng|
170
+ build_company_header_helper(eng)
171
+ build_customer_header_helper(eng)
172
+ build_title_helper(eng)
173
+ build_order_header_helper(eng)
174
+ }
175
+
176
+ helper(:build_order_header) { |eng|
177
+ if eng.order_info
178
+ text_box(eng.order_info, :position => 350)
179
+ end
180
+ }
181
+
182
+ helper(:build_title) { |eng|
183
+ pdf.y = @tod
184
+ if eng.title
185
+ pdf.text eng.title, :left => 350, :font_size => 14
186
+ pdf.y -= 10
183
187
  end
184
-
185
-
188
+ }
189
+
190
+ helper(:build_footer) { |eng|
186
191
  # footer
187
192
  pdf.open_object do |footer|
188
193
  pdf.save_state
189
- pdf.stroke_color! Color::Black
194
+ pdf.stroke_color! Color::RGB::Black
190
195
  pdf.stroke_style! PDF::Writer::StrokeStyle::DEFAULT
191
-
196
+ if eng.comments
197
+ pdf.y -= 20
198
+ text_box eng.comments, :position => 110, :width => 400
199
+ end
192
200
  pdf.add_text_wrap( 50, 20, 200, "Printed at " +
193
201
  Time.now.strftime("%H:%M %d/%m/%Y"), 8)
194
202
 
@@ -196,20 +204,26 @@ module Ruport
196
204
  pdf.close_object
197
205
  pdf.add_object(footer, :all_pages)
198
206
  end
199
-
200
207
  pdf.stop_page_numbering(true, :current)
201
- pdf.render
208
+ }
209
+
210
+ helper(:build_body) do
211
+ pdf.start_page_numbering(500, 20, 8, :right)
212
+
213
+ # order contents
214
+ pdf.y = 620
215
+
216
+ PDF::SimpleTable.new do |table|
217
+ table.width = 450
218
+ table.orientation = :center
219
+ table.data = data
220
+ table.show_lines = :outer
221
+ table.column_order = data.column_names
222
+ table.render_on(pdf)
223
+ table.font_size = 12
224
+ end
202
225
  end
203
226
 
204
- # Company Information in top lefthand corner
205
- helper(:build_company_header) { |eng|
206
- text_box(eng.company_info)
207
- }
208
-
209
-
210
-
211
- helper(:build_order_helper) { }
212
-
213
227
  # Order details
214
228
  helper(:build_customer_header) { |eng|
215
229
  pdf.y -= 10
@@ -225,7 +239,7 @@ module Ruport
225
239
  table.show_headings = false
226
240
  table.show_lines = :outer
227
241
  table.shade_rows = :none
228
- table.width = options[:width] || 200
242
+ table.width = options[:width] || 200
229
243
  table.orientation = options[:orientation] || :right
230
244
  table.position = options[:position] || :left
231
245
  table.font_size = options[:font_size] || 10
@@ -139,7 +139,7 @@ module Ruport
139
139
 
140
140
  # Returns a Data::Table, even if in raw_data mode
141
141
  # Does not work with raw data if cache is enabled and filled
142
- def to_dataset
142
+ def to_table
143
143
  data_flag, @raw_data = @raw_data, false
144
144
  data = fetch; @raw_data = data_flag; return data
145
145
  end
@@ -165,8 +165,8 @@ module Ruport
165
165
  dbh.execute(query_text) do |sth|
166
166
  return unless sth.fetchable?
167
167
  results = sth.fetch_all
168
- data.fields = sth.column_names unless @raw_data
169
- results.each { |row| data << row }
168
+ data.column_names = sth.column_names unless @raw_data
169
+ results.each { |row| data << row.to_a }
170
170
  end
171
171
  end
172
172
  data
@@ -191,7 +191,7 @@ module Ruport
191
191
  else
192
192
  @statements.each { |query_text| data = query_data( query_text ) }
193
193
  end
194
- data.each { |r| yield(r) } if block_given? ; data
194
+ data.each { |r| yield(r) } if block_given?
195
195
  @cached_data = data if @cache_enabled
196
196
  return data
197
197
  end
@@ -8,7 +8,7 @@
8
8
  #load the needed standard libraries.
9
9
  %w[erb yaml date logger fileutils].each { |lib| require lib }
10
10
 
11
- require "ruport/mailer"
11
+ require "ruport/report/invoice"
12
12
  require "forwardable"
13
13
 
14
14
  module Ruport
@@ -0,0 +1,13 @@
1
+ module Ruport
2
+ class Report
3
+ module Invoice
4
+ def build_invoice
5
+ a = Ruport::Format.invoice_object(:plugin => :pdf)
6
+ yield(a); return a
7
+ end
8
+ def render_invoice(&block)
9
+ build_invoice(&block).render
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,4 +1,4 @@
1
- begin require 'rubygems'; rescue LoadError; nil end
1
+ require 'rubygems' rescue LoadError nil
2
2
  require 'ruport'
3
3
  require 'test/unit'
4
4
 
@@ -0,0 +1,26 @@
1
+ require 'rubygems' rescue LoadError nil
2
+ require "test/unit"
3
+
4
+ class SampleInvoiceReport < Ruport::Report
5
+ extend Invoice
6
+ end
7
+
8
+ class TestInvoice < Test::Unit::TestCase
9
+
10
+ def test_basic
11
+ inv = SampleInvoiceReport.build_invoice do |i|
12
+ i.company_info = "Foo Inc.\n42 Bar Street\nBaz, CT\n"
13
+ i.customer_info = "Gregory Brown\ngregory.t.brown@gmail.com"
14
+ i.data = [[1,2],[3,4]].to_table(%w[a b])
15
+ end
16
+ assert_nothing_raised { inv.render }
17
+ assert_nothing_raised {
18
+ SampleInvoiceReport.render_invoice do |i|
19
+ i.company_info = "Foo Inc.\n42 Bar Street\nBaz, CT\n"
20
+ i.customer_info = "Gregory Brown\ngregory.t.brown@gmail.com"
21
+ i.data = [[1,2],[3,4]].to_table(%w[a b])
22
+ end
23
+ }
24
+ end
25
+
26
+ end
@@ -44,6 +44,29 @@ class TestTable < Test::Unit::TestCase
44
44
  rows = [%w[a c], %w[d e]]
45
45
  table.each { |r| assert_equal rows.shift, r.data
46
46
  assert_equal %w[col1 col3], r.attributes }
47
+ a = [[1,2,3],[4,5,6]].to_table(%w[a b c]).reorder 2,0
48
+ rows = [[3,1],[6,4]]
49
+ a.each { |r| assert_equal rows.shift, r.data
50
+ assert_equal %w[c a], r.attributes }
51
+ assert_equal %w[c a], a.column_names
52
+ end
53
+
54
+ def test_append_column
55
+ a = [[1,2],[3,4],[5,6]].to_table(%w[a b])
56
+ a.append_column(:name => "c")
57
+ assert_equal [[1,2,nil],[3,4,nil],[5,6,nil]].to_table(%w[a b c]), a
58
+ a = [[1,2],[3,4],[5,6]].to_table
59
+ a.append_column
60
+ assert_equal [[1,2,nil],[3,4,nil],[5,6,nil]].to_table, a
61
+ a = [[1,2],[3,4],[5,6]].to_table(%w[a b])
62
+ a.append_column(:name => "c",:fill => "x")
63
+ assert_equal [[1,2,'x'],[3,4,'x'],[5,6,'x']].to_table(%w[a b c]), a
64
+ a.append_column(:name => "d") { |r| r.to_a.join("|") }
65
+ assert_equal(
66
+ [ [1,2,'x','1|2|x'],
67
+ [3,4,'x',"3|4|x"],
68
+ [5,6,'x','5|6|x']].to_table(%w[a b c d]), a)
69
+
47
70
  end
48
71
 
49
72
  def test_split
@@ -113,6 +136,12 @@ class TestTable < Test::Unit::TestCase
113
136
  :data => [[1,2],[3,4],[5,6]]
114
137
 
115
138
  assert_equal t, table
139
+
140
+ # test short form
141
+ table2 = [[1,2],[3,4],[5,6]].to_table %w[a b]
142
+
143
+ assert_equal table, table2
144
+
116
145
  end
117
146
 
118
147
  end
@@ -5,9 +5,8 @@ require "test/tc_sql_split"
5
5
  require "test/tc_query"
6
6
  require "test/tc_config"
7
7
  require "test/tc_report"
8
- #require "test/tc_data_set"
9
- #require "test/tc_data_row"
10
8
  require "test/tc_taggable"
11
9
  require "test/tc_record"
12
10
  require "test/tc_table"
13
11
  require "test/tc_set"
12
+ require "test/tc_invoice"
@@ -3953,3 +3953,279 @@ F, [2006-08-07T11:42:46.472732 #3996] FATAL -- : no block given!
3953
3953
  F, [2006-08-07T11:42:53.814580 #4004] FATAL -- : Missing host for mailer bar
3954
3954
  F, [2006-08-07T11:42:53.816233 #4004] FATAL -- : Missing DSN for source foo!
3955
3955
  F, [2006-08-07T11:42:53.858221 #4004] FATAL -- : no block given!
3956
+ F, [2006-08-08T00:30:09.499370 #8262] FATAL -- : Missing host for mailer bar
3957
+ F, [2006-08-08T00:30:09.531931 #8262] FATAL -- : Missing DSN for source foo!
3958
+ F, [2006-08-08T00:30:09.558609 #8262] FATAL -- : no block given!
3959
+ F, [2006-08-08T00:31:20.032958 #8270] FATAL -- : Missing host for mailer bar
3960
+ F, [2006-08-08T00:31:20.034209 #8270] FATAL -- : Missing DSN for source foo!
3961
+ F, [2006-08-08T00:31:20.060975 #8270] FATAL -- : no block given!
3962
+ F, [2006-08-08T00:31:51.142575 #8284] FATAL -- : Missing host for mailer bar
3963
+ F, [2006-08-08T00:31:51.143826 #8284] FATAL -- : Missing DSN for source foo!
3964
+ F, [2006-08-08T00:31:51.170450 #8284] FATAL -- : no block given!
3965
+ F, [2006-08-08T00:31:56.755033 #8292] FATAL -- : Missing host for mailer bar
3966
+ F, [2006-08-08T00:31:56.756286 #8292] FATAL -- : Missing DSN for source foo!
3967
+ F, [2006-08-08T00:31:56.782965 #8292] FATAL -- : no block given!
3968
+ F, [2006-08-08T00:32:48.647118 #8304] FATAL -- : Missing host for mailer bar
3969
+ F, [2006-08-08T00:32:48.648367 #8304] FATAL -- : Missing DSN for source foo!
3970
+ F, [2006-08-08T00:32:48.674840 #8304] FATAL -- : no block given!
3971
+ F, [2006-08-08T00:39:12.902124 #8330] FATAL -- : Missing host for mailer bar
3972
+ F, [2006-08-08T00:39:12.903386 #8330] FATAL -- : Missing DSN for source foo!
3973
+ F, [2006-08-08T00:39:12.929671 #8330] FATAL -- : no block given!
3974
+ F, [2006-08-08T00:39:40.442985 #8341] FATAL -- : Missing host for mailer bar
3975
+ F, [2006-08-08T00:39:40.444226 #8341] FATAL -- : Missing DSN for source foo!
3976
+ F, [2006-08-08T00:39:40.470340 #8341] FATAL -- : no block given!
3977
+ F, [2006-08-08T10:00:12.850115 #8606] FATAL -- : Missing host for mailer bar
3978
+ F, [2006-08-08T10:00:12.851362 #8606] FATAL -- : Missing DSN for source foo!
3979
+ F, [2006-08-08T10:00:12.877631 #8606] FATAL -- : no block given!
3980
+ F, [2006-08-08T10:04:30.762732 #8634] FATAL -- : Missing host for mailer bar
3981
+ F, [2006-08-08T10:04:30.763968 #8634] FATAL -- : Missing DSN for source foo!
3982
+ F, [2006-08-08T10:04:30.791372 #8634] FATAL -- : no block given!
3983
+ F, [2006-08-08T10:04:57.246558 #8642] FATAL -- : Missing host for mailer bar
3984
+ F, [2006-08-08T10:04:57.247834 #8642] FATAL -- : Missing DSN for source foo!
3985
+ F, [2006-08-08T10:04:57.275894 #8642] FATAL -- : no block given!
3986
+ F, [2006-08-08T10:10:00.470894 #8657] FATAL -- : Missing host for mailer bar
3987
+ F, [2006-08-08T10:10:00.472138 #8657] FATAL -- : Missing DSN for source foo!
3988
+ F, [2006-08-08T10:10:00.498604 #8657] FATAL -- : no block given!
3989
+ F, [2006-08-08T10:10:57.605578 #8665] FATAL -- : Missing host for mailer bar
3990
+ F, [2006-08-08T10:10:57.606825 #8665] FATAL -- : Missing DSN for source foo!
3991
+ F, [2006-08-08T10:10:57.633892 #8665] FATAL -- : no block given!
3992
+ F, [2006-08-08T10:11:07.339486 #8673] FATAL -- : Missing host for mailer bar
3993
+ F, [2006-08-08T10:11:07.340726 #8673] FATAL -- : Missing DSN for source foo!
3994
+ F, [2006-08-08T10:11:07.367879 #8673] FATAL -- : no block given!
3995
+ F, [2006-08-08T10:11:33.325079 #8681] FATAL -- : Missing host for mailer bar
3996
+ F, [2006-08-08T10:11:33.326329 #8681] FATAL -- : Missing DSN for source foo!
3997
+ F, [2006-08-08T10:11:33.353248 #8681] FATAL -- : no block given!
3998
+ F, [2006-08-08T10:11:38.610319 #8689] FATAL -- : Missing host for mailer bar
3999
+ F, [2006-08-08T10:11:38.611762 #8689] FATAL -- : Missing DSN for source foo!
4000
+ F, [2006-08-08T10:11:38.638649 #8689] FATAL -- : no block given!
4001
+ F, [2006-08-08T10:12:01.435389 #8697] FATAL -- : Missing host for mailer bar
4002
+ F, [2006-08-08T10:12:01.436640 #8697] FATAL -- : Missing DSN for source foo!
4003
+ F, [2006-08-08T10:12:01.463645 #8697] FATAL -- : no block given!
4004
+ F, [2006-08-08T10:13:29.992248 #8705] FATAL -- : Missing host for mailer bar
4005
+ F, [2006-08-08T10:13:29.993488 #8705] FATAL -- : Missing DSN for source foo!
4006
+ F, [2006-08-08T10:13:30.037101 #8705] FATAL -- : no block given!
4007
+ F, [2006-08-08T10:13:43.741007 #8714] FATAL -- : Missing host for mailer bar
4008
+ F, [2006-08-08T10:13:43.742268 #8714] FATAL -- : Missing DSN for source foo!
4009
+ F, [2006-08-08T10:13:43.768956 #8714] FATAL -- : no block given!
4010
+ F, [2006-08-08T10:14:38.113877 #8722] FATAL -- : Missing host for mailer bar
4011
+ F, [2006-08-08T10:14:38.115249 #8722] FATAL -- : Missing DSN for source foo!
4012
+ F, [2006-08-08T10:14:38.142109 #8722] FATAL -- : no block given!
4013
+ F, [2006-08-08T10:27:06.726403 #8743] FATAL -- : Missing host for mailer bar
4014
+ F, [2006-08-08T10:27:06.727657 #8743] FATAL -- : Missing DSN for source foo!
4015
+ F, [2006-08-08T10:27:06.754834 #8743] FATAL -- : no block given!
4016
+ F, [2006-08-08T10:34:07.790678 #8754] FATAL -- : Missing host for mailer bar
4017
+ F, [2006-08-08T10:34:07.792261 #8754] FATAL -- : Missing DSN for source foo!
4018
+ F, [2006-08-08T10:34:07.822177 #8754] FATAL -- : no block given!
4019
+ F, [2006-08-08T10:34:58.920762 #8762] FATAL -- : Missing host for mailer bar
4020
+ F, [2006-08-08T10:34:58.922018 #8762] FATAL -- : Missing DSN for source foo!
4021
+ F, [2006-08-08T10:34:58.948622 #8762] FATAL -- : no block given!
4022
+ F, [2006-08-08T10:36:14.945587 #8770] FATAL -- : Missing host for mailer bar
4023
+ F, [2006-08-08T10:36:14.946996 #8770] FATAL -- : Missing DSN for source foo!
4024
+ F, [2006-08-08T10:36:14.976584 #8770] FATAL -- : no block given!
4025
+ F, [2006-08-08T10:37:08.843853 #8778] FATAL -- : Missing host for mailer bar
4026
+ F, [2006-08-08T10:37:08.845101 #8778] FATAL -- : Missing DSN for source foo!
4027
+ F, [2006-08-08T10:37:08.926205 #8778] FATAL -- : no block given!
4028
+ F, [2006-08-08T10:37:21.757745 #8786] FATAL -- : Missing host for mailer bar
4029
+ F, [2006-08-08T10:37:21.759159 #8786] FATAL -- : Missing DSN for source foo!
4030
+ F, [2006-08-08T10:37:21.788885 #8786] FATAL -- : no block given!
4031
+ F, [2006-08-08T10:37:52.681714 #8794] FATAL -- : Missing host for mailer bar
4032
+ F, [2006-08-08T10:37:52.682983 #8794] FATAL -- : Missing DSN for source foo!
4033
+ F, [2006-08-08T10:37:52.765160 #8794] FATAL -- : no block given!
4034
+ F, [2006-08-08T10:39:09.171201 #8802] FATAL -- : Missing host for mailer bar
4035
+ F, [2006-08-08T10:39:09.172461 #8802] FATAL -- : Missing DSN for source foo!
4036
+ F, [2006-08-08T10:39:09.199412 #8802] FATAL -- : no block given!
4037
+ F, [2006-08-08T10:41:15.685824 #8810] FATAL -- : Missing host for mailer bar
4038
+ F, [2006-08-08T10:41:15.687361 #8810] FATAL -- : Missing DSN for source foo!
4039
+ F, [2006-08-08T10:41:15.713777 #8810] FATAL -- : no block given!
4040
+ F, [2006-08-08T10:41:31.558709 #8818] FATAL -- : Missing host for mailer bar
4041
+ F, [2006-08-08T10:41:31.560430 #8818] FATAL -- : Missing DSN for source foo!
4042
+ F, [2006-08-08T10:41:31.587070 #8818] FATAL -- : no block given!
4043
+ F, [2006-08-08T13:30:33.847667 #9388] FATAL -- : Missing host for mailer bar
4044
+ F, [2006-08-08T13:30:33.848923 #9388] FATAL -- : Missing DSN for source foo!
4045
+ F, [2006-08-08T13:30:33.934265 #9388] FATAL -- : no block given!
4046
+ F, [2006-08-08T14:17:04.111404 #9662] FATAL -- : Missing host for mailer bar
4047
+ F, [2006-08-08T14:17:04.113035 #9662] FATAL -- : Missing DSN for source foo!
4048
+ F, [2006-08-08T14:17:04.142369 #9662] FATAL -- : no block given!
4049
+ F, [2006-08-09T09:00:04.291024 #2209] FATAL -- : Missing host for mailer bar
4050
+ F, [2006-08-09T09:00:04.325993 #2209] FATAL -- : Missing DSN for source foo!
4051
+ F, [2006-08-09T09:00:04.409418 #2209] FATAL -- : no block given!
4052
+ F, [2006-08-09T12:16:49.126296 #3526] FATAL -- : Missing host for mailer bar
4053
+ F, [2006-08-09T12:16:49.170212 #3526] FATAL -- : Missing DSN for source foo!
4054
+ F, [2006-08-09T12:16:49.255323 #3526] FATAL -- : no block given!
4055
+ F, [2006-08-09T12:18:29.178106 #3545] FATAL -- : Missing host for mailer bar
4056
+ F, [2006-08-09T12:18:29.179374 #3545] FATAL -- : Missing DSN for source foo!
4057
+ F, [2006-08-09T12:18:29.263035 #3545] FATAL -- : no block given!
4058
+ F, [2006-08-09T13:42:48.917429 #3776] FATAL -- : Missing host for mailer bar
4059
+ F, [2006-08-09T13:42:48.918688 #3776] FATAL -- : Missing DSN for source foo!
4060
+ F, [2006-08-09T13:42:48.998714 #3776] FATAL -- : no block given!
4061
+ F, [2006-08-09T13:43:06.178252 #3787] FATAL -- : Missing host for mailer bar
4062
+ F, [2006-08-09T13:43:06.179640 #3787] FATAL -- : Missing DSN for source foo!
4063
+ F, [2006-08-09T13:43:06.208468 #3787] FATAL -- : no block given!
4064
+ F, [2006-08-09T19:47:33.621783 #2304] FATAL -- : Missing host for mailer bar
4065
+ F, [2006-08-09T19:47:33.664799 #2304] FATAL -- : Missing DSN for source foo!
4066
+ F, [2006-08-09T19:47:33.708555 #2304] FATAL -- : no block given!
4067
+ F, [2006-08-09T20:32:04.706994 #2457] FATAL -- : Missing host for mailer bar
4068
+ F, [2006-08-09T20:32:04.708238 #2457] FATAL -- : Missing DSN for source foo!
4069
+ F, [2006-08-09T20:32:04.735210 #2457] FATAL -- : no block given!
4070
+ F, [2006-08-09T20:42:06.627877 #2468] FATAL -- : Missing host for mailer bar
4071
+ F, [2006-08-09T20:42:06.629332 #2468] FATAL -- : Missing DSN for source foo!
4072
+ F, [2006-08-09T20:42:06.658347 #2468] FATAL -- : no block given!
4073
+ F, [2006-08-09T20:46:15.923988 #2477] FATAL -- : Missing host for mailer bar
4074
+ F, [2006-08-09T20:46:15.925295 #2477] FATAL -- : Missing DSN for source foo!
4075
+ F, [2006-08-09T20:46:15.944896 #2477] FATAL -- : no block given!
4076
+ F, [2006-08-09T20:46:21.424336 #2479] FATAL -- : Missing host for mailer bar
4077
+ F, [2006-08-09T20:46:21.425630 #2479] FATAL -- : Missing DSN for source foo!
4078
+ F, [2006-08-09T20:46:21.445908 #2479] FATAL -- : no block given!
4079
+ F, [2006-08-09T20:46:34.213311 #2481] FATAL -- : Missing host for mailer bar
4080
+ F, [2006-08-09T20:46:34.214571 #2481] FATAL -- : Missing DSN for source foo!
4081
+ F, [2006-08-09T20:46:34.241155 #2481] FATAL -- : no block given!
4082
+ F, [2006-08-09T20:47:18.198163 #2489] FATAL -- : Missing host for mailer bar
4083
+ F, [2006-08-09T20:47:18.199407 #2489] FATAL -- : Missing DSN for source foo!
4084
+ F, [2006-08-09T20:47:18.282866 #2489] FATAL -- : no block given!
4085
+ F, [2006-08-09T20:48:37.011911 #2499] FATAL -- : Missing host for mailer bar
4086
+ F, [2006-08-09T20:48:37.013140 #2499] FATAL -- : Missing DSN for source foo!
4087
+ F, [2006-08-09T20:48:37.039354 #2499] FATAL -- : no block given!
4088
+ F, [2006-08-09T20:51:57.627483 #2514] FATAL -- : Missing host for mailer bar
4089
+ F, [2006-08-09T20:51:57.628925 #2514] FATAL -- : Missing DSN for source foo!
4090
+ F, [2006-08-09T20:51:57.654751 #2514] FATAL -- : no block given!
4091
+ F, [2006-08-09T20:52:14.925753 #2522] FATAL -- : Missing host for mailer bar
4092
+ F, [2006-08-09T20:52:14.927072 #2522] FATAL -- : Missing DSN for source foo!
4093
+ F, [2006-08-09T20:52:14.953068 #2522] FATAL -- : no block given!
4094
+ F, [2006-08-09T20:52:24.623869 #2530] FATAL -- : Missing host for mailer bar
4095
+ F, [2006-08-09T20:52:24.625235 #2530] FATAL -- : Missing DSN for source foo!
4096
+ F, [2006-08-09T20:52:24.651350 #2530] FATAL -- : no block given!
4097
+ F, [2006-08-09T20:52:34.520967 #2538] FATAL -- : Missing host for mailer bar
4098
+ F, [2006-08-09T20:52:34.522324 #2538] FATAL -- : Missing DSN for source foo!
4099
+ F, [2006-08-09T20:52:34.548503 #2538] FATAL -- : no block given!
4100
+ F, [2006-08-09T20:53:43.859368 #2546] FATAL -- : Missing host for mailer bar
4101
+ F, [2006-08-09T20:53:43.860724 #2546] FATAL -- : Missing DSN for source foo!
4102
+ F, [2006-08-09T20:53:43.887124 #2546] FATAL -- : no block given!
4103
+ F, [2006-08-09T20:53:55.887138 #2554] FATAL -- : Missing host for mailer bar
4104
+ F, [2006-08-09T20:53:55.888453 #2554] FATAL -- : Missing DSN for source foo!
4105
+ F, [2006-08-09T20:53:55.914663 #2554] FATAL -- : no block given!
4106
+ F, [2006-08-09T20:54:13.036948 #2562] FATAL -- : Missing host for mailer bar
4107
+ F, [2006-08-09T20:54:13.038257 #2562] FATAL -- : Missing DSN for source foo!
4108
+ F, [2006-08-09T20:54:13.064247 #2562] FATAL -- : no block given!
4109
+ F, [2006-08-09T20:54:24.227845 #2570] FATAL -- : Missing host for mailer bar
4110
+ F, [2006-08-09T20:54:24.229170 #2570] FATAL -- : Missing DSN for source foo!
4111
+ F, [2006-08-09T20:54:24.255204 #2570] FATAL -- : no block given!
4112
+ F, [2006-08-09T20:54:44.419751 #2578] FATAL -- : Missing host for mailer bar
4113
+ F, [2006-08-09T20:54:44.421079 #2578] FATAL -- : Missing DSN for source foo!
4114
+ F, [2006-08-09T20:54:44.447189 #2578] FATAL -- : no block given!
4115
+ F, [2006-08-09T20:55:02.485042 #2586] FATAL -- : Missing host for mailer bar
4116
+ F, [2006-08-09T20:55:02.486370 #2586] FATAL -- : Missing DSN for source foo!
4117
+ F, [2006-08-09T20:55:02.512227 #2586] FATAL -- : no block given!
4118
+ F, [2006-08-09T20:55:21.993618 #2594] FATAL -- : Missing host for mailer bar
4119
+ F, [2006-08-09T20:55:21.994953 #2594] FATAL -- : Missing DSN for source foo!
4120
+ F, [2006-08-09T20:55:22.021040 #2594] FATAL -- : no block given!
4121
+ F, [2006-08-09T20:55:50.444258 #2602] FATAL -- : Missing host for mailer bar
4122
+ F, [2006-08-09T20:55:50.445605 #2602] FATAL -- : Missing DSN for source foo!
4123
+ F, [2006-08-09T20:55:50.471808 #2602] FATAL -- : no block given!
4124
+ F, [2006-08-09T20:55:56.572101 #2610] FATAL -- : Missing host for mailer bar
4125
+ F, [2006-08-09T20:55:56.573447 #2610] FATAL -- : Missing DSN for source foo!
4126
+ F, [2006-08-09T20:55:56.599512 #2610] FATAL -- : no block given!
4127
+ F, [2006-08-09T20:56:20.494392 #2618] FATAL -- : Missing host for mailer bar
4128
+ F, [2006-08-09T20:56:20.495703 #2618] FATAL -- : Missing DSN for source foo!
4129
+ F, [2006-08-09T20:56:20.521761 #2618] FATAL -- : no block given!
4130
+ F, [2006-08-09T20:56:35.538013 #2626] FATAL -- : Missing host for mailer bar
4131
+ F, [2006-08-09T20:56:35.539349 #2626] FATAL -- : Missing DSN for source foo!
4132
+ F, [2006-08-09T20:56:35.565623 #2626] FATAL -- : no block given!
4133
+ F, [2006-08-09T20:56:51.349099 #2634] FATAL -- : Missing host for mailer bar
4134
+ F, [2006-08-09T20:56:51.350466 #2634] FATAL -- : Missing DSN for source foo!
4135
+ F, [2006-08-09T20:56:51.376553 #2634] FATAL -- : no block given!
4136
+ F, [2006-08-09T20:57:12.618030 #2642] FATAL -- : Missing host for mailer bar
4137
+ F, [2006-08-09T20:57:12.619435 #2642] FATAL -- : Missing DSN for source foo!
4138
+ F, [2006-08-09T20:57:12.646303 #2642] FATAL -- : no block given!
4139
+ F, [2006-08-09T20:57:21.869998 #2650] FATAL -- : Missing host for mailer bar
4140
+ F, [2006-08-09T20:57:21.871316 #2650] FATAL -- : Missing DSN for source foo!
4141
+ F, [2006-08-09T20:57:21.906372 #2650] FATAL -- : no block given!
4142
+ F, [2006-08-09T20:58:29.616802 #2658] FATAL -- : Missing host for mailer bar
4143
+ F, [2006-08-09T20:58:29.618146 #2658] FATAL -- : Missing DSN for source foo!
4144
+ F, [2006-08-09T20:58:29.653685 #2658] FATAL -- : no block given!
4145
+ F, [2006-08-09T20:58:44.141725 #2666] FATAL -- : Missing host for mailer bar
4146
+ F, [2006-08-09T20:58:44.143038 #2666] FATAL -- : Missing DSN for source foo!
4147
+ F, [2006-08-09T20:58:44.177992 #2666] FATAL -- : no block given!
4148
+ F, [2006-08-09T20:59:03.454037 #2674] FATAL -- : Missing host for mailer bar
4149
+ F, [2006-08-09T20:59:03.455491 #2674] FATAL -- : Missing DSN for source foo!
4150
+ F, [2006-08-09T20:59:03.489806 #2674] FATAL -- : no block given!
4151
+ F, [2006-08-09T20:59:21.438463 #2682] FATAL -- : Missing host for mailer bar
4152
+ F, [2006-08-09T20:59:21.439857 #2682] FATAL -- : Missing DSN for source foo!
4153
+ F, [2006-08-09T20:59:21.900804 #2682] FATAL -- : no block given!
4154
+ F, [2006-08-09T20:59:32.882538 #2690] FATAL -- : Missing host for mailer bar
4155
+ F, [2006-08-09T20:59:32.883871 #2690] FATAL -- : Missing DSN for source foo!
4156
+ F, [2006-08-09T20:59:32.918462 #2690] FATAL -- : no block given!
4157
+ F, [2006-08-09T21:01:14.745088 #2699] FATAL -- : Missing host for mailer bar
4158
+ F, [2006-08-09T21:01:14.746451 #2699] FATAL -- : Missing DSN for source foo!
4159
+ F, [2006-08-09T21:01:15.208192 #2699] FATAL -- : no block given!
4160
+ F, [2006-08-09T21:01:20.723139 #2707] FATAL -- : Missing host for mailer bar
4161
+ F, [2006-08-09T21:01:20.724447 #2707] FATAL -- : Missing DSN for source foo!
4162
+ F, [2006-08-09T21:01:21.187288 #2707] FATAL -- : no block given!
4163
+ F, [2006-08-09T21:02:04.154888 #2715] FATAL -- : Missing host for mailer bar
4164
+ F, [2006-08-09T21:02:04.156237 #2715] FATAL -- : Missing DSN for source foo!
4165
+ F, [2006-08-09T21:02:04.628399 #2715] FATAL -- : no block given!
4166
+ F, [2006-08-09T21:02:13.933198 #2723] FATAL -- : Missing host for mailer bar
4167
+ F, [2006-08-09T21:02:13.934569 #2723] FATAL -- : Missing DSN for source foo!
4168
+ F, [2006-08-09T21:02:14.455316 #2723] FATAL -- : no block given!
4169
+ F, [2006-08-09T22:05:50.958911 #2195] FATAL -- : Missing host for mailer bar
4170
+ F, [2006-08-09T22:05:50.972451 #2195] FATAL -- : Missing DSN for source foo!
4171
+ F, [2006-08-09T22:05:50.998391 #2195] FATAL -- : no block given!
4172
+ F, [2006-08-09T22:07:45.932977 #2203] FATAL -- : Missing host for mailer bar
4173
+ F, [2006-08-09T22:07:45.934294 #2203] FATAL -- : Missing DSN for source foo!
4174
+ F, [2006-08-09T22:07:46.426697 #2203] FATAL -- : no block given!
4175
+ F, [2006-08-09T22:10:09.277806 #2211] FATAL -- : Missing host for mailer bar
4176
+ F, [2006-08-09T22:10:09.279031 #2211] FATAL -- : Missing DSN for source foo!
4177
+ F, [2006-08-09T22:10:10.275090 #2211] FATAL -- : no block given!
4178
+ F, [2006-08-09T22:19:41.208510 #2266] FATAL -- : Missing host for mailer bar
4179
+ F, [2006-08-09T22:19:41.209764 #2266] FATAL -- : Missing DSN for source foo!
4180
+ F, [2006-08-09T22:19:42.208390 #2266] FATAL -- : no block given!
4181
+ F, [2006-08-09T22:34:37.943120 #2303] FATAL -- : Missing host for mailer bar
4182
+ F, [2006-08-09T22:34:37.944460 #2303] FATAL -- : Missing DSN for source foo!
4183
+ F, [2006-08-09T22:34:38.712716 #2303] FATAL -- : no block given!
4184
+ F, [2006-08-09T22:36:41.843011 #2316] FATAL -- : Missing host for mailer bar
4185
+ F, [2006-08-09T22:36:41.844323 #2316] FATAL -- : Missing DSN for source foo!
4186
+ F, [2006-08-09T22:36:42.404099 #2316] FATAL -- : no block given!
4187
+ F, [2006-08-09T22:38:16.839140 #2324] FATAL -- : Missing host for mailer bar
4188
+ F, [2006-08-09T22:38:16.840401 #2324] FATAL -- : Missing DSN for source foo!
4189
+ F, [2006-08-09T22:38:17.316539 #2324] FATAL -- : no block given!
4190
+ F, [2006-08-09T22:39:04.467178 #2333] FATAL -- : Missing host for mailer bar
4191
+ F, [2006-08-09T22:39:04.468425 #2333] FATAL -- : Missing DSN for source foo!
4192
+ F, [2006-08-09T22:39:05.465889 #2333] FATAL -- : no block given!
4193
+ F, [2006-08-09T22:42:24.317528 #2350] FATAL -- : Missing host for mailer bar
4194
+ F, [2006-08-09T22:42:24.318803 #2350] FATAL -- : Missing DSN for source foo!
4195
+ F, [2006-08-09T22:42:25.323158 #2350] FATAL -- : no block given!
4196
+ F, [2006-08-09T22:45:41.078766 #2374] FATAL -- : Missing host for mailer bar
4197
+ F, [2006-08-09T22:45:41.080015 #2374] FATAL -- : Missing DSN for source foo!
4198
+ F, [2006-08-09T22:45:42.082416 #2374] FATAL -- : no block given!
4199
+ F, [2006-08-09T23:00:57.959272 #2433] FATAL -- : Missing host for mailer bar
4200
+ F, [2006-08-09T23:00:57.960533 #2433] FATAL -- : Missing DSN for source foo!
4201
+ F, [2006-08-09T23:00:59.170584 #2433] FATAL -- : no block given!
4202
+ F, [2006-08-09T23:03:44.024552 #2448] FATAL -- : Missing host for mailer bar
4203
+ F, [2006-08-09T23:03:44.025836 #2448] FATAL -- : Missing DSN for source foo!
4204
+ F, [2006-08-09T23:03:45.026301 #2448] FATAL -- : no block given!
4205
+ F, [2006-08-09T23:04:34.189073 #2460] FATAL -- : Missing host for mailer bar
4206
+ F, [2006-08-09T23:04:34.190313 #2460] FATAL -- : Missing DSN for source foo!
4207
+ F, [2006-08-09T23:04:35.190862 #2460] FATAL -- : no block given!
4208
+ F, [2006-08-09T23:15:54.062635 #2496] FATAL -- : Missing host for mailer bar
4209
+ F, [2006-08-09T23:15:54.066179 #2496] FATAL -- : Missing DSN for source foo!
4210
+ F, [2006-08-09T23:15:54.475193 #2496] FATAL -- : no block given!
4211
+ F, [2006-08-09T23:16:16.418939 #2504] FATAL -- : Missing host for mailer bar
4212
+ F, [2006-08-09T23:16:16.420190 #2504] FATAL -- : Missing DSN for source foo!
4213
+ F, [2006-08-09T23:16:16.819597 #2504] FATAL -- : no block given!
4214
+ F, [2006-08-09T23:16:30.867960 #2512] FATAL -- : Missing host for mailer bar
4215
+ F, [2006-08-09T23:16:30.869306 #2512] FATAL -- : Missing DSN for source foo!
4216
+ F, [2006-08-09T23:16:31.877841 #2512] FATAL -- : no block given!
4217
+ F, [2006-08-09T23:18:27.492838 #2525] FATAL -- : Missing host for mailer bar
4218
+ F, [2006-08-09T23:18:27.494111 #2525] FATAL -- : Missing DSN for source foo!
4219
+ F, [2006-08-09T23:18:27.947601 #2525] FATAL -- : no block given!
4220
+ F, [2006-08-09T23:18:53.028465 #2533] FATAL -- : Missing host for mailer bar
4221
+ F, [2006-08-09T23:18:53.029737 #2533] FATAL -- : Missing DSN for source foo!
4222
+ F, [2006-08-09T23:18:54.039834 #2533] FATAL -- : no block given!
4223
+ F, [2006-08-10T01:24:16.764976 #2178] FATAL -- : Missing host for mailer bar
4224
+ F, [2006-08-10T01:24:16.806965 #2178] FATAL -- : Missing DSN for source foo!
4225
+ F, [2006-08-10T01:24:17.786583 #2178] FATAL -- : no block given!
4226
+ F, [2006-08-10T03:37:28.443650 #2233] FATAL -- : Missing host for mailer bar
4227
+ F, [2006-08-10T03:37:28.484218 #2233] FATAL -- : Missing DSN for source foo!
4228
+ F, [2006-08-10T03:37:29.497370 #2233] FATAL -- : no block given!
4229
+ F, [2006-08-10T05:13:20.436073 #2344] FATAL -- : Missing host for mailer bar
4230
+ F, [2006-08-10T05:13:20.437856 #2344] FATAL -- : Missing DSN for source foo!
4231
+ F, [2006-08-10T05:13:22.522232 #2344] FATAL -- : no block given!