diff options
Diffstat (limited to 'lib/stif/codif_line_synchronization.rb')
| -rw-r--r-- | lib/stif/codif_line_synchronization.rb | 102 | 
1 files changed, 48 insertions, 54 deletions
| diff --git a/lib/stif/codif_line_synchronization.rb b/lib/stif/codif_line_synchronization.rb index fee785766..c3f0d81fa 100644 --- a/lib/stif/codif_line_synchronization.rb +++ b/lib/stif/codif_line_synchronization.rb @@ -3,60 +3,54 @@ module Stif      class << self        def synchronize          start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) -        begin -          # Fetch Codifline data -          client = Codifligne::API.new -          operators       = client.operators -          lines           = client.lines -          networks        = client.networks -          groups_of_lines = client.groups_of_lines - -          Rails.logger.info "Codifligne:sync - Codifligne request processed in #{elapsed_time_since start_time} seconds" - -          # Create or update Companies -          stime = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) -          operators.map       { |o| create_or_update_company(o) } -          log_create_or_update "Companies", operators.count, stime - -          # Create or update Lines -          stime = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) -          lines.map           { |l| create_or_update_line(l) } -          log_create_or_update "Lines", lines.count, stime - -          # Create or update Networks -          stime = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) -          networks.map        { |n| create_or_update_network(n) } -          log_create_or_update "Networks", networks.count, stime - -          # Create or update Group of lines -          stime = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) -          groups_of_lines.map { |g| create_or_update_group_of_lines(g) } -          log_create_or_update "Group of lines", groups_of_lines.count, stime - -          # Delete deprecated Group of lines -          deleted_gr = delete_deprecated(groups_of_lines, Chouette::GroupOfLine) -          log_deleted "Group of lines", deleted_gr unless deleted_gr == 0 - -          # Delete deprecated Networks -          deleted_ne = delete_deprecated(networks, Chouette::Network) -          log_deleted "Networks", deleted_ne unless deleted_ne == 0 - -          # Delete deprecated Lines -          deleted_li = delete_deprecated_lines(lines) -          log_deleted "Lines", deleted_li unless deleted_li == 0 - -          # Delete deprecated Operators -          deleted_op = delete_deprecated(operators, Chouette::Company) -          log_deleted "Operators", deleted_op unless deleted_op == 0 - -          # Building log message -          total_codifligne_elements = operators.count + lines.count + networks.count + groups_of_lines.count -          total_deleted = deleted_op + deleted_li + deleted_ne + deleted_gr -          total_time = elapsed_time_since start_time -        rescue Exception => e -          total_time = elapsed_time_since start_time -          Rails.logger.error "Codifligne:sync - Error: #{e}, ended after #{total_time} seconds" -        end +        # Fetch Codifline data +        client = Codifligne::API.new +        operators       = client.operators +        lines           = client.lines +        networks        = client.networks +        groups_of_lines = client.groups_of_lines + +        Rails.logger.info "Codifligne:sync - Codifligne request processed in #{elapsed_time_since start_time} seconds" + +        # Create or update Companies +        stime = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) +        operators.map       { |o| create_or_update_company(o) } +        log_create_or_update "Companies", operators.count, stime + +        # Create or update Lines +        stime = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) +        lines.map           { |l| create_or_update_line(l) } +        log_create_or_update "Lines", lines.count, stime + +        # Create or update Networks +        stime = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) +        networks.map        { |n| create_or_update_network(n) } +        log_create_or_update "Networks", networks.count, stime + +        # Create or update Group of lines +        stime = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) +        groups_of_lines.map { |g| create_or_update_group_of_lines(g) } +        log_create_or_update "Group of lines", groups_of_lines.count, stime + +        # Delete deprecated Group of lines +        deleted_gr = delete_deprecated(groups_of_lines, Chouette::GroupOfLine) +        log_deleted "Group of lines", deleted_gr unless deleted_gr == 0 + +        # Delete deprecated Networks +        deleted_ne = delete_deprecated(networks, Chouette::Network) +        log_deleted "Networks", deleted_ne unless deleted_ne == 0 + +        # Delete deprecated Lines +        deleted_li = delete_deprecated_lines(lines) +        log_deleted "Lines", deleted_li unless deleted_li == 0 + +        # Delete deprecated Operators +        deleted_op = delete_deprecated(operators, Chouette::Company) +        log_deleted "Operators", deleted_op unless deleted_op == 0 +        { +          imported: operators.count + lines.count + networks.count + groups_of_lines.count, +          deleted: deleted_op + deleted_li + deleted_ne + deleted_gr +        }        end        def create_or_update_company(api_operator) | 
