Class: SportDb::ZipReader

Inherits:
ReaderBase show all
Defined in:
lib/sportdb/reader_zip.rb

Constant Summary

Constants included from Model

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

Instance Method Summary collapse

Methods inherited from ReaderBase

#load, #load_setup

Methods included from Matcher

#match_clubs_for_country, #match_leagues_for_country, #match_players_for_country, #match_stadiums_for_country, #match_teams_for_country

Constructor Details

#initialize(name, include_path, opts = {}) ⇒ ZipReader

Returns a new instance of ZipReader.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/sportdb/reader_zip.rb', line 8

def initialize( name, include_path, opts = {} )

  ## todo/fix: make include_path an opts (included in opts?) - why? why not??

  path = "#{include_path}/#{name}.zip"
  ## todo: check if zip exists

  @zip_file = Zip::File.open( path )   ## NOTE: do NOT create if file is missing; let it crash
  
  ### allow prefix (path) in name
  ###    e.g. assume all files relative to setup manifest
  ## e.g. at-austria-master/setups/all.txt or
  ##      be-belgium-master/setups/all.txt
  ##  for
  ##    setups/all.txt
  ###
  ##  will get (re)set w/ fixture/setup reader
  ##
  ## todo/fix: change/rename to @relative_path ?? - why? why not? 
  @zip_prefix = ''
end

Instance Method Details

#closeObject



30
31
32
33
# File 'lib/sportdb/reader_zip.rb', line 30

def close
  ## todo/check: add a close method - why? why not ???
  @zip_file.close
end

#create_assoc_reader(name) ⇒ Object



85
86
87
88
89
90
# File 'lib/sportdb/reader_zip.rb', line 85

def create_assoc_reader( name )
  path = name_to_zip_entry_path( name )

  logger.info "parsing data in zip (assoc) '#{name}' (#{path})..."
  AssocReader.from_zip( @zip_file, path )
end

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



64
65
66
67
68
69
# File 'lib/sportdb/reader_zip.rb', line 64

def create_club_squad_reader( name, more_attribs={} )
  path = name_to_zip_entry_path( name )

  logger.info "parsing data in zip (club squad) '#{name}' (#{path})..."
  ClubSquadReader.from_zip( @zip_file, path, more_attribs )
end

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



113
114
115
116
117
118
# File 'lib/sportdb/reader_zip.rb', line 113

def create_event_reader( name, more_attribs={} )
  path = name_to_zip_entry_path( name, '.yml' )   ## NOTE: use .yml extension

  logger.info "parsing data in zip (event) '#{name}' (#{path})..."
  EventReader.from_zip( @zip_file, path, more_attribs )
end

#create_fixture_reader(name) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/sportdb/reader_zip.rb', line 36

def create_fixture_reader( name )
  ## e.g. pass in =>  setups/all  or setups/test etc.  e.g. w/o .txt extension
  query = "**/#{name}.txt"

  ## note: returns an array of Zip::Entry
  candidates = @zip_file.glob( query )
  pp candidates

  ## use first candidates entry as match
  ## todo/fix: issue warning if more than one entries/matches!!

  ## get fullpath e.g. at-austria-master/setups/all.txt
  path = candidates[0].name
  logger.debug "  zip entry path >>#{path}<<"

  ## cut-off at-austria-master/    NOTE: includes trailing slash (if present)
  ## logger.debug "  path.size #{path.size} >>#{path}<<"
  ## logger.debug "  name.size #{name.size+4} >>#{name}<<"

  ## note: add +4 for extension (.txt)
  @zip_prefix = path[ 0...(path.size-(name.size+4)) ]
  logger.debug "  zip entry prefix >>#{@zip_prefix}<<"

  logger.info "parsing data in zip '#{name}' (#{path})..."

  FixtureReader.from_zip( @zip_file, path )
end

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



120
121
122
123
124
125
126
# File 'lib/sportdb/reader_zip.rb', line 120

def create_game_reader( name, more_attribs={} )
  ## NOTE: pass in .yml as path (that is, event config!!!!)
  path = name_to_zip_entry_path( name, '.yml' )     ## NOTE: use .yml extension
  
  logger.info "parsing data in zip (fixture) '#{name}' (#{path})..."
  GameReader.from_zip( @zip_file, path, more_attribs )
end

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



92
93
94
95
96
97
# File 'lib/sportdb/reader_zip.rb', line 92

def create_ground_reader( name, more_attribs={} )
  path = name_to_zip_entry_path( name )

  logger.info "parsing data in zip (ground) '#{name}' (#{path})..."
  GroundReader.from_zip( @zip_file, path, more_attribs )
end

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



99
100
101
102
103
104
# File 'lib/sportdb/reader_zip.rb', line 99

def create_league_reader( name, more_attribs={} )
  path = name_to_zip_entry_path( name )

  logger.info "parsing data in zip (league) '#{name}' (#{path})..."
  LeagueReader.from_zip( @zip_file, path, more_attribs )
end

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



71
72
73
74
75
76
# File 'lib/sportdb/reader_zip.rb', line 71

def create_national_team_squad_reader( name, more_attribs={} )
  path = name_to_zip_entry_path( name )

  logger.info "parsing data in zip (national team squad) '#{name}' (#{path})..."
  NationalTeamSquadReader.from_zip( @zip_file, path, more_attribs )
end

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



129
130
131
132
133
# File 'lib/sportdb/reader_zip.rb', line 129

def create_person_reader( name, more_attribs={} )
  ## fix-fix-fix: change to new format e.g. from_file, from_zip etc!!!
  ## reader = PersonDb::PersonReader.new( include_path )
  # reader.read( name, country_id: country.id )
end

#create_season_reader(name) ⇒ Object



78
79
80
81
82
83
# File 'lib/sportdb/reader_zip.rb', line 78

def create_season_reader( name )
  path = name_to_zip_entry_path( name )

  logger.info "parsing data in zip (season) '#{name}' (#{path})..."
  SeasonReader.from_zip( @zip_file, path )
end

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



106
107
108
109
110
111
# File 'lib/sportdb/reader_zip.rb', line 106

def create_team_reader( name, more_attribs={} )
  path = name_to_zip_entry_path( name )

  logger.info "parsing data in zip (team) '#{name}' (#{path})..."
  TeamReader.from_zip( @zip_file, path, more_attribs )
end