mainej-activewarehouse 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. data/activewarehouse/README +99 -0
  2. data/activewarehouse/Rakefile +165 -0
  3. data/activewarehouse/TODO +4 -0
  4. data/activewarehouse/db/migrations/001_create_table_reports.rb +28 -0
  5. data/activewarehouse/doc/references.txt +4 -0
  6. data/activewarehouse/generators/bridge/USAGE +1 -0
  7. data/activewarehouse/generators/bridge/bridge_generator.rb +46 -0
  8. data/activewarehouse/generators/bridge/templates/fixture.yml +5 -0
  9. data/activewarehouse/generators/bridge/templates/migration.rb +27 -0
  10. data/activewarehouse/generators/bridge/templates/model.rb +3 -0
  11. data/activewarehouse/generators/bridge/templates/unit_test.rb +8 -0
  12. data/activewarehouse/generators/cube/USAGE +1 -0
  13. data/activewarehouse/generators/cube/cube_generator.rb +28 -0
  14. data/activewarehouse/generators/cube/templates/model.rb +3 -0
  15. data/activewarehouse/generators/cube/templates/unit_test.rb +8 -0
  16. data/activewarehouse/generators/date_dimension/USAGE +1 -0
  17. data/activewarehouse/generators/date_dimension/date_dimension_generator.rb +16 -0
  18. data/activewarehouse/generators/date_dimension/templates/fixture.yml +5 -0
  19. data/activewarehouse/generators/date_dimension/templates/migration.rb +31 -0
  20. data/activewarehouse/generators/date_dimension/templates/model.rb +3 -0
  21. data/activewarehouse/generators/date_dimension/templates/unit_test.rb +8 -0
  22. data/activewarehouse/generators/dimension/USAGE +1 -0
  23. data/activewarehouse/generators/dimension/dimension_generator.rb +46 -0
  24. data/activewarehouse/generators/dimension/templates/fixture.yml +5 -0
  25. data/activewarehouse/generators/dimension/templates/migration.rb +11 -0
  26. data/activewarehouse/generators/dimension/templates/model.rb +3 -0
  27. data/activewarehouse/generators/dimension/templates/unit_test.rb +8 -0
  28. data/activewarehouse/generators/dimension_view/USAGE +1 -0
  29. data/activewarehouse/generators/dimension_view/dimension_view_generator.rb +62 -0
  30. data/activewarehouse/generators/dimension_view/templates/migration.rb +17 -0
  31. data/activewarehouse/generators/dimension_view/templates/model.rb +3 -0
  32. data/activewarehouse/generators/dimension_view/templates/unit_test.rb +10 -0
  33. data/activewarehouse/generators/fact/USAGE +1 -0
  34. data/activewarehouse/generators/fact/fact_generator.rb +46 -0
  35. data/activewarehouse/generators/fact/templates/fixture.yml +5 -0
  36. data/activewarehouse/generators/fact/templates/migration.rb +13 -0
  37. data/activewarehouse/generators/fact/templates/model.rb +3 -0
  38. data/activewarehouse/generators/fact/templates/unit_test.rb +10 -0
  39. data/activewarehouse/generators/time_dimension/USAGE +1 -0
  40. data/activewarehouse/generators/time_dimension/templates/fixture.yml +5 -0
  41. data/activewarehouse/generators/time_dimension/templates/migration.rb +12 -0
  42. data/activewarehouse/generators/time_dimension/templates/model.rb +3 -0
  43. data/activewarehouse/generators/time_dimension/templates/unit_test.rb +8 -0
  44. data/activewarehouse/generators/time_dimension/time_dimension_generator.rb +14 -0
  45. data/activewarehouse/init.rb +1 -0
  46. data/activewarehouse/install.rb +5 -0
  47. data/activewarehouse/lib/active_warehouse.rb +91 -0
  48. data/activewarehouse/lib/active_warehouse/aggregate.rb +75 -0
  49. data/activewarehouse/lib/active_warehouse/aggregate/dwarf_aggregate.rb +369 -0
  50. data/activewarehouse/lib/active_warehouse/aggregate/dwarf_common.rb +44 -0
  51. data/activewarehouse/lib/active_warehouse/aggregate/dwarf_printer.rb +34 -0
  52. data/activewarehouse/lib/active_warehouse/aggregate/no_aggregate.rb +212 -0
  53. data/activewarehouse/lib/active_warehouse/aggregate/pid_aggregate.rb +29 -0
  54. data/activewarehouse/lib/active_warehouse/aggregate_field.rb +59 -0
  55. data/activewarehouse/lib/active_warehouse/bridge.rb +19 -0
  56. data/activewarehouse/lib/active_warehouse/bridge/hierarchy_bridge.rb +46 -0
  57. data/activewarehouse/lib/active_warehouse/builder.rb +3 -0
  58. data/activewarehouse/lib/active_warehouse/builder/date_dimension_builder.rb +91 -0
  59. data/activewarehouse/lib/active_warehouse/builder/generator/generator.rb +13 -0
  60. data/activewarehouse/lib/active_warehouse/builder/generator/name_generator.rb +20 -0
  61. data/activewarehouse/lib/active_warehouse/builder/generator/paragraph_generator.rb +11 -0
  62. data/activewarehouse/lib/active_warehouse/builder/random_data_builder.rb +239 -0
  63. data/activewarehouse/lib/active_warehouse/builder/test_data_builder.rb +54 -0
  64. data/activewarehouse/lib/active_warehouse/calculated_field.rb +27 -0
  65. data/activewarehouse/lib/active_warehouse/compat/compat.rb +49 -0
  66. data/activewarehouse/lib/active_warehouse/core_ext.rb +1 -0
  67. data/activewarehouse/lib/active_warehouse/core_ext/time.rb +5 -0
  68. data/activewarehouse/lib/active_warehouse/core_ext/time/calculations.rb +40 -0
  69. data/activewarehouse/lib/active_warehouse/cube.rb +235 -0
  70. data/activewarehouse/lib/active_warehouse/cube_query_result.rb +69 -0
  71. data/activewarehouse/lib/active_warehouse/dimension.rb +329 -0
  72. data/activewarehouse/lib/active_warehouse/dimension/date_dimension.rb +15 -0
  73. data/activewarehouse/lib/active_warehouse/dimension/dimension_reflection.rb +21 -0
  74. data/activewarehouse/lib/active_warehouse/dimension/dimension_view.rb +27 -0
  75. data/activewarehouse/lib/active_warehouse/dimension/hierarchical_dimension.rb +99 -0
  76. data/activewarehouse/lib/active_warehouse/dimension/slowly_changing_dimension.rb +147 -0
  77. data/activewarehouse/lib/active_warehouse/fact.rb +239 -0
  78. data/activewarehouse/lib/active_warehouse/field.rb +74 -0
  79. data/activewarehouse/lib/active_warehouse/migrations.rb +64 -0
  80. data/activewarehouse/lib/active_warehouse/ordered_hash.rb +34 -0
  81. data/activewarehouse/lib/active_warehouse/prejoin_fact.rb +97 -0
  82. data/activewarehouse/lib/active_warehouse/report.rb +7 -0
  83. data/activewarehouse/lib/active_warehouse/report/abstract_report.rb +149 -0
  84. data/activewarehouse/lib/active_warehouse/report/chart_report.rb +9 -0
  85. data/activewarehouse/lib/active_warehouse/report/data_cell.rb +21 -0
  86. data/activewarehouse/lib/active_warehouse/report/data_column.rb +19 -0
  87. data/activewarehouse/lib/active_warehouse/report/data_row.rb +15 -0
  88. data/activewarehouse/lib/active_warehouse/report/dimension.rb +58 -0
  89. data/activewarehouse/lib/active_warehouse/report/table_report.rb +38 -0
  90. data/activewarehouse/lib/active_warehouse/version.rb +9 -0
  91. data/activewarehouse/lib/active_warehouse/view.rb +9 -0
  92. data/activewarehouse/lib/active_warehouse/view/crumb.rb +64 -0
  93. data/activewarehouse/lib/active_warehouse/view/report_helper.rb +98 -0
  94. data/activewarehouse/lib/active_warehouse/view/table_view.rb +134 -0
  95. data/activewarehouse/lib/active_warehouse/view/yui_adapter.rb +68 -0
  96. data/activewarehouse/tasks/active_warehouse_tasks.rake +122 -0
  97. metadata +237 -0
