From facce065c8cf455ab6e1fe44c6d9394b4f2aaa42 Mon Sep 17 00:00:00 2001 From: Zog Date: Tue, 6 Mar 2018 10:16:07 +0100 Subject: Refs #6068; Add aggregated output for multiple interfaces --- lib/tasks/exports.rake | 19 ++++++++++--------- lib/tasks/helpers/simple_interfaces.rb | 19 +------------------ 2 files changed, 11 insertions(+), 27 deletions(-) (limited to 'lib/tasks') 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 -- cgit v1.2.3