示例#1
0
 def make_persistent(self, instance):
     print 'Make persistent called with %s' % (instance,)
     if not IPersistent.providedBy(instance):
         print '\tIPersistent not provided, directly providing'
         directly_provides(instance, IPersistent)
     persistent = IPersistentObject(instance)
     self._configure_persistence(persistent)
     persistent.set_unsaved()
     self.notify_modified(instance)
示例#2
0
 def make_persistent(self, instance):
     print 'Make persistent called with %s' % (instance, )
     if not IPersistent.providedBy(instance):
         print '\tIPersistent not provided, directly providing'
         directly_provides(instance, IPersistent)
     persistent = IPersistentObject(instance)
     self._configure_persistence(persistent)
     persistent.set_unsaved()
     self.notify_modified(instance)
示例#3
0
 def store(self, instance):
     written = {}
     persistent = IPersistentObject(instance)
     oid = persistent.get_oid()
     instance = persistent.get_object()
     print 'Store %s with OID %s' % (instance, oid)
     transformation_writer = self.writer_factory(instance)
     transformation_writer.set_manager(self)
     for instance in transformation_writer:
         persistent = IPersistentObject(instance)
         oid = persistent.get_oid()
         if written.has_key(oid):
             continue
         if persistent.is_persistent() and not persistent.is_saved():
             instance = persistent.get_object()
             transformation = transformation_writer.write(instance)
             print '\t-> storing %s with OID %s' % (instance, oid)
             self.storage.store_record(oid, transformation)
             written[oid] = None
             persistent.set_saved()
             self.cache.add_instance(oid, instance)
         else: print '\t-> not storing %s with OID %s' % (instance, oid)
示例#4
0
 def get_oid(self, instance):
     print 'get_oid(%s)' % (instance, )
     if isinstance(instance, _never_persistent):
         print '\t-> None, is instance of _never_persistent'
         return None
     if type(instance) in (dict, list):
         print '\t-> None, type in dict, list'
         return None
     if not IPersistent.providedBy(instance):
         print '\t-> None, IPersistent not provided by instance'
         return None
     persistent = IPersistentObject(instance)
     if persistent.get_oid() is None:
         self._configure_persistence(persistent)
         persistent.set_loaded()
         persistent.set_unsaved()
     elif not persistent.is_persistent():
         print '\t-> None, not persistent.is_persistent()'
         return None
     oid = persistent.get_oid()
     print '\t%s OID => %s' % (instance, oid)
     return oid
示例#5
0
 def load(self, oid):
     print 'Loading %s' % oid
     instance = self.cache.get_instance(oid, None)
     if instance is None or isinstance(instance, DeferredObject):
         transformation = self.storage.load_record(oid)
         instance = self._transformation_reader.read(transformation)
         persistent = IPersistentObject(instance)
         self._configure_persistence(persistent, oid)
         persistent.set_loaded()
         persistent.set_saved()
         instance = persistent.get_object()
     else:
         print '\tloaded from cache!'
     print '\tload(%s) -> %s' % (oid, instance)
     return instance
示例#6
0
 def get_oid(self, instance):
     print 'get_oid(%s)' % (instance,)
     if isinstance(instance, _never_persistent):
         print '\t-> None, is instance of _never_persistent'
         return None
     if type(instance) in (dict, list):
         print '\t-> None, type in dict, list'
         return None
     if not IPersistent.providedBy(instance):
         print '\t-> None, IPersistent not provided by instance'
         return None
     persistent = IPersistentObject(instance)
     if persistent.get_oid() is None:
         self._configure_persistence(persistent)
         persistent.set_loaded()
         persistent.set_unsaved()
     elif not persistent.is_persistent():
         print '\t-> None, not persistent.is_persistent()'
         return None
     oid = persistent.get_oid()
     print '\t%s OID => %s' % (instance, oid)
     return oid
示例#7
0
 def load(self, oid):
     print 'Loading %s' % oid
     instance = self.cache.get_instance(oid, None)
     if instance is None or isinstance(instance, DeferredObject):
         transformation = self.storage.load_record(oid)
         instance = self._transformation_reader.read(transformation)
         persistent = IPersistentObject(instance)
         self._configure_persistence(persistent, oid)
         persistent.set_loaded()
         persistent.set_saved()
         instance = persistent.get_object()
     else: 
         print '\tloaded from cache!'
     print '\tload(%s) -> %s' % (oid, instance)
     return instance
示例#8
0
 def make_transient(self, instance):
     persistent = IPersistentObject(instance)
     persistent.disable_persistence()
     persistent.clear_manager()
示例#9
0
 def notify_modified(self, instance):
     persistent = IPersistentObject(instance)
     self.policy.note_modified(persistent)
示例#10
0
 def make_transient(self, instance):
     persistent = IPersistentObject(instance)
     persistent.disable_persistence()
     persistent.clear_manager()
示例#11
0
 def store(self, instance):
     written = {}
     persistent = IPersistentObject(instance)
     oid = persistent.get_oid()
     instance = persistent.get_object()
     print 'Store %s with OID %s' % (instance, oid)
     transformation_writer = self.writer_factory(instance)
     transformation_writer.set_manager(self)
     for instance in transformation_writer:
         persistent = IPersistentObject(instance)
         oid = persistent.get_oid()
         if written.has_key(oid):
             continue
         if persistent.is_persistent() and not persistent.is_saved():
             instance = persistent.get_object()
             transformation = transformation_writer.write(instance)
             print '\t-> storing %s with OID %s' % (instance, oid)
             self.storage.store_record(oid, transformation)
             written[oid] = None
             persistent.set_saved()
             self.cache.add_instance(oid, instance)
         else:
             print '\t-> not storing %s with OID %s' % (instance, oid)