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 | 
