--- a/dbrtools/dbr/dbrenv.py Wed Mar 24 16:43:43 2010 +0000
+++ b/dbrtools/dbr/dbrenv.py Mon Apr 19 22:50:19 2010 +0100
@@ -21,6 +21,8 @@
import dbrbaseline
import dbrpatch
+import dbrresults
+import dbrfilter
def CreateDB(location): #virtual constructor
print location
@@ -42,12 +44,7 @@
return DBREnv(location)
-#Start simple with the filtering...
-def CreateFilter(arg):
- if(os.path.isfile(arg)):
- return DBRFileFilter(arg)
- return DBRFilter()
-
+#Basic DBREnv definition
class DBREnv:
db = dict()
location = ''
@@ -91,11 +88,12 @@
touched = touched - unknown
touched = touched - changed
- results = DBRCompResults(added, removed, touched, changed, unknown)
+ results = dbrresults.DBRResults(added, removed, touched, changed, unknown)
return results
def verify(self, files):
print 'this is a pure virtual...'
+
def save(self):
print 'this is a pure virtual...'
@@ -142,6 +140,7 @@
for file in files:
self.db[file]['md5'] = md5s[file]['md5']
+#Creating a DBREnv from scratch...
class DBRNewLocalEnv (DBRLocalEnv):
def __init__(self, location):
DBRLocalEnv.__init__(self, location)
@@ -156,8 +155,6 @@
print 'Saving %s' % filename
dbrbaseline.writedb(self.db,filename)
-
-
#zipped files, contains MD5s.
class DBRZippedEnv (DBREnv):
@@ -165,6 +162,7 @@
DBREnv.__init__(self, location)
#load up zip MD5 and stuff
self.db = dbrutils.getzippedDB(self.location)
+
#Database, but no filesystem access
class DBRBaselineEnv (DBREnv):
@@ -180,6 +178,7 @@
print 'Saving %s' % filename
dbrbaseline.writedb(self.db,filename)
+
class DBRPatchedBaselineEnv (DBRBaselineEnv):
patches = []
baseline = []
@@ -202,58 +201,3 @@
class CBREnv (DBREnv): # placeholder for handling CBR components...
def __init__(self, location):
DBREnv.__init__(self, location)
-
-
-#comparison results...
-class DBRCompResults:
- added = set()
- removed = set()
- touched = set()
- changed = set()
- unknown = set()
- def __init__(self, added, removed, touched, changed, unknown):
- #Should probably assert that these are disjoint.
- self.added = added
- self.removed = removed
- self.touched = touched
- self.changed = changed
- self.unknown = unknown
-
- def printdetail(self):
- for file in sorted(self.added):
- print 'added:', file
- for file in sorted(self.removed):
- print 'removed:', file
- for file in sorted(self.changed):
- print 'changed:', file
- for file in sorted(self.unknown):
- print 'unknown:', file
-
- def printsummary(self):
- if(len(self.added | self.removed | self.changed | self.unknown)):
- print 'status: dirty'
- else:
- print 'status: clean'
-
-
-
-class DBRFilter:
- info = ''
- def __init__(self):
- self.info = 'null filter'
- def filter(self, results):
- return results
-
-class DBRFileFilter (DBRFilter):
- filename = ''
- def __init__(self, filename):
- DBRFilter.__init__(self)
- self.info = 'file filter'
- self.filename = filename
- self.files = dbrutils.readfilenamesfromfile(self.filename)
-# for file in sorted(self.files):
-# print file
-
- def filter(self, results):
- return DBRCompResults(results.added & self.files, results.removed & self.files, results.touched & self.files, results.changed & self.files, results.unknown & self.files)
-