This class represents the station codes authority file. For the format of this file, see the specification.
It is a derived class: for the base class, see
Section 8, “class BaseStationSet: Base class for
station authority objects”.
# - - - - - c l a s s M a p s S t a t i o n S e t - - - - -
class MapsStationSet(BaseStationSet):
'''Represents the MAPS station codes authority file.
Exports:
AUTHORITY_FILE: [ name of the MAPS stations authority file ]
MapsStationSet():
[ if AUTHORITY_FILE names a readable, valid flat file
made from a station authority .dbf file ->
return a new BaseStationSet object representing
that file
else -> raise IOError ]
.readLine(scan):
[ scan is a Scan object ->
if the line in scan is not a valid station line ->
scan := scan advanced not beyond end of line
raise IOError
else if the line in scan contains a location code
not in self.locCodeMap ->
scan := scan advanced to end of line
self.locCodeMap +:= a new entry whose key is
that location code, uppercase, and whose
value is a new Location containing the
station from that line
else if the line in scan contains a location code
that is in self.locCodeMap ->
scan := scan advanced to end of line
corresponding value +:= the station from
that line ]
'''
This constant defines the name of the authority file.
AUTHORITY_FILE = "stations.txt"
These constants define the lengths of the fields in the
authority file; the “_L”
suffix connotes a field length. They are given in the
same order as the occurrence of the fields.
#--
# Field lengths in the authority file.
#--
REGION_L = 1 # Region code
STA_NO_L = 5 # Station number
LOC_CODE_L = 4 # Location code
STA_NAME_L = 30 # Station name
STA_CODE_L = 4 # Station code (alphabetic)
STATE_L = 2 # State code
This class has a class variable FIELD_LIST that
defines the format of the authority file.
The scanFieldList() utility function
handles scanning of a sequence of fixed-size fields;
see Section 6, “scanFieldList(): A utility routine
for flat-file scanning”.
FIELD_LIST = [
("region", REGION_L),
("station number", STA_NO_L),
("location code", LOC_CODE_L),
("station name", STA_NAME_L),
("station code", STA_CODE_L),
("state code", STATE_L) ]
The constructor supplies the name of the authority file
to the parent constructor; see Section 8.3, “BaseStationSet.__init__():
Constructor”.
# - - - M a p s S t a t i o n S e t . _ _ i n i t _ _ - - -
def __init__(self):
'''Constructor for MapsStationSet.
'''
BaseStationSet.__init__(self, self.AUTHORITY_FILE)