1 package org.sourceforge.jemm.database.persistent.berkeley.objects; 2 3 import java.io.ByteArrayInputStream; 4 import java.io.ByteArrayOutputStream; 5 import java.io.ObjectInputStream; 6 import java.io.ObjectOutputStream; 7 import java.io.Serializable; 8 9 import com.sleepycat.persist.model.Entity; 10 import com.sleepycat.persist.model.PrimaryKey; 11 12 import org.sourceforge.jemm.JEMMInternalException; 13 import org.sourceforge.jemm.database.components.types.StoredObject; 14 15 @Entity 16 public class BDbStoredData { 17 @PrimaryKey 18 private long objectId; 19 private byte[] data; 20 21 public BDbStoredData() {} 22 23 public BDbStoredData(long objectId,Serializable object) { 24 this.setObjectId(objectId); 25 try { 26 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 27 ObjectOutputStream oos = new ObjectOutputStream(baos); 28 oos.writeObject(object); 29 oos.close(); 30 setData(baos.toByteArray()); 31 } catch (Exception e) { 32 throw new JEMMInternalException("Exception occurred whilst encoding type",e); 33 } 34 35 } 36 37 public StoredObject convert() { 38 39 try { 40 ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(getData())); 41 StoredObject so = (StoredObject) ois.readObject(); 42 ois.close(); 43 return so; 44 } catch (Exception e) { 45 throw new JEMMInternalException("Exception occurred whilst decoding type",e); 46 } 47 } 48 49 public void setObjectId(long objectId) { 50 this.objectId = objectId; 51 } 52 53 public long getObjectId() { 54 return objectId; 55 } 56 57 public void setData(byte[] data) { 58 this.data = data; 59 } 60 61 public byte[] getData() { 62 return data; 63 } 64 }