@@ -0,0 +1,68 @@
1
+ module ActiveWarehouse::View
2
+ module YuiAdapter
3
+ def yui_column_definitions(table_view)
4
+ columns = [{:key => 'row_dimension_key', :label => table_view.row_dimension.hierarchy_level.to_s.humanize.titleize, :sortable => true}]
5
+ table_view.column_dimension.values.each do |col_dim_value|
6
+ if table_view.column_dimension.has_children?
7
+ col_label = %Q{<a href="#{url_for(table_view.column_link(col_dim_value))}" onclick="location.href=this.href;" class="yui-dt-link">#{col_dim_value}</a>}
8
+ else
9
+ col_label = col_dim_value
10
+ end
11
+ column = {:label => col_label}
12
+ column[:children] = []
13
+ table_view.fact_attributes.each do |fact_attribute|
14
+ child_data = {:sortable => true}
15
+ child_data[:label] = fact_attribute.label.humanize.titleize
16
+
17
+ format = table_view.report.format[fact_attribute.name.to_sym]
18
+ if format && format.is_a?(Symbol)
19
+ child_data[:formatter] = format
20
+ end
21
+ child_data[:key] = "#{col_dim_value}_#{fact_attribute.label}".gsub(' ', '_').downcase
22
+ column[:children] << child_data
23
+ end
24
+ columns << column
25
+ end
26
+ columns
27
+ end
28
+
29
+ def yui_data_rows(table_view)
30
+ data_rows = []
31
+ table_view.data_rows.each do |data_row|
32
+ data = {}
33
+ data[:row_dimension_key] = link_to_if(table_view.row_dimension.has_children?, data_row.dimension_value, table_view.row_link(data_row.dimension_value))
34
+ data[:row_dimension_label] = data_row.dimension_value
35
+
36
+ data_row.cells.each_with_index do |cell, index| # aggregated facts
37
+ value = cell.raw_value
38
+ format = table_view.report.format[cell.fact_attribute.name.to_sym]
39
+ if format && format.is_a?(Proc)
40
+ value = format.call(cell.raw_value)
41
+ end
42
+
43
+ value = link_to_if((table_view.report.link_cell && column_dimension.has_children? && row_dimension.has_children?), value,
44
+ table_view.cell_link(cell.column_dimension_value,data_row.dimension_value)
45
+ )
46
+ data[cell.key.to_sym] = value
47
+ end
48
+ data_rows << data
49
+ end
50
+ data_rows
51
+ end
52
+
53
+ def yui_totals_row(table_view)
54
+ x = ::Builder::XmlMarkup.new
55
+ x.tr() do |x|
56
+ x.td do
57
+ x.div(:class => "yui-dt-liner"){ |x| x << "Grand Totals"}
58
+ end
59
+ table_view.data_columns.each_with_index do |column, index|
60
+ x.td do |x|
61
+ x.div(:class => "yui-dt-liner"){ |x| x << table_view.column_total(index)}
62
+ end
63
+ end
64
+ end
65
+ x.target!
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,122 @@
1
+ namespace :warehouse do
2
+ desc "Drop and create the current database"
3
+ task :recreate => :environment do
4
+ abcs = ActiveRecord::Base.configurations
5
+ ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
6
+ puts "Recreating #{ActiveRecord::Base.connection.current_database}"
7
+ ActiveRecord::Base.connection.recreate_database(ActiveRecord::Base.connection.current_database)
8
+ ActiveRecord::Base.connection.reconnect!
9
+ end
10
+
11
+ desc "Build a 'standard' date dimension"
12
+ task :build_date_dimension => :environment do
13
+ abcs = ActiveRecord::Base.configurations
14
+ ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
15
+
16
+ start_date = (ENV['START_DATE'] ? Time.parse(ENV['START_DATE']) : Time.now.years_ago(5))
17
+ end_date = (ENV['END_DATE'] ? Time.parse(ENV['END_DATE']) : Time.now )
18
+
19
+ if ENV['TRUNCATE']
20
+ puts "Truncating date dimension"
21
+ DateDimension.connection.execute("TRUNCATE TABLE date_dimension")
22
+ end
23
+
24
+ puts "Building date dimension"
25
+
26
+ ddb = ActiveWarehouse::Builder::DateDimensionBuilder.new(start_date, end_date)
27
+ ddb.build.each do |record|
28
+ dd = DateDimension.new
29
+ record.each do |key,value|
30
+ dd.send("#{key}=".to_sym, value) if dd.respond_to?(key)
31
+ end
32
+ dd.save!
33
+ end
34
+ end
35
+
36
+ desc "Build random data for all facts and dimensions in the models directory, excluding date"
37
+ task :build_random_data => :environment do
38
+ abcs = ActiveRecord::Base.configurations
39
+ ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
40
+ require 'pp'
41
+
42
+ name = ENV['NAME']
43
+ options = {}
44
+ options[:truncate] = true if ENV['TRUNCATE']
45
+ options[:facts] = ENV['FACTS'].to_i if ENV['FACTS']
46
+ options[:dimensions] = ENV['DIMENSIONS'].to_i if ENV['DIMENSIONS']
47
+
48
+ if name
49
+ build_and_load(name, options)
50
+ else
51
+ models_dir = File.join(File.dirname(__FILE__), '../../../../app/models')
52
+ Dir.glob(File.join(models_dir, "**", "*_dimension.rb")).each do |f|
53
+ name = File.basename(f, '.rb')
54
+ next if name == 'date_dimension'
55
+ options[:rows] = options[:dimensions]
56
+ build_and_load(name, options)
57
+ end
58
+ Dir.glob(File.join(models_dir, "**", "*_fact.rb")).each do |f|
59
+ name = File.basename(f, '.rb')
60
+ options[:rows] = options[:facts]
61
+ build_and_load(name, options)
62
+ end
63
+ end
64
+ end
65
+
66
+ desc "Populate with test data"
67
+ task :populate => [:build_date_dimension, :build_random_data]
68
+
69
+ desc "Recreate, migrate and populate"
70
+ task :setup => [:recreate, :migrate, 'db:migrate', :populate]
71
+
72
+ desc "Rebuild the warehouse" # TODO: consider moving this logic somewhere into a class and calling it from here
73
+ task :rebuild => :environment do
74
+ puts "Rebuilding data warehouse"
75
+ # Discover and require all cube models
76
+ # TODO: do some more research on the potential problems with this
77
+ models_dir = File.join(File.dirname(__FILE__), '../../../../app/models')
78
+ Dir.glob(File.join(models_dir, "**", "*.rb")).each do |f|
79
+ if f =~ /_cube\.rb/
80
+ require f
81
+ end
82
+ end
83
+
84
+ t = Benchmark.realtime do
85
+ ActiveWarehouse::Cube.subclasses.each do |subclass|
86
+ puts "Rebuilding #{subclass}"
87
+ tc = Benchmark.realtime do
88
+ subclass.populate(:force => true)
89
+ end
90
+ puts "Rebuilt #{subclass} in #{tc}s"
91
+ end
92
+ end
93
+ puts "Data warehouse rebuilt in #{t}s"
94
+ end
95
+
96
+ desc "Migrate ActiveWarehouse"
97
+ task :migrate => :environment do
98
+ puts "Migrating ActiveWarehouse"
99
+ migration_directory = File.join(File.dirname(__FILE__), '../db/migrations')
100
+ ActiveWarehouse::Migrator.migrate(migration_directory, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
101
+ end
102
+ end
103
+
104
+ def build_and_load(name, options)
105
+ builder = ActiveWarehouse::Builder::RandomDataBuilder.new
106
+
107
+ clazz = name.classify.constantize
108
+ if options[:truncate] # TODO: Handle through adapter by adding a truncate method to the adapter
109
+ puts "Truncating #{name}"
110
+ clazz.connection.execute("TRUNCATE TABLE #{clazz.table_name}")
111
+ end
112
+
113
+ options[:fk_limit] = {}
114
+ options[:fk_limit]['date_id'] = DateDimension.count
115
+
116
+ puts "Building #{name}"
117
+ builder.build(name, options).each do |record|
118
+ clazz.create(record)
119
+ end
120
+ rescue => e
121
+ puts "Unable to build #{name}: #{e}"
122
+ end
metadata ADDED
@@ -0,0 +1,237 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mainej-activewarehouse
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Anthony Eden
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-07-10 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rake
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.7.1
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: fastercsv
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 1.1.0
32
+ version:
33
+ - !ruby/object:Gem::Dependency
34
+ name: activesupport
35
+ version_requirement:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.3.1
41
+ version:
42
+ - !ruby/object:Gem::Dependency
43
+ name: activerecord
44
+ version_requirement:
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 1.14.4
50
+ version:
51
+ - !ruby/object:Gem::Dependency
52
+ name: actionpack
53
+ version_requirement:
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: 1.12.5
59
+ version:
60
+ - !ruby/object:Gem::Dependency
61
+ name: rails_sql_views
62
+ version_requirement:
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 0.1.0
68
+ version:
69
+ - !ruby/object:Gem::Dependency
70
+ name: adapter_extensions
71
+ version_requirement:
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 0.1.0
77
+ version:
78
+ description: ActiveWarehouse extends Rails to provide functionality specific for building data warehouses.
79
+ email: anthonyeden@gmail.com
80
+ executables: []
81
+
82
+ extensions: []
83
+
84
+ extra_rdoc_files: []
85
+
86
+ files:
87
+ - activewarehouse/init.rb
88
+ - activewarehouse/install.rb
89
+ - activewarehouse/README
90
+ - activewarehouse/TODO
91
+ - activewarehouse/Rakefile
92
+ - activewarehouse/db/migrations
93
+ - activewarehouse/db/migrations/001_create_table_reports.rb
94
+ - activewarehouse/doc/references.txt
95
+ - activewarehouse/generators/bridge
96
+ - activewarehouse/generators/cube
97
+ - activewarehouse/generators/date_dimension
98
+ - activewarehouse/generators/dimension
99
+ - activewarehouse/generators/dimension_view
100
+ - activewarehouse/generators/fact
101
+ - activewarehouse/generators/time_dimension
102
+ - activewarehouse/generators/bridge/bridge_generator.rb
103
+ - activewarehouse/generators/bridge/templates
104
+ - activewarehouse/generators/bridge/USAGE
105
+ - activewarehouse/generators/bridge/templates/fixture.yml
106
+ - activewarehouse/generators/bridge/templates/migration.rb
107
+ - activewarehouse/generators/bridge/templates/model.rb
108
+ - activewarehouse/generators/bridge/templates/unit_test.rb
109
+ - activewarehouse/generators/cube/cube_generator.rb
110
+ - activewarehouse/generators/cube/templates
111
+ - activewarehouse/generators/cube/USAGE
112
+ - activewarehouse/generators/cube/templates/model.rb
113
+ - activewarehouse/generators/cube/templates/unit_test.rb
114
+ - activewarehouse/generators/date_dimension/date_dimension_generator.rb
115
+ - activewarehouse/generators/date_dimension/templates
116
+ - activewarehouse/generators/date_dimension/USAGE
117
+ - activewarehouse/generators/date_dimension/templates/fixture.yml
118
+ - activewarehouse/generators/date_dimension/templates/migration.rb
119
+ - activewarehouse/generators/date_dimension/templates/model.rb
120
+ - activewarehouse/generators/date_dimension/templates/unit_test.rb
121
+ - activewarehouse/generators/dimension/dimension_generator.rb
122
+ - activewarehouse/generators/dimension/templates
123
+ - activewarehouse/generators/dimension/USAGE
124
+ - activewarehouse/generators/dimension/templates/fixture.yml
125
+ - activewarehouse/generators/dimension/templates/migration.rb
126
+ - activewarehouse/generators/dimension/templates/model.rb
127
+ - activewarehouse/generators/dimension/templates/unit_test.rb
128
+ - activewarehouse/generators/dimension_view/dimension_view_generator.rb
129
+ - activewarehouse/generators/dimension_view/templates
130
+ - activewarehouse/generators/dimension_view/USAGE
131
+ - activewarehouse/generators/dimension_view/templates/migration.rb
132
+ - activewarehouse/generators/dimension_view/templates/model.rb
133
+ - activewarehouse/generators/dimension_view/templates/unit_test.rb
134
+ - activewarehouse/generators/fact/fact_generator.rb
135
+ - activewarehouse/generators/fact/templates
136
+ - activewarehouse/generators/fact/USAGE
137
+ - activewarehouse/generators/fact/templates/fixture.yml
138
+ - activewarehouse/generators/fact/templates/migration.rb
139
+ - activewarehouse/generators/fact/templates/model.rb
140
+ - activewarehouse/generators/fact/templates/unit_test.rb
141
+ - activewarehouse/generators/time_dimension/templates
142
+ - activewarehouse/generators/time_dimension/time_dimension_generator.rb
143
+ - activewarehouse/generators/time_dimension/USAGE
144
+ - activewarehouse/generators/time_dimension/templates/fixture.yml
145
+ - activewarehouse/generators/time_dimension/templates/migration.rb
146
+ - activewarehouse/generators/time_dimension/templates/model.rb
147
+ - activewarehouse/generators/time_dimension/templates/unit_test.rb
148
+ - activewarehouse/lib/active_warehouse
149
+ - activewarehouse/lib/active_warehouse.rb
150
+ - activewarehouse/lib/active_warehouse/aggregate
151
+ - activewarehouse/lib/active_warehouse/aggregate.rb
152
+ - activewarehouse/lib/active_warehouse/aggregate_field.rb
153
+ - activewarehouse/lib/active_warehouse/bridge
154
+ - activewarehouse/lib/active_warehouse/bridge.rb
155
+ - activewarehouse/lib/active_warehouse/builder
156
+ - activewarehouse/lib/active_warehouse/builder.rb
157
+ - activewarehouse/lib/active_warehouse/calculated_field.rb
158
+ - activewarehouse/lib/active_warehouse/compat
159
+ - activewarehouse/lib/active_warehouse/core_ext
160
+ - activewarehouse/lib/active_warehouse/core_ext.rb
161
+ - activewarehouse/lib/active_warehouse/cube.rb
162
+ - activewarehouse/lib/active_warehouse/cube_query_result.rb
163
+ - activewarehouse/lib/active_warehouse/dimension
164
+ - activewarehouse/lib/active_warehouse/dimension.rb
165
+ - activewarehouse/lib/active_warehouse/fact.rb
166
+ - activewarehouse/lib/active_warehouse/field.rb
167
+ - activewarehouse/lib/active_warehouse/migrations.rb
168
+ - activewarehouse/lib/active_warehouse/ordered_hash.rb
169
+ - activewarehouse/lib/active_warehouse/prejoin_fact.rb
170
+ - activewarehouse/lib/active_warehouse/report
171
+ - activewarehouse/lib/active_warehouse/report.rb
172
+ - activewarehouse/lib/active_warehouse/version.rb
173
+ - activewarehouse/lib/active_warehouse/view
174
+ - activewarehouse/lib/active_warehouse/view.rb
175
+ - activewarehouse/lib/active_warehouse/aggregate/dwarf_aggregate.rb
176
+ - activewarehouse/lib/active_warehouse/aggregate/dwarf_common.rb
177
+ - activewarehouse/lib/active_warehouse/aggregate/dwarf_printer.rb
178
+ - activewarehouse/lib/active_warehouse/aggregate/no_aggregate.rb
179
+ - activewarehouse/lib/active_warehouse/aggregate/pid_aggregate.rb
180
+ - activewarehouse/lib/active_warehouse/bridge/hierarchy_bridge.rb
181
+ - activewarehouse/lib/active_warehouse/builder/date_dimension_builder.rb
182
+ - activewarehouse/lib/active_warehouse/builder/generator
183
+ - activewarehouse/lib/active_warehouse/builder/random_data_builder.rb
184
+ - activewarehouse/lib/active_warehouse/builder/test_data_builder.rb
185
+ - activewarehouse/lib/active_warehouse/builder/generator/generator.rb
186
+ - activewarehouse/lib/active_warehouse/builder/generator/name_generator.rb
187
+ - activewarehouse/lib/active_warehouse/builder/generator/paragraph_generator.rb
188
+ - activewarehouse/lib/active_warehouse/compat/compat.rb
189
+ - activewarehouse/lib/active_warehouse/core_ext/time
190
+ - activewarehouse/lib/active_warehouse/core_ext/time.rb
191
+ - activewarehouse/lib/active_warehouse/core_ext/time/calculations.rb
192
+ - activewarehouse/lib/active_warehouse/dimension/date_dimension.rb
193
+ - activewarehouse/lib/active_warehouse/dimension/dimension_reflection.rb
194
+ - activewarehouse/lib/active_warehouse/dimension/dimension_view.rb
195
+ - activewarehouse/lib/active_warehouse/dimension/hierarchical_dimension.rb
196
+ - activewarehouse/lib/active_warehouse/dimension/slowly_changing_dimension.rb
197
+ - activewarehouse/lib/active_warehouse/report/abstract_report.rb
198
+ - activewarehouse/lib/active_warehouse/report/chart_report.rb
199
+ - activewarehouse/lib/active_warehouse/report/data_cell.rb
200
+ - activewarehouse/lib/active_warehouse/report/data_column.rb
201
+ - activewarehouse/lib/active_warehouse/report/data_row.rb
202
+ - activewarehouse/lib/active_warehouse/report/dimension.rb
203
+ - activewarehouse/lib/active_warehouse/report/table_report.rb
204
+ - activewarehouse/lib/active_warehouse/view/crumb.rb
205
+ - activewarehouse/lib/active_warehouse/view/report_helper.rb
206
+ - activewarehouse/lib/active_warehouse/view/table_view.rb
207
+ - activewarehouse/lib/active_warehouse/view/yui_adapter.rb
208
+ - activewarehouse/tasks/active_warehouse_tasks.rake
209
+ has_rdoc: false
210
+ homepage: http://activewarehouse.rubyforge.org
211
+ post_install_message:
212
+ rdoc_options:
213
+ - --exclude
214
+ - .
215
+ require_paths:
216
+ - lib
217
+ required_ruby_version: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: "0"
222
+ version:
223
+ required_rubygems_version: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: "0"
228
+ version:
229
+ requirements: []
230
+
231
+ rubyforge_project: activewarehouse
232
+ rubygems_version: 1.2.0
233
+ signing_key:
234
+ specification_version: 2
235
+ summary: Build data warehouses with Rails.
236
+ test_files: []
237
+