class AdWords::LocationDb

Public Class Methods

new() click to toggle source
# File lib/adwords_location/location.rb, line 40
def initialize
  @location_records = {}
  @location_records_by_name = {}
  @location_records_by_canonical_name = {}

  records = Location.all 
  records.each do |r|  
    @location_records[r.criteria_id] = r
    @location_records_by_name[r.name] = r
    @location_records_by_canonical_name[r.canonical_name] = r
  end
  @location_records.freeze
  @location_records_by_name.freeze
  @location_records_by_canonical_name.freeze

  @city_2_dma = City2DMADb.new
end

Public Instance Methods

all_postal_code_records() click to toggle source
# File lib/adwords_location/location.rb, line 74
def all_postal_code_records
  @location_records.select do |id, record|
    record.us_postal_code?
  end
end
all_postal_codes() click to toggle source
# File lib/adwords_location/location.rb, line 80
def all_postal_codes
  @postal_code ||= get_call_postal_codes
end
criteria_ids() click to toggle source
# File lib/adwords_location/location.rb, line 58
def criteria_ids
  @location_records.keys
end
dmas_by_city(criteria_id) click to toggle source
# File lib/adwords_location/location.rb, line 94
def dmas_by_city(criteria_id)
  dmas = @city_2_dma.find_dmas_city_id criteria_id
  dmas.map do |dma|
    find_by_name dma.dma_region
  end
end
find(criteria_id) click to toggle source
# File lib/adwords_location/location.rb, line 62
def find(criteria_id)
  @location_records[criteria_id.to_i]
end
find_by_canonical_name(cname) click to toggle source
# File lib/adwords_location/location.rb, line 70
def find_by_canonical_name(cname)
  @location_records_by_canonical_name[cname]
end
find_by_name(name) click to toggle source
# File lib/adwords_location/location.rb, line 66
def find_by_name(name)
  @location_records_by_name[name]
end
path(criteria_id) click to toggle source
# File lib/adwords_location/location.rb, line 84
def path(criteria_id)
  path = []
  location = find criteria_id
  while location do
    path << location.criteria_id
    location = find location.parent_id
  end 
  path
end

Private Instance Methods

get_call_postal_codes() click to toggle source
# File lib/adwords_location/location.rb, line 103
def get_call_postal_codes
  codes = []
  @location_records.each do |id, r|
    codes << r.postal_code if r.us_postal_code?
  end
  codes
end