Upgrade origin-src to google transit feed 1.2.6
[bus.git] / origin-src / transitfeed-1.2.6 / transitfeed / gtfsfactoryuser.py
blob:a/origin-src/transitfeed-1.2.6/transitfeed/gtfsfactoryuser.py -> blob:b/origin-src/transitfeed-1.2.6/transitfeed/gtfsfactoryuser.py
--- a/origin-src/transitfeed-1.2.6/transitfeed/gtfsfactoryuser.py
+++ b/origin-src/transitfeed-1.2.6/transitfeed/gtfsfactoryuser.py
@@ -1,1 +1,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
+