old_sql 0.42.0 → 0.43.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -46,7 +46,7 @@ module OldSql
46
46
  logger.info "GENERATION: #{@generation}"
47
47
 
48
48
  processor = load_processor(@report_name)
49
- @report = processor.execute_query(@report_sql,@start_date,@end_date,query_vars(@report_name))
49
+ @report = processor.execute_query(@report_sql,@start_date,@end_date,query_vars(@report_name),@reports[@report_name]['report_design'])
50
50
 
51
51
  respond_to do |format|
52
52
  format.json { render :json => @report.to_json}
@@ -6,8 +6,7 @@ module OldSql
6
6
  desc "Old SQL Install"
7
7
 
8
8
  def check_for_devise
9
- puts "Old SQL works with devise, cancan and sanitize. Checking for a current installation of devise!
10
- "
9
+ puts "Old SQL works with devise, cancan and sanitize. Checking for a current installation of devise!\n"
11
10
 
12
11
  if defined?(Devise)
13
12
  check_for_devise_models
@@ -16,16 +15,52 @@ module OldSql
16
15
  end
17
16
 
18
17
  puts "Please put gem 'cancan' into your Gemfile" unless defined?(Cancan)
19
-
20
18
  puts "Please put gem 'sanitize' into your Gemfile" unless defined?(Sanitize)
21
-
22
- copy_locales_files
23
- create_old_sql_dirs
24
- copy_old_sql_files
25
19
 
26
20
  puts "Also you need a new migration. We'll generate it for you now."
27
21
  invoke 'old_sql:install_migrations'
28
22
  end
23
+
24
+ def copy_initializer
25
+ template "old_sql.rb", "config/initializers/old_sql.rb"
26
+ end
27
+
28
+ def copy_locales_files
29
+ print "Now copying locales files! "
30
+ ###
31
+ locales_path = "#{gem_path}/config/locales/*.yml"
32
+
33
+ locales_app_path = "#{app_path}/config/locales"
34
+
35
+ unless File.directory?(locales_app_path)
36
+ FileUtils.mkdir locales_app_path
37
+ end
38
+
39
+ Dir.glob(locales_path).each do |file|
40
+ file_path = file.split("/")
41
+ file_path = file_path[-1]
42
+ FileUtils.copy_file(file, "#{locales_app_path}/#{file_path}")
43
+ print "."
44
+ end
45
+ print "\n"
46
+
47
+ end
48
+
49
+ def create_old_sql_dirs
50
+ empty_directory "#{app_path}/config/old_sql/"
51
+ empty_directory "#{app_path}/config/old_sql/report_sql"
52
+ empty_directory "#{app_path}/config/old_sql/report_design"
53
+ empty_directory "#{app_path}/lib/old_sql/report_processor"
54
+ end
55
+
56
+ def copy_old_sql_files
57
+ copy_file "#{gem_path}/config/old_sql/reports.yml.example", "#{app_path}/config/old_sql/reports.yml"
58
+ copy_file "#{gem_path}/config/old_sql/report_sql/user.erb.example", "#{app_path}/config/old_sql/report_sql/user.erb"
59
+ copy_file "#{gem_path}/lib/old_sql/report_processor/user_processor.rb.example", "#{app_path}/lib/old_sql/report_processor/user_processor.rb"
60
+ copy_file "user_design_template.csv", "#{app_path}/config/old_sql/report_design/user.csv"
61
+ end
62
+
63
+ ################ PRIVATE ################
29
64
 
30
65
  private
31
66
 
@@ -137,39 +172,6 @@ module OldSql
137
172
  ======================================================"
138
173
  invoke 'devise', [model_name]
139
174
  end
