1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #!/usr/bin/python2.5 # Copyright (C) 2010 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. class GtfsFactoryUser(object): """Base class for objects that must store a GtfsFactory in order to be able to instantiate Gtfs classes. If a non-default GtfsFactory is to be used, it must be set explicitly.""" _gtfs_factory = None def GetGtfsFactory(self): """Return the object's GTFS Factory. Returns: The GTFS Factory that was set for this object. If none was explicitly set, it first sets the object's factory to transitfeed's GtfsFactory and returns it""" if self._gtfs_factory is None: #TODO(anog): We really need to create a dependency graph and clean things # up, as the comment in __init__.py says. # Not having GenericGTFSObject as a leaf (with no other # imports) creates all sorts of circular import problems. # This is why the import is here and not at the top level. # When this runs, gtfsfactory should have already been loaded # by other modules, avoiding the circular imports. import gtfsfactory self._gtfs_factory = gtfsfactory.GetGtfsFactory() return self._gtfs_factory def SetGtfsFactory(self, factory): self._gtfs_factory = factory |