EMMA Coverage Report (generated Thu Jan 05 16:24:01 PST 2012)
[all classes][net.digitaltsunami.word.trie.event]

COVERAGE SUMMARY FOR SOURCE FILE [NodeEventListenerList.java]

nameclass, %method, %block, %line, %
NodeEventListenerList.java100% (1/1)100% (13/13)100% (221/221)100% (52/52)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class NodeEventListenerList100% (1/1)100% (13/13)100% (221/221)100% (52/52)
NodeEventListenerList (): void 100% (1/1)100% (23/23)100% (6/6)
addCharacterAddedListener (NodeAddedListener): void 100% (1/1)100% (21/21)100% (5/5)
addNodeAddedListener (NodeAddedListener): void 100% (1/1)100% (11/11)100% (3/3)
addTerminusCharacterAddedListener (NodeAddedListener): void 100% (1/1)100% (11/11)100% (3/3)
addTerminusNodeAddedListener (NodeAddedListener): void 100% (1/1)100% (6/6)100% (2/2)
dispatchCharacterAddedEvent (CharTrieNode): void 100% (1/1)100% (25/25)100% (5/5)
dispatchNodeAddedEvent (CharTrieNode): void 100% (1/1)100% (25/25)100% (5/5)
dispatchTerminusCharacterAddedEvent (CharTrieTerminusNode): void 100% (1/1)100% (25/25)100% (5/5)
dispatchTerminusNodeAddedEvent (CharTrieTerminusNode): void 100% (1/1)100% (25/25)100% (5/5)
removeCharacterAddedListener (NodeAddedListener): void 100% (1/1)100% (21/21)100% (5/5)
removeNodeAddedListener (NodeAddedListener): void 100% (1/1)100% (11/11)100% (3/3)
removeTerminusCharacterAddedListener (NodeAddedListener): void 100% (1/1)100% (11/11)100% (3/3)
removeTerminusNodeAddedListener (NodeAddedListener): void 100% (1/1)100% (6/6)100% (2/2)