140
-
141
- def copy_locales_files
142
- print "Now copying locales files! "
143
- ###
144
- locales_path = "#{gem_path}/config/locales/*.yml"
145
-
146
- locales_app_path = "#{app_path}/config/locales"
147
-
148
- unless File.directory?(locales_app_path)
149
- FileUtils.mkdir locales_app_path
150
- end
151
-
152
- Dir.glob(locales_path).each do |file|
153
- file_path = file.split("/")
154
- file_path = file_path[-1]
155
- FileUtils.copy_file(file, "#{locales_app_path}/#{file_path}")
156
- print "."
157
- end
158
- print "\n"
159
-
160
- end
161
-
162
- def create_old_sql_dirs
163
- empty_directory "#{app_path}/config/old_sql/"
164
- empty_directory "#{app_path}/config/old_sql/report_sql"
165
- empty_directory "#{app_path}/lib/old_sql/report_processor"
166
- end
167
-
168
- def copy_old_sql_files
169
- copy_file "#{gem_path}/config/old_sql/reports.yml.example", "#{app_path}/config/old_sql/reports.yml"
170
- copy_file "#{gem_path}/config/old_sql/report_sql/user.erb.example", "#{app_path}/config/old_sql/report_sql/user.erb"
171
- copy_file "#{gem_path}/lib/old_sql/report_processor/user_processor.rb.example", "#{app_path}/lib/old_sql/report_processor/user_processor.rb"
172
- end
173
175
 
174
176
  def app_path
175
177
  app_path = Rails.public_path.split("/")
@@ -0,0 +1,7 @@
1
+ # Use this hook to configure the default report view, etc.
2
+ OldSql.setup do |config|
3
+ # ==> Default Report View Configuration
4
+ # Configure the default report view. This setting will be used unless overridden
5
+ # in config/old_sql/reports.yml.
6
+ config.default_report_view = "jqgrid"
7
+ end
@@ -0,0 +1,6 @@
1
+ # Old SQL:
2
+ # Example Report Design document.
3
+ #
4
+ id,name
5
+ "Example Math Operation",id + id
6
+ "Totals","..."
data/lib/old_sql.rb CHANGED
@@ -1,5 +1,15 @@
1
1
  module OldSql
2
2
  require 'old_sql/engine' if defined?(Rails)
3
+
4
+ # The default report view. This setting will be used unless overridden in
5
+ # config/old_sql/reports.yml.
6
+ @@default_report_view = 'jqgrid'
7
+
8
+ # Default way to setup Old SQL. Run rails generate old_sql:install to create
9
+ # a fresh initializer with all configuration values.
10
+ def self.setup
11
+ yield self
12
+ end
3
13
  end
4
14
 
5
15
  require 'extensions/action_controller/base'
