01: package org.drools.repository;
02:
03: import javax.jcr.Node;
04:
05: import org.apache.log4j.Logger;
06:
07: /**
08: * The item class is used to abstract away the underlying details of the JCR repository.
09: *
10: * @author btruitt
11: */
12: public abstract class Item {
13: Logger log = Logger.getLogger(Item.class);
14:
15: /**
16: * The node within the repository that this item corresponds to
17: */
18: protected Node node;
19:
20: /**
21: * The RulesRepository object that this object was created from
22: */
23: protected RulesRepository rulesRepository;
24:
25: /**
26: * Sets the item object's node attribute to the specified node
27: *
28: * @param rulesRepository the RulesRepository object that this object is being created from
29: * @param node the node in the repository that this item corresponds to
30: */
31: public Item(RulesRepository rulesRepository, Node node) {
32: this .rulesRepository = rulesRepository;
33: this .node = node;
34: }
35:
36: /**
37: * gets the node in the repository that this item is associated with
38: *
39: * @return the node in the repository that this item is associated with
40: */
41: public Node getNode() {
42: return node;
43: }
44:
45: /**
46: * gets the name of this item (unless overridden in a subclass, this just returns the
47: * name of the node that this Item encapsulates.
48: *
49: * @return the name of the node that this item encapsultes
50: * @throws RulesRepositoryException
51: */
52: public String getName() throws RulesRepositoryException {
53: try {
54: return this .node.getName();
55: } catch (Exception e) {
56: log.error("Caught exception: " + e);
57: throw new RulesRepositoryException(e);
58: }
59: }
60:
61: /**
62: * @return the RulesRepository object that this object was instantiated from
63: */
64: public RulesRepository getRulesRepository() {
65: return rulesRepository;
66: }
67:
68: public boolean equals(Object obj) {
69: if (!(obj instanceof Item)) {
70: return false;
71: } else {
72: Item rhs = (Item) obj;
73: return this .node.equals(rhs.getNode());
74: }
75: }
76:
77: public int hashCode() {
78: return this.node.hashCode();
79: }
80:
81: }
|