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 }