diff options
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/concerns/iev_interfaces/task.rb | 21 | ||||
| -rw-r--r-- | app/models/export/base.rb | 46 | ||||
| -rw-r--r-- | app/models/export/netex.rb | 17 | ||||
| -rw-r--r-- | app/models/export/workbench.rb | 2 | ||||
| -rw-r--r-- | app/models/import/netex.rb | 26 |
5 files changed, 91 insertions, 21 deletions
diff --git a/app/models/concerns/iev_interfaces/task.rb b/app/models/concerns/iev_interfaces/task.rb index c84c588b6..f60c16750 100644 --- a/app/models/concerns/iev_interfaces/task.rb +++ b/app/models/concerns/iev_interfaces/task.rb @@ -83,10 +83,29 @@ module IevInterfaces::Task def child_change return if self.class.finished_statuses.include?(status) - update_status end + def call_iev_callback + return if self.class.finished_statuses.include?(status) + threaded_call_boiv_iev + end + + private + + def threaded_call_boiv_iev + Thread.new(&method(:call_boiv_iev)) + end + + def call_boiv_iev + Rails.logger.error("Begin IEV call for import") + Net::HTTP.get iev_callback_url + Rails.logger.error("End IEV call for import") + rescue Exception => e + logger.error "IEV server error : #{e.message}" + logger.error e.backtrace.inspect + end + private def initialize_fields end diff --git a/app/models/export/base.rb b/app/models/export/base.rb index 844c66d82..350edd215 100644 --- a/app/models/export/base.rb +++ b/app/models/export/base.rb @@ -1,6 +1,8 @@ class Export::Base < ActiveRecord::Base self.table_name = "exports" + validates :type, presence: true + def self.messages_class_name "Export::Message" end @@ -9,12 +11,56 @@ class Export::Base < ActiveRecord::Base "Export::Resource" end + def self.human_name + self.name.demodulize.humanize + end + + if Rails.env.development? + def self.force_load_descendants + path = Rails.root.join 'app/models/export' + Dir.chdir path do + Dir['**/*.rb'].each do |src| + next if src =~ /^base/ + klass_name = "Export::#{src[0..-4].classify}" + Rails.logger.info "Loading #{klass_name}" + begin + klass_name.constantize + rescue => e + Rails.logger.info "Failed: #{e.message}" + nil + end + end + end + end + end + + def self.option name, opts + store_accessor :options, name + if !!opts[:required] + validates name, presence: true + end + @options ||= {} + @options[name] = opts + end + + def self.options + @options + end + include IevInterfaces::Task def self.model_name ActiveModel::Name.new Export::Base, Export::Base, "Export" end + def self.user_visible_descendants + descendants.select &:user_visible? + end + + def self.user_visible? + true + end + private def initialize_fields diff --git a/app/models/export/netex.rb b/app/models/export/netex.rb index 858f09549..a5bdb63d2 100644 --- a/app/models/export/netex.rb +++ b/app/models/export/netex.rb @@ -1,2 +1,19 @@ class Export::Netex < Export::Base + after_commit :call_iev_callback, on: :create + + private + + def iev_callback_url + URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/exporter/new?id=#{id}") + end + + def self.user_visible? + false + end + + def destroy_non_ready_referential + if referential && !referential.ready + referential.destroy + end + end end diff --git a/app/models/export/workbench.rb b/app/models/export/workbench.rb index a4b14cf55..9ec15f22f 100644 --- a/app/models/export/workbench.rb +++ b/app/models/export/workbench.rb @@ -1,6 +1,8 @@ class Export::Workbench < Export::Base after_commit :launch_worker, :on => :create + option :timelapse, required: true, type: :integer, default_value: 90 + def launch_worker # WorkbenchImportWorker.perform_async(id) end diff --git a/app/models/import/netex.rb b/app/models/import/netex.rb index a4bf0920d..2b0982229 100644 --- a/app/models/import/netex.rb +++ b/app/models/import/netex.rb @@ -2,37 +2,23 @@ require 'net/http' class Import::Netex < Import::Base before_destroy :destroy_non_ready_referential - after_commit :launch_java_import, on: :create + after_commit :call_iev_callback, on: :create + before_save def abort_unless_referential self.status = 'aborted' unless referential end validates_presence_of :parent - def launch_java_import - return if self.class.finished_statuses.include?(status) - threaded_call_boiv_iev - end - private + def iev_callback_url + URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}") + end + def destroy_non_ready_referential if referential && !referential.ready referential.destroy end end - - def threaded_call_boiv_iev - Thread.new(&method(:call_boiv_iev)) - end - - def call_boiv_iev - Rails.logger.error("Begin IEV call for import") - Net::HTTP.get(URI("#{Rails.configuration.iev_url}/boiv_iev/referentials/importer/new?id=#{id}")) - Rails.logger.error("End IEV call for import") - rescue Exception => e - logger.error "IEV server error : #{e.message}" - logger.error e.backtrace.inspect - end - end |