1package net.digitaltsunami.word.trie.event;
2 
3import java.util.ArrayList;
4 
5import net.digitaltsunami.word.trie.CharTrieNode;
6import net.digitaltsunami.word.trie.CharTrieTerminusNode;
7 
8/**
9 * Maintains notification lists allow for additional processing as characters
10 * are added. Notification lists are provided for the following events:
11 * <ul>
12 * <li><em>Character added</em> - Will be fired for each character as it is
13 * added. Will be fired whether or not the character had previously been added.
14 * <p>
15 * <strong>NOTE:</strong> This event also includes all other events (terminus
16 * characters, new nodes, new terminus nodes).</li>
17 * <li><em>Node added</em> - Will be fired for each node that is added. Will not
18 * fire if a node existed for the character being added. Note that this includes
19 * terminus nodes.
20 * <p>
21 * <strong>NOTE:</strong> This event also includes new terminus nodes.</li>
22 * <li><em>Terminus Character added</em> - Will be fired as each terminus
23 * character is added (i.e., fire only upon the last character in the term)
24 * <p>
25 * <strong>NOTE:</strong> This event also includes new terminus nodes.</li>
26 * <li><em>Terminus Node added</em> - Will be fired for each terminus node that
27 * is added (i.e., as each new term is added). This will fire for both new nodes
28 * and for existing non-terminus nodes that are converted see
29 * {@link #addTerminusNodeAddedListener(NodeAddedListener)} for more information
30 * regarding conversion.
31 * </ul>
32 * 
33 * @author dhagberg
34 * 
35 */
36public class NodeEventListenerList {
37    private final java.util.List<NodeAddedListener> characterListeners;
38    private final java.util.List<NodeAddedListener> nodeListeners;
39    private final java.util.List<NodeAddedListener> terminusNodeListeners;
40    private final java.util.List<NodeAddedListener> terminusCharacterListeners;
41 
42    public NodeEventListenerList() {
43        characterListeners = new ArrayList<NodeAddedListener>();
44        nodeListeners = new ArrayList<NodeAddedListener>();
45        terminusCharacterListeners = new ArrayList<NodeAddedListener>();
46        terminusNodeListeners = new ArrayList<NodeAddedListener>();
47    }
48 
49    /**
50     * Add a listener for events fired as each character is added.
51     * <p>
52     * Listeners on this event will be notified as each character that is added
53     * to the dictionary regardless of prior status. Notification will be
54     * through the invocation of
55     * {@link NodeAddedListener#characterAdded(NodeAddedEvent)}.
56     * <p>
57     * <strong>NOTE:</strong> Events fired for characters being added will
58     * include terminus characters as well. Adding the same listener for both
59     * character and terminus character events will result in two invocations on
60     * the listener for terminus characters.
61     * 
62     * @param listener
63     *            interested when a character is added.
64     */
65    public void addCharacterAddedListener(NodeAddedListener listener) {
66        characterListeners.add(listener);
67        terminusCharacterListeners.add(listener);
68        nodeListeners.add(listener);
69        terminusNodeListeners.add(listener);
70 
71    }
72 
73    /**
74     * Remove the specified listener for events fired as each character is
75     * added.
76     */
77    public void removeCharacterAddedListener(NodeAddedListener listener) {
78        characterListeners.remove(listener);
79        terminusCharacterListeners.remove(listener);
80        nodeListeners.remove(listener);
81        terminusNodeListeners.remove(listener);
82    }
83 
84    /**
85     * Add a listener for events fired when a new terminus character is added.
86     * <p>
87     * Listeners on this event will be invoked for each terminus character that
88     * is added to the dictionary regardless of prior status. Notification will
89     * be through the invocation of
90     * {@link NodeAddedListener#terminusCharacterAdded(net.digitaltsunami.word.trie.event.TerminusNodeAddedEvent)}.
91     * <p>
92     * <strong>NOTE:</strong> Events fired for characters being added will
93     * include terminus characters as well. Adding the same listener for both
94     * character and terminus character events will result in two invocations on
95     * the listener for terminus characters.
96     * 
97     * @param listener
98     *            interested when a terminus character is added.
99     */
100    public void addTerminusCharacterAddedListener(NodeAddedListener listener) {
101        terminusCharacterListeners.add(listener);
102        terminusNodeListeners.add(listener);
103 
104    }
105 
106    /**
107     * Remove the specified listener for events fired when a terminus character
108     * is added.
109     */
110    public void removeTerminusCharacterAddedListener(NodeAddedListener listener) {
111        terminusCharacterListeners.remove(listener);
112        terminusNodeListeners.remove(listener);
113    }
114 
115    /**
116     * Add a listener for events fired when a new node is added.
117     * <p>
118     * Listeners on this event will be invoked for each node that is
119     * <strong>added</strong> to the dictionary. This will occur only when the
120     * node did not already exist. Notification will be through the invocation
121     * of {@link NodeAddedListener#nodeAdded(NodeAddedEvent)}.
122     * <p>
123     * <strong>NOTE:</strong> Events fired for characters being added will
124     * include terminus characters as well. Adding the same listener for both
125     * character and terminus character events will result in two invocations on
126     * the listener for terminus characters.
127     * 
128     * @param listener
129     *            interested when a node is added.
130     */
131    public void addNodeAddedListener(NodeAddedListener listener) {
132        nodeListeners.add(listener);
133        terminusNodeListeners.add(listener);
134    }
135 
136    /**
137     * Remove the specified listener for events fired when a node is added.
138     */
139    public void removeNodeAddedListener(NodeAddedListener listener) {
140        nodeListeners.remove(listener);
141        terminusNodeListeners.remove(listener);
142 
143    }
144 
145    /**
146     * Add a listener for events fired when a new terminus node is added or an
147     * existing non-terminus node is converted to a terminus node.
148     * <p>
149     * Listeners on this event will be notified for each node that is
150     * <strong>added</strong> to the dictionary. This will occur only when the
151     * terminus node did not already exist. If the node existed, but was a
152     * non-terminus node and was converted, then the listener will be notified.
153     * Notification will be through the invocation of
154     * {@link NodeAddedListener#terminusNodeAdded(TerminusNodeAddedEvent)}.
155     * <p>
156     * <strong>NOTE:</strong> Events fired for characters being added will
157     * include terminus characters as well. Adding the same listener for both
158     * character and terminus character events will result in two invocations on
159     * the listener for terminus characters.
160     * 
161     * @param listener
162     *            interested when a terminus node is added.
163     */
164    public void addTerminusNodeAddedListener(NodeAddedListener listener) {
165        terminusNodeListeners.add(listener);
166    }
167 
168    /**
169     * Add a listener for events fired when a new terminus node is added or an
170     * existing non-terminus node is converted to a terminus node.
171     * <p>
172     * Listeners on this event will be notified for each node that is
173     * <strong>added</strong> to the dictionary. This will occur only when the
174     * terminus node did not already exist. If the node existed, but was a
175     * non-terminus node and was converted, then the listener will be notified.
176     * Notification will be through the invocation of
177     * {@link NodeAddedListener#terminusNodeAdded(TerminusNodeAddedEvent)}.
178     * <p>
179     * <strong>NOTE:</strong> Events fired for characters being added will
180     * include terminus characters as well. Adding the same listener for both
181     * character and terminus character events will result in two invocations on
182     * the listener for terminus characters.
183     * 
184     * @param listener
185     *            interested when a terminus node is added.
186     */
187    public void removeTerminusNodeAddedListener(NodeAddedListener listener) {
188        terminusNodeListeners.remove(listener);
189    }
190 
191    /**
192     * Notify all character added listeners that a character has been added and
193     * provide the node for the character.
194     * 
195     * @param node
196     *            Node containing character.
197     */
198    public void dispatchCharacterAddedEvent(CharTrieNode node) {
199        if (characterListeners.size() > 0) {
200            NodeAddedEvent event = new NodeAddedEvent(node);
201            for (NodeAddedListener listener : characterListeners) {
202                listener.characterAdded(event);
203            }
204        }
205    }
206 
207    /**
208     * Notify all terminus character added listeners that a terminus character
209     * has been added and provide the terminus node for the character.
210     * 
211     * @param node
212     *            Node containing character.
213     */
214    public void dispatchTerminusCharacterAddedEvent(CharTrieTerminusNode node) {
215        if (terminusCharacterListeners.size() > 0) {
216            TerminusNodeAddedEvent event = new TerminusNodeAddedEvent(node);
217            for (NodeAddedListener listener : terminusCharacterListeners) {
218                listener.terminusCharacterAdded(event);
219            }
220        }
221    }
222 
223    /**
224     * Notify all node added listeners that a new node has been added and
225     * provide the newly added node.
226     * 
227     * @param node
228     *            Newly added node.
229     */
230    public void dispatchNodeAddedEvent(CharTrieNode node) {
231        if (nodeListeners.size() > 0) {
232            NodeAddedEvent event = new NodeAddedEvent(node);
233            for (NodeAddedListener listener : nodeListeners) {
234                listener.nodeAdded(event);
235            }
236        }
237    }
238 
239    /**
240     * Notify all terminus node added listeners that a new terminus node has
241     * been added and provide the newly added node.
242     * 
243     * @param node
244     *            Newly added terminus node.
245     */
246    public void dispatchTerminusNodeAddedEvent(CharTrieTerminusNode node) {
247        if (terminusNodeListeners.size() > 0) {
248            TerminusNodeAddedEvent event = new TerminusNodeAddedEvent(node);
249            for (NodeAddedListener listener : terminusNodeListeners) {
250                listener.terminusNodeAdded(event);
251            }
252        }
253    }
254}

[all classes][net.digitaltsunami.word.trie.event]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov