Class: SportDb::RaceReader

Inherits:
Object
  • Object
show all
Includes:
LogUtils::Logging, FixtureHelpers, Model, TextUtils::ValueHelper
Defined in:
lib/sportdb/readers/race.rb

Constant Summary

Constants included from Model

Model::City, Model::Continent, Model::Country, Model::Prop, Model::Region

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from FixtureHelpers

#calculate_year, #cut_off_end_of_line_comment!, #find_date!, #find_game_pos!, #find_ground!, #find_group_title_and_pos!, #find_leading_pos!, #find_person!, #find_record_comment!, #find_record_laps!, #find_record_leading_state!, #find_record_timeline!, #find_round_def_title!, #find_round_header_title!, #find_round_header_title2!, #find_round_pos!, #find_scores!, #find_team!, #find_team1!, #find_team2!, #find_teams!, #find_track!, #is_group?, #is_group_def?, #is_knockout_round?, #is_postponed?, #is_round?, #is_round_def?, #map_ground!, #map_person!, #map_team!, #map_teams!, #map_track!, #match_teams!, #match_track!

Constructor Details

#initialize(include_path, opts = {}) ⇒ RaceReader

Returns a new instance of RaceReader.



22
23
24
# File 'lib/sportdb/readers/race.rb', line 22

def initialize( include_path, opts = {} )
  @include_path = include_path
end

Instance Attribute Details

#include_pathObject (readonly)

Returns the value of attribute include_path.



20
21
22
# File 'lib/sportdb/readers/race.rb', line 20

def include_path
  @include_path
end

Instance Method Details

#read(name, more_attribs = {}) ⇒ Object

fix: use read_fixtures( event_key, name )

move EventReader out of read - why?? why not??



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/sportdb/readers/race.rb', line 32

def read( name, more_attribs={} )

  # must have .yml file with same name for event definition 
  evreader = EventReader.new( include_path )
  evreader.read( name )

  @event = evreader.event

  logger.info "  event: #{@event.key} >>#{@event.full_title}<<"

  path = "#{include_path}/#{name}.txt"

  logger.info "parsing data '#{name}' (#{path})..."
  
  ### SportDb.lang.lang = LangChecker.new.analyze( name, include_path )

  ## for now: use all tracks (later filter/scope by event)
  @known_tracks = Track.known_tracks_table

  reader = LineReader.new( path )
      
  read_races_worker( reader )

  Prop.create_from_fixture!( name, path )
end

#read_races_worker(reader) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/sportdb/readers/race.rb', line 59

def read_races_worker( reader )

  reader.each_line do |line|
    logger.debug "  line: >#{line}<"

    cut_off_end_of_line_comment!( line )

    pos = find_leading_pos!( line )

    map_track!( line )
    track_key = find_track!( line )
    track = Track.find_by_key!( track_key )

    date      = find_date!( line )

    logger.debug "  line2: >#{line}<"

    ### check if games exists
    race = Race.find_by_event_id_and_track_id( @event.id, track.id )

    if race.present?
      logger.debug "update race #{race.id}:"
    else
      logger.debug "create race:"
      race = Race.new
    end
        
    race_attribs = {
      pos:      pos,
      track_id: track.id,
      start_at:  date,
      event_id:  @event.id
    }

    logger.debug race_attribs.to_json

    race.update_attributes!( race_attribs )
  end # lines.each

end