diff options
| author | Marc Florisson | 2014-01-22 17:41:04 +0100 |
|---|---|---|
| committer | Marc Florisson | 2014-01-22 17:41:04 +0100 |
| commit | c9437fc2e96f415e38c1e72fa10337769381f289 (patch) | |
| tree | 199b39a7c8c5cc2cfef539f73f73c1b5fbea8a72 /app/models/file_validation.rb | |
| parent | 4e71abdc01f9f04ce6eec1989fa756ffc823fd65 (diff) | |
| download | chouette-core-c9437fc2e96f415e38c1e72fa10337769381f289.tar.bz2 | |
merge branch validation
Diffstat (limited to 'app/models/file_validation.rb')
| -rw-r--r-- | app/models/file_validation.rb | 186 |
1 files changed, 0 insertions, 186 deletions
diff --git a/app/models/file_validation.rb b/app/models/file_validation.rb deleted file mode 100644 index e09a48113..000000000 --- a/app/models/file_validation.rb +++ /dev/null @@ -1,186 +0,0 @@ -class FileValidation < ActiveRecord::Base - validates_presence_of :resources - - validates_inclusion_of :status, :in => %w{ pending completed failed } - - attr_accessor :resources,:uncheck_count,:ok_count,:warning_count,:error_count,:fatal_count,:log_message_tree - attr_accessor :validator - - belongs_to :organisation - validates_presence_of :organisation - - has_many :log_messages, :class_name => "FileValidationLogMessage", :order => :position, :dependent => :destroy - - serialize :options - - def self.option(name) - name = name.to_s - - define_method(name) do - self.options and self.options[name] - end - - define_method("#{name}=") do |prefix| - (self.options ||= {})[name] = prefix - end - end - - option :test3_1_minimal_distance - option :test3_2_minimal_distance - option :test3_2_polygon_points - option :test3_7_minimal_distance - option :test3_7_maximal_distance - option :test3_8a_minimal_speed - option :test3_8a_maximal_speed - option :test3_8b_minimal_speed - option :test3_8b_maximal_speed - option :test3_8c_minimal_speed - option :test3_8c_maximal_speed - option :test3_8d_minimal_speed - option :test3_8d_maximal_speed - option :test3_9_minimal_speed - option :test3_9_maximal_speed - option :test3_10_minimal_distance - option :test3_15_minimal_time - option :test3_16_1_maximal_time - option :test3_16_3a_maximal_time - option :test3_16_3b_maximal_time - option :test3_21a_minimal_speed - option :test3_21a_maximal_speed - option :test3_21b_minimal_speed - option :test3_21b_maximal_speed - option :test3_21c_minimal_speed - option :test3_21c_maximal_speed - option :test3_21d_minimal_speed - option :test3_21d_maximal_speed - option :projection_reference - - def validator - @validator ||= ::Chouette::FileValidator.new("public") - end - - def with_original_filename - Dir.mktmpdir do |tmp_dir| - tmp_link = File.join(tmp_dir, resources.original_filename) - FileUtils.ln_s resources.path, tmp_link - yield tmp_link - end - end - - before_validation :define_default_attributes, :on => :create - def define_default_attributes - self.status ||= "pending" - end - - after_validation :extract_file_type, :on => :create - def extract_file_type - if ! resources.nil? - if !resources.original_filename.nil? - self.file_type = resources.original_filename.rpartition(".").last - self.file_name = resources.original_filename - end - end - end - - after_create :delayed_validate - def delayed_validate - save_resources - delay.validate - end - - @@root = "#{Rails.root}/tmp/validations" - cattr_accessor :root - - def save_resources - FileUtils.mkdir_p root - FileUtils.cp resources.path, saved_resources - end - - after_destroy :destroy_resources - def destroy_resources - FileUtils.rm saved_resources if File.exists? saved_resources - end - - def saved_resources - "#{root}/#{id}.#{file_type}" - end - - def name - "#{FileValidation.model_name.humanize} #{id}" - end - - def validation_options - hash = { :validation_id => self.id , - :file_format => self.file_type} - options.keys.each do |opt| - hash.merge! opt.to_sym => self.send(opt.to_sym) - end - hash - end - - def validate - begin - # log_messages.create :key => :started - if resources - with_original_filename do |file| - # chouette-command checks the file extension (and requires .zip) :( - validator.validate file, validation_options - end - else - validator.validate saved_resources, validation_options - end - update_attribute :status, "completed" - rescue => e - Rails.logger.error "Validation #{id} failed : #{e}, #{e.backtrace}" - update_attribute :status, "failed" - end - # log_messages.create :key => status - end - - after_find :compute_tests - def compute_tests - if status == 'completed' - self.uncheck_count = 0 - self.ok_count = 0 - self.warning_count = 0 - self.error_count = 0 - self.fatal_count = 0 - self.log_message_tree = Array.new - father1=nil - father2=nil - father3=nil - log_messages.each do |message| - if message.level == 1 - self.log_message_tree << message - father1=message - elsif message.level == 2 - father1.add_child message - father2=message - elsif message.level == 3 - father2.add_child message - father3=message - if message.severity == 'uncheck' - self.uncheck_count += 1 - end - if message.severity == 'ok' - self.ok_count += 1 - end - if message.severity == 'warning' - self.warning_count += 1 - end - if message.severity == 'error' - self.error_count += 1 - end - if message.severity == 'fatal' - self.fatal_count += 1 - end - elsif message.level == 4 - father3.add_child message - end - end - end - - end - - -end |
