jzimmek-reportme 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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