KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > nava > informa > utils > cleaner > CompositeObserver


1 //
2
// Informa -- RSS Library for Java
3
// Copyright (c) 2002 by Niko Schmuck
4
//
5
// Niko Schmuck
6
// http://sourceforge.net/projects/informa
7
// mailto:niko_schmuck@users.sourceforge.net
8
//
9
// This library is free software.
10
//
11
// You may redistribute it and/or modify it under the terms of the GNU
12
// Lesser General Public License as published by the Free Software Foundation.
13
//
14
// Version 2.1 of the license should be included with this distribution in
15
// the file LICENSE. If the license is not included with this distribution,
16
// you may find a copy at the FSF web site at 'www.gnu.org' or 'www.fsf.org',
17
// or you may write to the Free Software Foundation, 675 Mass Ave, Cambridge,
18
// MA 02139 USA.
19
//
20
// This library is distributed in the hope that it will be useful,
21
// but WITHOUT ANY WARRANTY; without even the implied waranty of
22
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23
// Lesser General Public License for more details.
24
//
25
// $Id: CompositeObserver.java,v 1.1 2004/08/24 18:07:54 spyromus Exp $
26
//
27

28 package de.nava.informa.utils.cleaner;
29
30 import de.nava.informa.core.ChannelIF;
31 import de.nava.informa.core.ItemIF;
32
33 import java.util.List JavaDoc;
34 import java.util.Vector JavaDoc;
35
36 /**
37  * Composite observer follows Composite pattern to combine several observers.
38  * When it receives event it delivers this event to all of it's sub-observers.
39  *
40  * @author Aleksey Gureev (spyromus@noizeramp.com)
41  */

42 class CompositeObserver implements CleanerObserverIF {
43   private List JavaDoc observers = new Vector JavaDoc();
44
45   /**
46    * Invoked when cleanup engine finds unwanted item.
47    *
48    * @param item unwanted item.
49    * @param channel channel this item resides in.
50    */

51   public void unwantedItem(ItemIF item, ChannelIF channel) {
52     final int size = observers.size();
53     for (int i = 0; i < size; i++) {
54       final CleanerObserverIF observer = (CleanerObserverIF) observers.get(i);
55       try {
56         observer.unwantedItem(item, channel);
57       } catch (Exception JavaDoc e) {
58         // Do not care about exceptions from sub-observers.
59
}
60     }
61   }
62
63   /**
64    * Invoked by cleanup engine when cleaning of the channel has started.
65    *
66    * @param channel channel being cleaned.
67    */

68   public void cleaningStarted(ChannelIF channel) {
69     final int size = observers.size();
70     for (int i = 0; i < size; i++) {
71       final CleanerObserverIF observer = (CleanerObserverIF) observers.get(i);
72       try {
73         observer.cleaningStarted(channel);
74       } catch (Exception JavaDoc e) {
75         // Do not care about exceptions from sub-observers.
76
}
77     }
78   }
79
80   /**
81    * Invoked by cleanup engine when cleaning of the channel has finished.
82    *
83    * @param channel channel being cleaned.
84    */

85   public void cleaningFinished(ChannelIF channel) {
86     final int size = observers.size();
87     for (int i = 0; i < size; i++) {
88       final CleanerObserverIF observer = (CleanerObserverIF) observers.get(i);
89       try {
90         observer.cleaningFinished(channel);
91       } catch (Exception JavaDoc e) {
92         // Do not care about exceptions from sub-observers.
93
}
94     }
95   }
96
97   /**
98    * Adds new observer to the list.
99    *
100    * @param observer new observer.
101    */

102   public final void add(CleanerObserverIF observer) {
103     if (!observers.contains(observer)) {
104       observers.add(observer);
105     }
106   }
107
108   /**
109    * Removes observer from the list.
110    *
111    * @param observer registered observer.
112    */

113   public final void remove(CleanerObserverIF observer) {
114     observers.remove(observer);
115   }
116 }
117
Popular Tags