[Checkins] SVN: Products.ZCatalog/trunk/src/Products/PluginIndexes/DateRangeIndex/DateRangeIndex.py Factor out _insert_migrate method to reduce duplicated code in _insertForwardIndexEntry

Hanno Schlichting hannosch at hannosch.eu
Tue Jan 25 16:12:27 EST 2011


Log message for revision 119934:
  Factor out _insert_migrate method to reduce duplicated code in _insertForwardIndexEntry
  

Changed:
  U   Products.ZCatalog/trunk/src/Products/PluginIndexes/DateRangeIndex/DateRangeIndex.py

-=-
Modified: Products.ZCatalog/trunk/src/Products/PluginIndexes/DateRangeIndex/DateRangeIndex.py
===================================================================
--- Products.ZCatalog/trunk/src/Products/PluginIndexes/DateRangeIndex/DateRangeIndex.py	2011-01-25 21:05:35 UTC (rev 119933)
+++ Products.ZCatalog/trunk/src/Products/PluginIndexes/DateRangeIndex/DateRangeIndex.py	2011-01-25 21:12:27 UTC (rev 119934)
@@ -321,48 +321,28 @@
             return (difference(resultset, result),
                     (self._since_field, self._until_field))
 
+    def _insert_migrate(self, tree, key, value):
+        treeset = tree.get(key, None)
+        if treeset is None:
+            tree[key] = value
+        else:
+            if isinstance(treeset, (int, IISet)):
+                tree[key] = IITreeSet((treeset, value))
+            else:
+                treeset.insert(value)
+
     def _insertForwardIndexEntry(self, since, until, documentId):
+        """Insert 'documentId' into the appropriate set based on 'datum'.
         """
-            Insert 'documentId' into the appropriate set based on
-            'datum'.
-        """
         if since is None and until is None:
             self._always.insert(documentId)
         elif since is None:
-            set = self._until_only.get(until, None)
-            if set is None:
-                self._until_only[until] = documentId
-            else:
-                if isinstance(set, (int, IISet)):
-                    set = self._until_only[until] = IITreeSet((set, documentId))
-                else:
-                    set.insert(documentId)
+            self._insert_migrate(self._until_only, until, documentId)
         elif until is None:
-            set = self._since_only.get(since, None)
-            if set is None:
-                self._since_only[since] = documentId
-            else:
-                if isinstance(set, (int, IISet)):
-                    set = self._since_only[since] = IITreeSet((set, documentId))
-                else:
-                    set.insert(documentId)
+            self._insert_migrate(self._since_only, since, documentId)
         else:
-            set = self._since.get(since, None)
-            if set is None:
-                self._since[since] = documentId
-            else:
-                if isinstance(set, (int, IISet)):
-                    set = self._since[since] = IITreeSet((set, documentId))
-                else:
-                    set.insert(documentId)
-            set = self._until.get(until, None)
-            if set is None:
-                self._until[until] = documentId
-            else:
-                if isinstance(set, (int, IISet)):
-                    set = self._until[until] = IITreeSet((set, documentId))
-                else:
-                    set.insert(documentId)
+            self._insert_migrate(self._since, since, documentId)
+            self._insert_migrate(self._until, until, documentId)
 
     def _removeForwardIndexEntry(self, since, until, documentId):
         """



More information about the checkins mailing list