[Zope-Checkins] CVS: Zope/lib/python/Products/PluginIndexes/PathIndex - PathIndex.py:1.9

Andreas Jung andreas@zope.com
Fri, 12 Oct 2001 16:02:16 -0400


Update of /cvs-repository/Zope/lib/python/Products/PluginIndexes/PathIndex
In directory cvs.zope.org:/tmp/cvs-serv7704/lib/python/Products/PluginIndexes/PathIndex

Modified Files:
	PathIndex.py 
Log Message:
- added getEntryForObject()
- internal inverse index reworked


=== Zope/lib/python/Products/PluginIndexes/PathIndex/PathIndex.py 1.8 => 1.9 ===
 import re,warnings
 
+_marker = []
+
 
 class PathIndex(PluggableIndex.PluggableIndex, Persistent,
     Implicit, SimpleItem):
@@ -205,18 +207,23 @@
         for i in range(len(comps)):
             self.insertEntry( comps[i],documentId,i)
 
-        return 1
+        self._unindex[documentId] = path
 
+        return 1
 
-    def unindex_object(self,id):
+    def unindex_object(self,documentId):
         """ hook for (Z)Catalog """
 
-        if not self._unindex.has_key(id):
-            return 
+        if not self._unindex.has_key(documentId):
+            return
 
-        for comp,level in self._unindex[id]:
+        path = self._unindex[documentId]
+        comps = path.split('/')
 
-            self._index[comp][level].remove(id)
+        for level in range(len(comps[1:])-1):
+            comp = comps[level+1]
+    
+            self._index[comp][level].remove(documentId)
 
             if len(self._index[comp][level])==0:
                 del self._index[comp][level]
@@ -224,7 +231,10 @@
             if len(self._index[comp])==0:
                 del self._index[comp]
 
-        del self._unindex[id]
+        del self._unindex[documentId]
+
+
+
 
 
     def printIndex(self):
@@ -395,6 +405,15 @@
         """ needed to be consistent with the interface """
 
         return self._index.keys()
+
+    def getEntryForObject(self,documentId,default=_marker):
+        """ Takes a document ID and returns all the information we have
+        on that specific object. """
+
+        try:        
+            return self._unindex[documentId]
+        except:
+            return None
         
 
     index_html = DTMLFile('dtml/index', globals())