*** empty log message ***
[pli.git] / pli / pattern / store / storeproxy.py
blob5455eaa83aecd6d7ddb9e873695e0113a4e9737f
1 #=======================================================================
3 __version__ = '''0.0.05'''
4 __sub_version__ = '''20040909234325'''
5 __copyright__ = '''(c) Alex A. Naanou 2003'''
8 #-----------------------------------------------------------------------
10 import pli.pattern.store as store
13 #-----------------------------------------------------------------------
14 ##!! revise !!##
15 #------------------------------------------------------BaseStoreProxy---
16 SAFE_TRNSFER=0
17 FORCE_OVERWRITE=1
18 # this stop the overwriting of data in the target backend...
19 IGNORE_OVERWRITE=2
21 class BaseStoreProxy(store.BaseStore):
22 '''
23 '''
24 ## def __init__(self, name, backend=None):
25 ## '''
26 ## '''
27 ## super(BaseStoreProxy, self).__init__(name)
28 ## if backend != None:
29 ## self._store_data = backend
30 def _setbackend(self, backend):
31 '''
32 '''
33 self._store_data = backend
35 def getbackend(self):
36 '''
37 '''
38 return self._store_data
39 def changebackend(self, backend, flags=SAFE_TRNSFER):
40 '''
41 this will transfer data from the current backend to the new.
42 '''
43 # check for store intersections...
44 from_keys = self.keys()
45 to_keys = backend.keys()
46 if len(from_keys) + len(to_keys) != len(dict.fromkeys(from_keys + to_keys)):
47 if flags == 0:
48 ##!!!
49 raise TypeError, 'both the curent store (%s) and the new backend (%s) have matching keys.' % (self, backend)
50 for k, v in self.iteritems():
51 if k in backend:
52 # sanity check...
53 if flags & SAFE_TRNSFER:
54 ##!!! fatal... (data changed during transfer)
55 raise TypeError, 'data changed during transfer of store %s to %s.' % (self, backend)
56 if flags & FORCE_OVERWRITE:
57 pass
58 elif flags & IGNORE_OVERWRITE:
59 continue
60 backend[k] = v
61 self._setbackend(backend)
65 #=======================================================================
66 # vim:set ts=4 sw=4 nowrap :