1 package org.sourceforge.jemm.database.persistent.berkeley;
2
3 import com.sleepycat.je.DatabaseException;
4 import com.sleepycat.persist.EntityStore;
5 import com.sleepycat.persist.PrimaryIndex;
6
7 import org.sourceforge.jemm.database.components.StorageEngineException;
8 import org.sourceforge.jemm.database.components.se.StorageEngineGCIF;
9 import org.sourceforge.jemm.database.components.types.GCInfo;
10 import org.sourceforge.jemm.database.persistent.berkeley.proxy.GCInfoProxy;
11 import org.sourceforge.jemm.types.ID;
12
13 public class BDbStorageEngineGCImpl implements StorageEngineGCIF {
14
15 private final PrimaryIndex<Long, GCInfoProxy> pIdx;
16
17 public BDbStorageEngineGCImpl(EntityStore store) {
18 try {
19 this.pIdx = store.getPrimaryIndex(Long.class, GCInfoProxy.class);
20 } catch (DatabaseException de) {
21 throw new StorageEngineException("Error intitalising index on GCInfo storage",de);
22 }
23 }
24
25 @Override
26 public GCInfo get(ID id) {
27 try {
28 GCInfoProxy proxy = pIdx.get(id.getIDValue());
29 if(proxy == null)
30 return null;
31 else
32 return proxy.getGCInfo();
33 } catch (DatabaseException de) {
34 throw new StorageEngineException("Error getting GCInfo for id " + id,de);
35 }
36 }
37
38 @Override
39 public void remove(ID id) {
40 try {
41 pIdx.delete(id.getIDValue());
42 } catch (DatabaseException de) {
43 throw new StorageEngineException("Error deleting GCInfo for id " + id,de);
44 }
45 }
46
47 @Override
48 public void save(GCInfo gcInfo) {
49 try {
50 pIdx.put(new GCInfoProxy(gcInfo));
51 } catch (DatabaseException de) {
52 throw new StorageEngineException("Error saving GCInfo for id " + gcInfo.getId(),de);
53 }
54 }
55 }