diff -r 4df7a7370ae2 -r 9fd4819bf104 dbrtools/dbr/dbrenv.py --- 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) -