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 }