import ZODB
from Persistence import Persistent
from ZODB import FileStorage, DB

class data1(Persistent):
  def __init__(self,a):
    print "Constructor of data1 with argument =",a
    self.description = ("I am an instance of data1 with",a)
    self.number=a
  def __del__(self):
    print "Destructor of data1"
  def __getinitargs__(self):
    return (self.number,)

def StoreObjects():
    d1 = data1(11111)
    d2 = data1(22222)
    storage = FileStorage.FileStorage('data.fs')
    db = DB(storage)
    conn = db.open()
    dbroot = conn.root()

    if not dbroot.has_key('datadb'):
      import BTree
      dbroot['datadb'] = BTree.BTree()

    datadb = dbroot['datadb']

    datadb['1'] = d1
    datadb['2'] = d2

    get_transaction().commit()

    conn.close()

def GetOneObject():
    print 'in GetOneObject'
    storage = FileStorage.FileStorage('data.fs')
    db = DB(storage)
    conn = db.open()
    dbroot = conn.root()
    datadb = dbroot['datadb']
    print 'getting object...'
    d1 = datadb['1']
    print 'retreived: ',d1.description
    conn.close()

if (__name__ == '__main__'):
  StoreObjects()
  GetOneObject()
