jzimmek-reportme 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.4.1
@@ -4,6 +4,9 @@ module Reportme
4
4
  attr_reader :name
5
5
 
6
6
  def initialize(report_factory, name, temporary=false)
7
+
8
+ name = name.to_sym
9
+
7
10
  @report_factory = report_factory
8
11
  @name = name
9
12
  @periods = [:today, :day, :week, :calendar_week, :month, :calendar_month]
@@ -20,6 +23,7 @@ module Reportme
20
23
  end
21
24
 
22
25
  def depends_on(dependencies=[])
26
+ dependencies = dependencies.collect{|d| d.to_sym}
23
27
  @depends_on += dependencies
24
28
  end
25
29
 
@@ -28,6 +32,8 @@ module Reportme
28
32
  end
29
33
 
30
34
  def periods(wanted_periods=[])
35
+ wanted_periods = wanted_periods.collect{|p| p.to_sym}
36
+
31
37
  unless wanted_periods.blank?
32
38
  @periods.clear
33
39
  wanted_periods.each do |period|
@@ -11,6 +11,7 @@ module Reportme
11
11
 
12
12
  def initialize
13
13
  @report_exists_cache = []
14
+ @@report_creations = []
14
15
  end
15
16
 
16
17
  def self.connection(properties)
@@ -74,6 +75,10 @@ module Reportme
74
75
  def report_information_table_name
75
76
  "report_informations"
76
77
  end
78
+
79
+ def remember_report_creation(report, period, von)
80
+ @@report_creations << {:report => report, :period => period, :von => von}
81
+ end
77
82
 
78
83
  def report_information_table_name_exist?
79
84
  select_value("show tables like '#{report_information_table_name}'") != nil
@@ -175,7 +180,7 @@ module Reportme
175
180
  exec("insert into #{report_information_table_name} values ('#{table_name}', '#{von}', '#{bis}', now());")
176
181
  exec("insert into #{table_name} select #{column_names.join(',')} from #{report.table_name(:day)} as d where d.von between '#{von}' and '#{(_von + num_days.days).strftime("%Y-%m-%d 00:00:00")}';")
177
182
 
178
- self.class.notify_subscriber(report.name, period_name, _von)
183
+ remember_report_creation(report, period_name, _von)
179
184
  end
180
185
  end
181
186
  end
@@ -223,12 +228,12 @@ module Reportme
223
228
  # this will speed up generation of weekly and monthly reports.
224
229
 
225
230
  self.class.__sort_periods(periods_queue).each do |period|
226
-
227
- run_dependency_aware(@@reports) do |report|
231
+ run_dependency_aware(@@reports) do |report|
228
232
  __report_period(report, period)
229
233
  end
230
-
231
234
  end
235
+
236
+ self.class.__notify_subscriber
232
237
  ensure
233
238
  @@reports.each do |report|
234
239
 
@@ -269,9 +274,7 @@ module Reportme
269
274
  block.call(r)
270
275
 
271
276
  dependencies.each_pair do |key, values|
272
-
273
277
  if values.include?(r)
274
- # puts "remove '#{r[:name]}' from '#{key}' list of dependencies"
275
278
  values.delete(r)
276
279
  end
277
280
  end
@@ -333,9 +336,12 @@ module Reportme
333
336
  table_exist = r.table_exist?(period_name)
334
337
  sql = r.sql(von, bis, period_name)
335
338
 
336
- puts "report: #{r.table_name(period_name)} von: #{von}, bis: #{bis}"
337
339
 
338
340
  report_exists = report_exists?(table_name, von, bis)
341
+
342
+ unless report_exists
343
+ puts "running report: #{r.table_name(period_name)} von: #{von}, bis: #{bis}"
344
+ end
339
345
 
340
346
  try_report_by_daily_reports(r, :week, _von, 6, 7) if period_name == :week && !report_exists
341
347
  try_report_by_daily_reports(r, :calendar_week, _von, 6, 7) if period_name == :calendar_week && !report_exists
@@ -355,7 +361,7 @@ module Reportme
355
361
 
356
362
  exec("insert into #{table_name} #{sql};")
357
363
 
358
- self.class.notify_subscriber(r.name, period_name, _von)
364
+ remember_report_creation(r, period_name, _von)
359
365
  end
360
366
  end
361
367
 
@@ -450,13 +456,18 @@ module Reportme
450
456
  existing << block
451
457
  end
452
458
 
453
- def self.notify_subscriber(report_name, period, von)
459
+ def self.__notify_subscriber
460
+
454
461
 
455
- (@@subscribtions[report_name] || []).each do |subscription|
456
- begin
457
- subscription.call(period, von)
458
- rescue Exception => e
459
- puts e
462
+ @@report_creations.each do |creation|
463
+
464
+ report_name = creation[:report].name
465
+ period = creation[:period]
466
+ von = creation[:von]
467
+
468
+ (@@subscribtions[report_name] || []).each do |subscription|
469
+ puts "notify subscriber of report '#{report_name}' - period: '#{period}', von: '#{von}'"
470
+ subscription.call(period, von, report_name)
460
471
  end
461
472
  end
462
473
 
@@ -464,8 +475,6 @@ module Reportme
464
475
 
465
476
  def self.report(name, temporary=false, &block)
466
477
 
467
- name = name.to_sym
468
-
469
478
  r = Report.new(self, name, temporary)
470
479
  r.instance_eval(&block)
471
480
 
@@ -434,12 +434,21 @@ class ReportmeTest < Test::Unit::TestCase
434
434
  should "notify subscriptions" do
435
435
  notifed = false
436
436
 
437
- rme = create_visit_report_factory
438
- rme.class.subscribe :visits do
437
+ now = DateTime.now
438
+ _now = now.strftime("%Y-%m-%d 00:00:00")
439
+ _yesterday = (now - 1.day).strftime("%Y-%m-%d 00:00:00")
440
+
441
+ exec("insert into visits values (null, 'sem', '#{now}')");
442
+ rme = create_visit_report_factory(:periods => [:day])
443
+ rme.class.subscribe :visits do |period, von, report_name|
444
+
445
+ assert_equal :day, period
446
+ assert_equal :visits, report_name
447
+ assert_equal _yesterday, von.strftime("%Y-%m-%d 00:00:00")
448
+
439
449
  notifed = true
440
450
  end
441
-
442
- rme.class.notify_subscriber(:visits, :day, '2009-01-01'.to_datetime)
451
+ rme.run
443
452
 
444
453
  assert notifed
445
454
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jzimmek-reportme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Zimmek
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-29 00:00:00 -07:00
12
+ date: 2009-07-01 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15