diff options
| -rw-r--r-- | app/exporters/chouette/hub/exporter.rb | 1 | ||||
| -rw-r--r-- | app/exporters/chouette/hub/itl_exporter.rb | 65 | ||||
| -rw-r--r-- | app/views/api/hub/itls.hub.erb | 1 | ||||
| -rw-r--r-- | config/locales/exports.yml | 2 | ||||
| -rw-r--r-- | config/routes.rb | 8 |
5 files changed, 74 insertions, 3 deletions
diff --git a/app/exporters/chouette/hub/exporter.rb b/app/exporters/chouette/hub/exporter.rb index 27ac4e7ee..110ad6b61 100644 --- a/app/exporters/chouette/hub/exporter.rb +++ b/app/exporters/chouette/hub/exporter.rb @@ -133,6 +133,7 @@ class Chouette::Hub::Exporter if journey_patterns_exportable? Chouette::Hub::RouteExporter.save(@routes, temp_dir, hub_export) + Chouette::Hub::ItlExporter.save(@routes, temp_dir, hub_export) Chouette::Hub::JourneyPatternExporter.save(@journey_patterns, temp_dir, hub_export) Chouette::Hub::DirectionExporter.save(@journey_patterns, temp_dir, hub_export) else diff --git a/app/exporters/chouette/hub/itl_exporter.rb b/app/exporters/chouette/hub/itl_exporter.rb new file mode 100644 index 000000000..8c281d965 --- /dev/null +++ b/app/exporters/chouette/hub/itl_exporter.rb @@ -0,0 +1,65 @@ +class Chouette::Hub::ItlExporter + include ERB::Util + attr_accessor :stop_point, :stop_area_id, :stop_area_code, :line_code, :sens, :order, :type, :identifier, :directory, :template + + def initialize(stop_point, sens, line, directory, index) + @stop_point = stop_point + @directory = directory + @template = File.open('app/views/api/hub/itls.hub.erb' ){ |f| f.read } + @line_code = line.objectid.sub(/(\w*\:\w*\:)(\w*)/, '\2') if line + @sens = sens == 'A' ? 1 : 2 + stop_area = stop_point.stop_area + if stop_area + @stop_area_code = stop_area.objectid.sub(/(\w*\:\w*\:)(\w*)/, '\2') + @stop_area_id = stop_area.registration_number + end + @order = stop_point.position + if stop_point.for_boarding == "forbidden" + @type = 1 + elsif stop_point.for_alighting == "forbidden" + @type = 2 + end + @identifier = index + end + + def render() + ERB.new(@template).result(binding) + end + + def hub_name + "/ITL.TXT" + end + + def self.save( routes, directory, hub_export) + count = 0 + routes.each do |route| + for_boarding_stops = route.stop_points.where( :for_boarding => [ "forbidden" , "normal"] ).order(:position) + if for_boarding_stops + for_boarding_stops.each do |stop_point| + count += 1 + self.new( stop_point, route.wayback, route.line, directory, count ).tap do |specific_exporter| + specific_exporter.save + end + end + end + for_alighting_stops = route.stop_points.where( :for_alighting => [ "forbidden" , "normal"] ).order(:position) + if for_alighting_stops + for_alighting_stops.each do |stop_point| + count += 1 + self.new( stop_point, route.wayback, route.line, directory, count ).tap do |specific_exporter| + specific_exporter.save + end + end + end + end + hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|ITL_COUNT", :arguments => {"0" => count}) + end + + def save + File.open(directory + hub_name , "a:Windows_1252") do |f| + f.write("ITL\u000D\u000A") if f.size == 0 + f.write(render) + end if stop_point.present? + end +end + diff --git a/app/views/api/hub/itls.hub.erb b/app/views/api/hub/itls.hub.erb new file mode 100644 index 000000000..8bf596185 --- /dev/null +++ b/app/views/api/hub/itls.hub.erb @@ -0,0 +1 @@ +<%= @line_code %>;<%= @sens %>;<%= @stop_area_code %>;<%= @stop_area_id %>;<%= @order %>;<%= @type %>;<%= @identifier %><%= "\u000D\u000A" %>
\ No newline at end of file diff --git a/config/locales/exports.yml b/config/locales/exports.yml index 1e01507ce..5cf816d3d 100644 --- a/config/locales/exports.yml +++ b/config/locales/exports.yml @@ -36,6 +36,7 @@ en: COMMUNE_COUNT: "City count : %{0}" TRANSPORT_MODE_COUNT: "Transport Mode count : %{0}" ROUTE_COUNT: "Route count : %{0}" + ITL_COUNT: "Boardings alightings constraints count : %{0}" JOURNEY_PATTERN_COUNT: "Journey pattern count : %{0}" QUAY_AND_BOARDING_POSITION_COUNT: "Quays and Boarding positions count : %{0}" COMMERCIAL_COUNT: "Commercial stop points count : %{0}" @@ -165,6 +166,7 @@ fr: COMMUNE_COUNT: "Nombre de communes : %{0}" TRANSPORT_MODE_COUNT: "Nombre de modes de transport : %{0}" ROUTE_COUNT: "Nombre de séquences d'arrêts exportées : %{0}" + ITL_COUNT: "Nombre de contraintes de montées / descentes : %{0}" QUAY_AND_BOARDING_POSITION_COUNT: "Nombre d'arrêts physiques exportés : %{0}" COMMERCIAL_COUNT: "Nombre d'arrêts commerciaux exportés : %{0}" STOP_PLACE_COUNT: "Nombres de pôles d'échange exportés : %{0}" diff --git a/config/routes.rb b/config/routes.rb index f8af87e5a..67eb757ae 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -72,14 +72,16 @@ ChouetteIhm::Application.routes.draw do collection do get :name_filter end - end - - resources :lines, :networks, :group_of_lines do resources :routes do member do get 'edit_boarding_alighting' put 'save_boarding_alighting' end + end + end + + resources :lines, :networks, :group_of_lines do + resources :routes do resources :journey_patterns do member do get 'new_vehicle_journey' |
