1
2
3
4
5 package org.sourceforge.jemm.database.components;
6
7 import org.sourceforge.jemm.database.components.interfaces.DBRootHandler;
8 import org.sourceforge.jemm.database.components.se.StorageEngineRootIF;
9 import org.sourceforge.jemm.types.ID;
10
11
12
13
14
15 public class DefaultDBRootHandler implements DBRootHandler {
16
17 private ObjectStatusListener objectStatusListener;
18 private final StorageEngineRootIF rootIF;
19
20 public DefaultDBRootHandler(StorageEngine storageEngine) {
21 this.rootIF = storageEngine.getRootIF();
22 }
23
24 @Override
25 public synchronized void setObjectStatusListener(ObjectStatusListener objectStatusListener) {
26 this.objectStatusListener = objectStatusListener;
27 }
28
29
30
31
32
33 @Override
34 public synchronized void setRoot(String rootName, ID newValue) {
35 ID oldValue = rootIF.getRoot(rootName);
36
37 if(newValue == null)
38 rootIF.removeRoot(rootName);
39 else {
40 objectStatusListener.rootRefAdded(newValue);
41 rootIF.setRoot(rootName, newValue);
42 }
43
44 if(oldValue != null)
45 objectStatusListener.rootRefCleared(oldValue);
46 }
47
48
49
50
51
52
53
54 @Override
55 public synchronized ID setRootIfNull(String rootName, ID newValue) {
56 ID oldValue = rootIF.getRoot(rootName);
57 if(oldValue != null)
58 return oldValue;
59
60 setRoot(rootName, newValue);
61 return newValue;
62 }
63
64
65
66
67
68
69 @Override
70 public synchronized ID getRoot(String rootName) {
71 return rootIF.getRoot(rootName);
72 }
73 }