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.StorageEngineRootIF; 9 import org.sourceforge.jemm.types.ID; 10 11 public class BDbStorageEngineRootImpl implements StorageEngineRootIF { 12 private final PrimaryIndex<String, RootEntry> pIdx; 13 14 public BDbStorageEngineRootImpl(EntityStore store) { 15 try { 16 pIdx = store.getPrimaryIndex(String.class, RootEntry.class); 17 } catch (DatabaseException e) { 18 throw new StorageEngineException("Error initialising root index " ,e); 19 } 20 } 21 22 @Override 23 public ID getRoot(String rootName) { 24 try { 25 RootEntry re = pIdx.get(rootName); 26 if(re == null) 27 return null; 28 else 29 return re.value; 30 } catch (DatabaseException e) { 31 throw new StorageEngineException("Error in getRoot(" + rootName +")" ,e); 32 } 33 } 34 35 @Override 36 public void removeRoot(String rootName) { 37 try { 38 pIdx.delete(rootName); 39 } catch (DatabaseException e) { 40 throw new StorageEngineException("Error in removeRoot(" + rootName +")" ,e); 41 } 42 } 43 44 @Override 45 public void setRoot(String rootName, ID value) { 46 RootEntry re = new RootEntry(rootName,value); 47 try { 48 pIdx.put(re); 49 } catch (DatabaseException e) { 50 throw new StorageEngineException("Error in setRoot(" + rootName + "," + value + ")" ,e); 51 } 52 } 53 }