@@ -27,13 +27,9 @@ def around_process(*args, &block)
2727 end
2828
2929 included do
30- extend Dragonfly :: Model
30+ include Module . const_get ( "Csv2db:: #{ Csv2db . config . storage_adapter . camelize . constantize } Adapter" )
3131
32- validates :file , presence : true
3332 validate :required_params_are_present
34- validate :check_file_extension
35-
36- dragonfly_accessor :file
3733
3834 after_initialize :set_default_values , :set_required_params
3935
@@ -128,10 +124,14 @@ def method_missing(method, *args, &block)
128124 end
129125 end
130126
127+ def respond_to_missing? ( method , include_private = false )
128+ method . to_s . start_with? ( 'param_' ) || super
129+ end
130+
131131 private
132132
133133 def check_file_contains_data
134- error ( I18n . t ( 'shared.file_processor.insufficient_rows' ) ) unless file . data . present? && csv . count > 0
134+ error ( I18n . t ( 'shared.file_processor.insufficient_rows' ) ) unless csv . headers . present? && csv . count . positive?
135135 stop if errors?
136136 end
137137
@@ -165,12 +165,6 @@ def csv
165165 @csv ||= CSV . parse ( file_data , headers : true )
166166 end
167167
168- def file_data
169- file_data = str_to_utf_8 ( file . data )
170- file_data . sub! ( BYTE_ORDER_MARK , '' ) if file_data . starts_with? ( BYTE_ORDER_MARK )
171- file_data
172- end
173-
174168 def required_params_are_present
175169 return if @required_params . empty?
176170
@@ -183,7 +177,7 @@ def required_params_are_present
183177 end
184178
185179 def log ( message , level = :info )
186- log_messages << { message : str_to_utf_8 ( message ) , level : level , time : Time . now }
180+ log_messages << { message : str_to_utf8 ( message ) , level : level , time : Time . now }
187181 end
188182
189183 def error ( message )
@@ -203,16 +197,16 @@ def set_default_values
203197 self . status ||= Status ::PENDING
204198 end
205199
206- def str_to_utf_8 ( str )
207- CharlockHolmes ::Converter . convert ( str , str . detect_encoding [ :encoding ] , 'UTF-8' )
200+ def str_to_utf8 ( str )
201+ CharlockHolmes ::Converter . convert ( str , str_encoding ( str ) , 'UTF-8' )
208202 end
209203
210- def set_required_params
211- @required_params = [ ]
204+ def str_encoding ( str )
205+ str . detect_encoding [ :encoding ]
212206 end
213207
214- def check_file_extension
215- errors . add ( :file , I18n . t ( 'shared.file_processor.incorrect_file_type' ) ) unless file . ext == 'csv'
208+ def set_required_params
209+ @required_params = [ ]
216210 end
217211 end
218212end
0 commit comments