Title: [commits] (vajda) [11289] - moved version initialization of view to openView()
Revision
11289
Author
vajda
Date
2006-07-31 15:52:49 -0700 (Mon, 31 Jul 2006)

Log Message

- moved version initialization of view to openView()
- added support for --undo check to undo latest versions that fail check()
- fixed bugs in IndexContainer.purgeDocument()/undoDocument(), use of hit
- upgraded build to chandlerdb 0.6-35

Modified Paths

Diff

Modified: trunk/chandler/Makefile (11288 => 11289)

--- trunk/chandler/Makefile	2006-07-31 22:00:15 UTC (rev 11288)
+++ trunk/chandler/Makefile	2006-07-31 22:52:49 UTC (rev 11289)
@@ -66,7 +66,7 @@
 
 # these get installed into release or debug
 ARCHIVES=$(CHANDLERARCHIVES)/Launchers-$(SNAP)-0.8-$(BP)A.tar.gz \
-         $(CHANDLERARCHIVES)/chandlerdb-$(SNAP)-0.6-$(BP)34.tar.gz \
+         $(CHANDLERARCHIVES)/chandlerdb-$(SNAP)-0.6-$(BP)35.tar.gz \
          $(CHANDLERARCHIVES)/db-$(SNAP)-4.4.20-$(BP)5.tar.gz \
          $(CHANDLERARCHIVES)/python-$(SNAP)-2.4.3-$(BP)3.tar.gz \
          $(CHANDLERARCHIVES)/epydoc-$(SNAP)-2.1-$(BP)9.tar.gz \

Modified: trunk/chandler/application/Utility.py (11288 => 11289)

--- trunk/chandler/application/Utility.py	2006-07-31 22:00:15 UTC (rev 11288)
+++ trunk/chandler/application/Utility.py	2006-07-31 22:52:49 UTC (rev 11289)
@@ -430,11 +430,25 @@
             del kwds
             break
 
-    if options.undo and not repository.isNew():
-        toVersion = long(options.undo)
-        if toVersion < repository.store.getVersion():
-            repository.undo(toVersion)
+    if options.undo:
+        if options.undo == 'check':
+            view = repository.view
+            while view.itsVersion > 0:
+                schema.reset(view)
+                if view.check():
+                    break
 
+                repository.logger.info('Undoing version %d', view.itsVersion)
+                view.closeView()
+                repository.undo()
+                view.openView()
+        else:
+            version = repository.store.getVersion()
+            nVersions = long(options.undo)
+            toVersion = version - nVersions
+            if toVersion >= 0:
+                repository.undo(toVersion)
+
     view = repository.view
 
     # tell the schema API about this view so that it doesn't setup its own

Modified: trunk/chandler/repository/persistence/DBRepositoryView.py (11288 => 11289)

--- trunk/chandler/repository/persistence/DBRepositoryView.py	2006-07-31 22:00:15 UTC (rev 11288)
+++ trunk/chandler/repository/persistence/DBRepositoryView.py	2006-07-31 22:52:49 UTC (rev 11289)
@@ -36,12 +36,12 @@
 
 class DBRepositoryView(OnDemandRepositoryView):
 
-    def openView(self):
+    def openView(self, version=None):
 
         self._log = set()
         self._indexWriter = None
 
-        super(DBRepositoryView, self).openView()
+        super(DBRepositoryView, self).openView(version)
 
     def _logItem(self, item):
 

Modified: trunk/chandler/repository/persistence/FileContainer.py (11288 => 11289)

--- trunk/chandler/repository/persistence/FileContainer.py	2006-07-31 22:00:15 UTC (rev 11288)
+++ trunk/chandler/repository/persistence/FileContainer.py	2006-07-31 22:52:49 UTC (rev 11289)
@@ -556,8 +556,9 @@
             count = 0
             prevs = {}
 
-            for i, doc in indexSearcher.search(TermQuery(term)):
-                id = hits.id(i)
+            for hit in indexSearcher.search(TermQuery(term)):
+                id = hit.getId()
+                doc = hit.getDocument()
                 uAttr = UUID(doc['attribute'])
 
                 if uAttr in keeps:
@@ -584,6 +585,6 @@
 
         term = Term("item", uItem.str64())
 
-        for i, doc in indexSearcher.search(TermQuery(term)):
-            if long(doc['version']) == version:
-                indexReader.deleteDocument(hits.id(i))
+        for hit in indexSearcher.search(TermQuery(term)):
+            if long(hit.getDocument()['version']) == version:
+                indexReader.deleteDocument(hit.getId())

Modified: trunk/chandler/repository/persistence/RepositoryView.py (11288 => 11289)

--- trunk/chandler/repository/persistence/RepositoryView.py	2006-07-31 22:00:15 UTC (rev 11288)
+++ trunk/chandler/repository/persistence/RepositoryView.py	2006-07-31 22:52:49 UTC (rev 11289)
@@ -81,9 +81,9 @@
         if repository is not None and not repository.isOpen():
             raise RepositoryError, "Repository is not open"
 
-        super(RepositoryView, self).__init__(repository, name, version,
+        super(RepositoryView, self).__init__(repository, name,
                                              RepositoryView.itsUUID)
-        self.openView()
+        self.openView(version)
         
     def setCurrentView(self):
         """
@@ -119,7 +119,7 @@
 
         return self['Schema']['Core']['Lob'].makeValue(data, *args, **kwds)
 
-    def openView(self):
+    def openView(self, version=None):
         """
         Open this repository view.
 
@@ -127,7 +127,16 @@
         re-opening a closed view.
         """
 
-        self._roots = self._createChildren(self, self.itsVersion == 0)
+        repository = self.repository
+
+        if version is None:
+            if repository is not None:
+                version = repository.store.getVersion()
+            else:
+                version = 0L
+
+        self._version = long(version)
+        self._roots = self._createChildren(self, version == 0L)
         self._registry = {}
         self._deletedRegistry = {}
         self._instanceRegistry = {}
@@ -137,7 +146,6 @@
 
         self.classLoader = ClassLoader(Item, MissingClass)
 
-        repository = self.repository
         if repository is not None:
             if repository.isRefCounted():
                 self._status |= RepositoryView.REFCOUNTED
@@ -1430,7 +1438,7 @@
     def __init__(self, verify=False):
 
         self._logger = logging.getLogger(__name__)
-        super(NullRepositoryView, self).__init__(None, "null view", 0)
+        super(NullRepositoryView, self).__init__(None, "null view", 0L)
 
         if verify:
             self._status |= RepositoryView.VERIFY




_______________________________________________
Commits mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/commits

Reply via email to