diff options
| author | Zog | 2018-03-06 10:16:07 +0100 | 
|---|---|---|
| committer | Zog | 2018-03-06 10:17:44 +0100 | 
| commit | facce065c8cf455ab6e1fe44c6d9394b4f2aaa42 (patch) | |
| tree | 27b9b0a4d8ca8920c69f17e230e87ea14000472f /lib | |
| parent | cfdd12aa6b46331435bc62209c51cc14f470bd38 (diff) | |
| download | chouette-core-facce065c8cf455ab6e1fe44c6d9394b4f2aaa42.tar.bz2 | |
Refs #6068; Add aggregated output for multiple interfaces
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/tasks/exports.rake | 19 | ||||
| -rw-r--r-- | lib/tasks/helpers/simple_interfaces.rb | 19 | 
2 files changed, 11 insertions, 27 deletions
| diff --git a/lib/tasks/exports.rake b/lib/tasks/exports.rake index 547388b35..845d581d3 100644 --- a/lib/tasks/exports.rake +++ b/lib/tasks/exports.rake @@ -51,6 +51,9 @@ namespace :export do      if journeys.count == 0        puts "No maching journeys were found".red      else +      exports_group = SimpleInterfacesGroup.new "Export Complet \"#{referential.name}\" du #{Time.now.to_date} au #{args[:timelapse].to_i.days.from_now.to_date}" +      exports_group.shared_options = {verbose: true} +        exporter = SimpleJsonExporter.create configuration_name: "#{args[:configuration_name]}_companies", filepath: "#{args[:output_dir]}/#{args[:configuration_name]}_companies.json"        ids = journeys.pluck :company_id        ids += journeys.joins(route: :line).pluck :"lines.company_id" @@ -59,39 +62,37 @@ namespace :export do          config.collection = Chouette::Company.where(id: ids.uniq).order('name')        end -      SimpleInterfacesHelper.run_interface_controlling_interruption exporter, :export, args -      break if exporter.status == :error +      exports_group.add_interface exporter, "Services Types", :export        exporter = SimpleJsonExporter.create configuration_name: "#{args[:configuration_name]}_schedules", filepath: "#{args[:output_dir]}/#{args[:configuration_name]}_schedules.json"        exporter.configure do |config|          config.collection = journeys        end -      SimpleInterfacesHelper.run_interface_controlling_interruption exporter, :export, args -      break if exporter.status == :error +      exports_group.add_interface exporter, "Schedules", :export        exporter = SimpleJsonExporter.create configuration_name: "#{args[:configuration_name]}_routes", filepath: "#{args[:output_dir]}/#{args[:configuration_name]}_routes.json"        exporter.configure do |config|          config.collection = Chouette::JourneyPattern.where(id: journeys.pluck(:journey_pattern_id).uniq)        end -      SimpleInterfacesHelper.run_interface_controlling_interruption exporter, :export, args -      break if exporter.status == :error +      exports_group.add_interface exporter, "Routes", :export        exporter = SimpleJsonExporter.create configuration_name: "#{args[:configuration_name]}_stops", filepath: "#{args[:output_dir]}/#{args[:configuration_name]}_stops.json"        exporter.configure do |config|          config.collection = Chouette::StopArea.where(id: journeys.joins(:stop_points).pluck(:"stop_points.stop_area_id").uniq).order('parent_id ASC NULLS FIRST')        end -      SimpleInterfacesHelper.run_interface_controlling_interruption exporter, :export, args -      break if exporter.status == :error +      exports_group.add_interface exporter, "Stops", :export        exporter = SimpleJsonExporter.create configuration_name: "#{args[:configuration_name]}_journeys", filepath: "#{args[:output_dir]}/#{args[:configuration_name]}_journeys.json"        exporter.configure do |config|          config.collection = journeys        end -      SimpleInterfacesHelper.run_interface_controlling_interruption exporter, :export, args +      exports_group.add_interface exporter, "Services", :export + +      exports_group.run      end    end  end diff --git a/lib/tasks/helpers/simple_interfaces.rb b/lib/tasks/helpers/simple_interfaces.rb index 5b593be43..61dd38399 100644 --- a/lib/tasks/helpers/simple_interfaces.rb +++ b/lib/tasks/helpers/simple_interfaces.rb @@ -1,28 +1,11 @@  module SimpleInterfacesHelper -  def self.interface_output_to_csv interface, output_dir -    FileUtils.mkdir_p output_dir -    filepath =  File.join output_dir, + "#{interface.configuration_name}_#{Time.now.strftime "%y%m%d%H%M"}_out.csv" -    cols = %w(line kind event message error) -    if interface.reload.journal.size > 0 && interface.journal.first["row"].present? -      keys = interface.journal.first["row"].map(&:first) -      CSV.open(filepath, "w") do |csv| -        csv << cols + keys -        interface.journal.each do |j| -          csv << cols.map{|c| j[c]} + j["row"].map(&:last) -        end -      end -      puts "Task Output written in #{filepath}" -    end -  end -    def self.run_interface_controlling_interruption interface, method, args      begin        interface.send(method, verbose: true)      rescue Interrupt +      interface.write_output_to_csv        raise      ensure -      puts "\n\e[33m***\e[0m Done, status: " + (interface.status == "success" ? "\e[32m" : "\e[31m" ) + (interface.status || "") + "\e[0m" -      interface_output_to_csv interface, args[:logs_output_dir]      end    end  end | 
