class TokyoMetro::Rake::Update::ConnectingRailwayLine::NakanoSakaue

Public Class Methods

new( title , number_of_connecting_railway_line_infos_should_be: nil , to_update: false ) click to toggle source
# File lib/tokyo_metro/rake/update/connecting_railway_line/nakano_sakaue.rb, line 3
def initialize( title , number_of_connecting_railway_line_infos_should_be: nil , to_update: false )
  puts "* #{ title }"
  puts ""
  @valid_number_of_connecting_railway_line_infos = number_of_connecting_railway_line_infos_should_be
  unless @valid_number_of_connecting_railway_line_infos.integer?
    raise "valid number of connecting railway line infos should be integer."
  end
  @to_update = to_update

  @station_infos = {
    main: ::Station::Info.find_by( same_as: "odpt.Station:TokyoMetro.Marunouchi.NakanoSakaue" ) ,
    branch: ::Station::Info.find_by( same_as: "odpt.Station:TokyoMetro.MarunouchiBranch.NakanoSakaue" )
  }
  @railway_lines = {
    main: ::RailwayLine.find_by( same_as: "odpt.Railway:TokyoMetro.Marunouchi" ) ,
    branch: ::RailwayLine.find_by( same_as: "odpt.Railway:TokyoMetro.MarunouchiBranch" )
  }
  @oedo_line = ::RailwayLine.find_by( same_as: "odpt.Railway:Toei.Oedo" )
end
update_connecting_railway_line( title , number_of_connecting_railway_line_infos_should_be: nil , to_update: false ) click to toggle source
# File lib/tokyo_metro/rake/update/connecting_railway_line/nakano_sakaue.rb, line 91
def self.update_connecting_railway_line( title , number_of_connecting_railway_line_infos_should_be: nil , to_update: false )
  valid_number_of_connecting_railway_line_infos = number_of_connecting_railway_line_infos_should_be
  self.new( title , number_of_connecting_railway_line_infos_should_be: valid_number_of_connecting_railway_line_infos , to_update: to_update ).update_connecting_railway_line
end

Public Instance Methods

create_connecting_railway_line_info() click to toggle source
# File lib/tokyo_metro/rake/update/connecting_railway_line/nakano_sakaue.rb, line 58
def create_connecting_railway_line_info
  fundamental_hashes_for_finding_connecting_railway_line_infos.each do |h|
    puts "Create new connecting railway line info"

    h_for_finding = h.merge({
      index_in_station: 1 ,
      connecting_to_another_station: false ,
      cleared: false ,
      not_recommended: false ,
      note_id: nil ,
      hidden_on_railway_line_page: true ,
      start_on: nil ,
      end_on: nil
    })

    puts " " *4 + h_for_finding.to_s
    info_already_created = ::ConnectingRailwayLine::Info.find_by( h_for_finding )
    unless info_already_created.present?
      h_for_creating = h_for_finding.merge({
        id: ::ConnectingRailwayLine::Info.all.pluck( :id ).max + 1
      })
      puts " " *4 + "Create new info.\n#{ h_for_creating.to_s }"
      ::ConnectingRailwayLine::Info.create( h_for_creating )
      puts " " *4 + "Complete - create new info"
    else
      puts " " *4 + "You need not to create new info.\n#{ h_for_finding.to_s }"
    end
    puts ""

  end

end
update_connecting_railway_line() click to toggle source
# File lib/tokyo_metro/rake/update/connecting_railway_line/nakano_sakaue.rb, line 23
def update_connecting_railway_line
  check_railway_lines

  @station_infos.each do | k , station_info |
    unless station_info.present?
      raise "Station info on #{k} line is not present."
    end
    unless station_info.connecting_railway_line_infos.length == @valid_number_of_connecting_railway_line_infos
      l = station_info.connecting_railway_line_infos.length
      v = @valid_number_of_connecting_railway_line_infos
      raise "The number of connecting railway line infos of station on #{k} line is not valid. (Now: #{l} / Valid: #{v})"
    end

    c_oedo = station_info.connecting_railway_line_infos.find_by( railway_line_id: @oedo_line.id )

    unless c_oedo.present?
      raise "Station info on #{k} line does not have connecting railway line info to Toei Oedo Line."
    end

    puts "Update connecting railway line info to Oedo Line: #{k}"

    if @to_update
      unless c_oedo.index_in_station == 2
        c_oedo.update( index_in_station: 2 )
        puts " " * 4 + "Complete - update"
      else
        puts " " * 4 + "You need not to update"
      end
    end
    puts ""

  end

end

Private Instance Methods

check_railway_lines() click to toggle source
# File lib/tokyo_metro/rake/update/connecting_railway_line/nakano_sakaue.rb, line 98
def check_railway_lines
  @railway_lines.each do | k , railway_line |
    raise "Error: #{ k }" unless railway_line.present?
  end
end
fundamental_hashes_for_finding_connecting_railway_line_infos() click to toggle source
# File lib/tokyo_metro/rake/update/connecting_railway_line/nakano_sakaue.rb, line 104
def fundamental_hashes_for_finding_connecting_railway_line_infos
  [
    { station_info_id: @station_infos[ :main ].id , railway_line_id: @railway_lines[ :branch ].id , connecting_station_info_id: @station_infos[ :branch ].id } ,
    { station_info_id: @station_infos[ :branch ].id , railway_line_id: @railway_lines[ :main ].id , connecting_station_info_id: @station_infos[ :main ].id }
  ]
end