KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > core > event > TypedNodeEventListenerWrapper


1 /*
2  * Created on 9-sep-2005
3  * This software is OSI Certified Open Source Software.
4  * OSI Certified is a certification mark of the Open Source Initiative. The
5  * license (Mozilla version 1.0) can be read at the MMBase site. See
6  * http://www.MMBase.org/license
7  */

8 package org.mmbase.core.event;
9
10 import java.util.Properties JavaDoc;
11 import org.mmbase.module.core.*;
12 import org.mmbase.util.HashCodeUtil;
13
14
15 /**
16  * This class is a wrapper for node event listeners that only want to listen to
17  * events concerning a specific builder.
18  *
19  * @author Ernst Bunders
20  * @since MMBase-1.8
21  */

22 public class TypedNodeEventListenerWrapper implements NodeEventListener {
23
24     private final MMObjectBuilder builder;
25     private final String JavaDoc nodeType;
26     private final NodeEventListener wrappedListener;
27     private final boolean descendants;
28
29     /**
30      * @param builder The builder for which to filter events.
31      * @param listener the node event listener you want to wrap
32      * @param descendants Whether also descendants of the given builder must be listened to. ('true' would be the must logical value).
33      */

34     public TypedNodeEventListenerWrapper(MMObjectBuilder builder, NodeEventListener listener, boolean descendants) {
35         this.builder = builder;
36         this.nodeType = builder.getTableName();
37         wrappedListener = listener;
38         this.descendants = descendants;
39     }
40
41
42     public void notify(NodeEvent event) {
43         if (nodeType.equals(event.getBuilderName())) {
44             wrappedListener.notify(event);
45         } else if (descendants) {
46             MMObjectBuilder eventBuilder = MMBase.getMMBase().getBuilder(event.getBuilderName());
47             if(nodeType.equals("object") || (eventBuilder != null && eventBuilder.isExtensionOf(builder))) {
48                 wrappedListener.notify(event);
49             }
50         }
51     }
52
53     public String JavaDoc toString() {
54         return "TypedNodeEventListenerWrapper(" + wrappedListener + ")";
55     }
56
57     public boolean equals(Object JavaDoc o) {
58         if (o instanceof TypedNodeEventListenerWrapper) {
59             TypedNodeEventListenerWrapper tw = (TypedNodeEventListenerWrapper) o;
60             return
61                 nodeType.equals(tw.nodeType) &&
62                 wrappedListener.equals(tw.wrappedListener) &&
63                 descendants == tw.descendants;
64         } else {
65             return false;
66         }
67     }
68     public int hashCode() {
69         int result = 0;
70         result = HashCodeUtil.hashCode(result, nodeType);
71         result = HashCodeUtil.hashCode(result, wrappedListener);
72         return result;
73
74     }
75
76 }
77
Popular Tags