Upgrade origin-src to google transit feed 1.2.6
[bus.git] / origin-src / transitfeed-1.2.6 / transitfeed / farerule.py
blob:a/origin-src/transitfeed-1.2.6/transitfeed/farerule.py -> blob:b/origin-src/transitfeed-1.2.6/transitfeed/farerule.py
  #!/usr/bin/python2.5
   
  # Copyright (C) 2007 Google Inc.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  # http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
   
  from problems import default_problem_reporter
  from gtfsobjectbase import GtfsObjectBase
   
  class FareRule(GtfsObjectBase):
  """This class represents a rule that determines which itineraries a
  fare rule applies to."""
  _REQUIRED_FIELD_NAMES = ['fare_id']
  _FIELD_NAMES = _REQUIRED_FIELD_NAMES + ['route_id',
  'origin_id',
  'destination_id',
  'contains_id']
  _TABLE_NAME = "fare_rules"
   
  def __init__(self, fare_id=None, route_id=None,
  origin_id=None, destination_id=None, contains_id=None,
  field_dict=None):
  self._schedule = None
  (self.fare_id, self.route_id, self.origin_id, self.destination_id,
  self.contains_id) = \
  (fare_id, route_id, origin_id, destination_id, contains_id)
  if field_dict:
  if isinstance(field_dict, self.GetGtfsFactory().FareRule):
  # Special case so that we don't need to re-parse the attributes to
  # native types iteritems returns all attributes that don't start with _
  for k, v in field_dict.iteritems():
  self.__dict__[k] = v
  else:
  self.__dict__.update(field_dict)
   
  # canonicalize non-content values as None
  if not self.route_id:
  self.route_id = None
  if not self.origin_id:
  self.origin_id = None
  if not self.destination_id:
  self.destination_id = None
  if not self.contains_id:
  self.contains_id = None
   
  def GetFieldValuesTuple(self):
  return [getattr(self, fn) for fn in self._FIELD_NAMES]
   
  def __getitem__(self, name):
  return getattr(self, name)
   
  def __eq__(self, other):
  if not other:
  return False
   
  if id(self) == id(other):
  return True
   
  return self.GetFieldValuesTuple() == other.GetFieldValuesTuple()
   
  def __ne__(self, other):
  return not self.__eq__(other)
   
  def AddToSchedule(self, schedule, problems):
  self._schedule = schedule
  schedule.AddFareRuleObject(self, problems)
   
  def ValidateBeforeAdd(self, problems):
  return True
   
  def ValidateAfterAdd(self, problems):
  return