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 +1 -1
- data/lib/reportme/report.rb +6 -0
- data/lib/reportme/report_factory.rb +25 -16
- data/test/reportme_test.rb +13 -4
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.1
|
data/lib/reportme/report.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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.
|
459
|
+
def self.__notify_subscriber
|
460
|
+
|
454
461
|
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
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
|
|
data/test/reportme_test.rb
CHANGED
@@ -434,12 +434,21 @@ class ReportmeTest < Test::Unit::TestCase
|
|
434
434
|
should "notify subscriptions" do
|
435
435
|
notifed = false
|
436
436
|
|
437
|
-
|
438
|
-
|
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.
|
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-
|
12
|
+
date: 2009-07-01 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|