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 +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
|
|