@@ -0,0 +1,27 @@
1
+ module OldSql
2
+ module ReportDesign
3
+ class Cell
4
+ attr_accessor :cell_data, :cell
5
+
6
+ def initialize(value)
7
+ @cell = value
8
+ @cell_data = []
9
+
10
+ # Check if cell is a label
11
+ if @cell[0] =~ /['"]/
12
+ @cell_data << CellData.new(@cell)
13
+ else
14
+ value.split(" ").each {|cell_data| @cell_data << CellData.new(cell_data)}
15
+ end
16
+ end
17
+
18
+ def expression?
19
+ if @cell_data.count>1
20
+ return true
21
+ else
22
+ return false
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,30 @@
1
+ module OldSql
2
+ module ReportDesign
3
+ class CellData
4
+ attr_accessor :data, :type
5
+
6
+ COLUMN = 1
7
+ LABEL = 2
8
+ OPERATOR = 3
9
+
10
+ def initialize(value)
11
+ @data = value
12
+ set_type
13
+ end
14
+
15
+ private
16
+
17
+ def set_type
18
+ first_char = @data[0]
19
+ @type = case first_char
20
+ when /['"]/
21
+ LABEL
22
+ when /[\/*+]/
23
+ OPERATOR
24
+ else
25
+ COLUMN
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,21 @@
1
+ module OldSql
2
+ module ReportDesign
3
+ class Model
4
+ attr_accessor :rows
5
+
6
+ @rows = nil
7
+
8
+ def initialize(value = [])
9
+ @rows = value
10
+ end
11
+
12
+ def add(row)
13
+ @rows << Row.new(row) unless row[0] == "#"
14
+ end
15
+
16
+ def row(index)
17
+ @rows[index]
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,28 @@
1
+ module OldSql
2
+ module ReportDesign
3
+ class Parser
4
+ def self.read_file file_to_read
5
+ raise ArgumentError, 'Argument file is null.' unless !file_to_read.nil?
6
+ full_path = "#{report_design_path}/#{file_to_read}"
7
+ raise ArgumentError, "File #{full_path} not found." unless File.exists?(full_path)
8
+
9
+ @model = Model.new
10
+
11
+ file = File.new(full_path, "r")
12
+ while (line = file.gets)
13
+ @model.add line
14
+ end
15
+ file.close
16
+
17
+ @model
18
+ end
19
+
20
+ def self.report_design_path
21
+ app_path = Rails.public_path.split("/")
22
+ app_path.delete_at(-1)
23
+ app_path = app_path.join("/")
24
+ app_path << "/config/old_sql/report_design"
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ module OldSql
2
+ module ReportDesign
3
+ class Row
4
+ attr_accessor :data, :cells
5
+
6
+ def initialize(value)
7
+ @data = value
8
+ @cells = []
9
+
10
+ @data.split(",").each do |cell|
11
+ @cells << Cell.new(cell)
12
+ end
13
+ end
14
+
15
+ def cell(index)
16
+ @cells[index]
17
+ end
18
+ end
19
+ end
20
+ end
@@ -3,12 +3,8 @@ module OldSql
3
3
  class Base
4
4
 
5
5
  ROUND_PRECISION = 2
6
-
7
- def hello_world
8
- puts "Hello World"
9
- end
10
6
 
11
- def execute_query(report_sql,start_date,end_date,query_vars)
7
+ def execute_query(report_sql,start_date,end_date,query_vars,design=nil)
12
8
  vars = {:start_date => start_date, :end_date => end_date}
13
9
 
14
10
  if !query_vars.nil?
@@ -34,8 +30,12 @@ module OldSql
34
30
  rescue
35
31
  #todo log error
36
32
  end
37
-
38
- parse(@resultset)
33
+
34
+ if design
35
+ parse_design(design, @resultset)
36
+ else
37
+ parse(@resultset)
38
+ end
39
39
 
40
40
  @data
41
41
  end
@@ -58,6 +58,38 @@ module OldSql
58
58
 
59
59
  @data
60
60
  end
61
+
62
+ def parse_design(design, resultset)
63
+ Rails.logger.info "PARSING DESIGN DOCUMENT #{design}.csv"
64
+ model = OldSql::ReportDesign::Parser.read_file("#{design}.csv")
65
+
66
+ init(resultset)
67
+
68
+ model.rows.each do |row|
69
+ report_row = []
70
+ row.cells.each do |cell|
71
+ expression = ""
72
+ cell.cell_data.each do |cd|
73
+ if cell.expression?
74
+ if cd.type == OldSql::ReportDesign::CellData::COLUMN
75
+ expression << @rec[cd.data].to_s
76
+ elsif cd.type == OldSql::ReportDesign::CellData::OPERATOR
77
+ expression << cd.data
78
+ end
79
+ else
80
+ if cd.type == OldSql::ReportDesign::CellData::COLUMN
81
+ report_row << @rec[cd.data]
82
+ elsif cd.type == OldSql::ReportDesign::CellData::LABEL
83
+ report_row << cd.data
84
+ end
85
+ end
86
+ end
87
+ report_row << eval(expression) unless expression.length==0
88
+ end
89
+
90
+ new_row(nil, report_row)
91
+ end
92
+ end
61
93
 
62
94
  def new_data(page=1, total=1, records=1)
63
95
  @id = 0
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: old_sql
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.42.0
5
+ version: 0.43.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Eddie Gonzales
@@ -88,8 +88,15 @@ files:
88
88
  - lib/generators/old_sql/templates/add_old_sql_admin_to_users_migration.rb
89
89
  - lib/generators/old_sql/templates/devise/add_devise_to_users_migration.rb
90
90
  - lib/generators/old_sql/templates/devise/devise_model.rb.template
91
+ - lib/generators/old_sql/templates/old_sql.rb
92
+ - lib/generators/old_sql/templates/user_design_template.csv
91
93
  - lib/old_sql.rb
92
94
  - lib/old_sql/engine.rb
95
+ - lib/old_sql/report_design/cell.rb
96
+ - lib/old_sql/report_design/cell_data.rb
97
+ - lib/old_sql/report_design/model.rb
98
+ - lib/old_sql/report_design/parser.rb
99
+ - lib/old_sql/report_design/row.rb
93
100
  - lib/old_sql/report_processor/base.rb
94
101
  - lib/old_sql/report_processor/user_processor.rb.example
95
102
  - public/javascripts/old_sql/date_format.js
@@ -192,7 +199,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
192
199
  requirements:
193
200
  - - ">="
194
201
  - !ruby/object:Gem::Version
195
- hash: -4381450184784543765
202
+ hash: -3181007581839946414
196
203
  segments:
197
204
  - 0
198
205
  version: "0"