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 }