1 package org.simantics.db.layer0.variable;
3 import java.util.concurrent.TimeUnit;
5 import org.simantics.databoard.binding.mutable.Variant;
6 import org.simantics.db.layer0.variable.Variables.NodeStructure;
7 import org.simantics.simulator.variable.NodeManager;
10 * @author Antti Villberg
15 public class NodeSupport<Node> {
17 public final NodeManager<Node> manager;
18 public final NodeCache<Node,Variant> valueCache;
19 public final NodeCache<Node,NodeStructure> structureCache;
21 public NodeSupport(NodeManager<Node> manager) {
22 this(manager, 1, TimeUnit.SECONDS);
25 public NodeSupport(NodeManager<Node> manager, long defaultExpirationTime, TimeUnit expirationTimeUnit) {
27 throw new NullPointerException("null NodeManager");
28 long ns = expirationTimeUnit.toNanos(defaultExpirationTime);
29 this.manager = manager;
30 this.valueCache = new NodeCache<>(ns);
31 this.structureCache = new NodeCache<>(ns);
35 public int hashCode() {
38 result = prime * result + valueCache.hashCode();
39 result = prime * result + structureCache.hashCode();
40 result = prime * result + manager.hashCode();
45 public boolean equals(Object obj) {
50 if (getClass() != obj.getClass())
52 NodeSupport<?> other = (NodeSupport<?>) obj;
53 return valueCache.equals(other.valueCache)
54 && structureCache.equals(other.structureCache)
55 && manager.equals(other.manager);
58 public void dispose() {
60 structureCache.dispose();