View Javadoc

1   /***
2    * Jetrix TetriNET Server
3    * Copyright (C) 2001-2003  Emmanuel Bourg
4    *
5    * This program is free software; you can redistribute it and/or
6    * modify it under the terms of the GNU General Public License
7    * as published by the Free Software Foundation; either version 2
8    * of the License, or (at your option) any later version.
9    *
10   * This program is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU General Public License for more details.
14   *
15   * You should have received a copy of the GNU General Public License
16   * along with this program; if not, write to the Free Software
17   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18   */
19  
20  package net.jetrix.filter;
21  
22  import java.util.*;
23  import java.util.logging.*;
24  
25  import net.jetrix.*;
26  import net.jetrix.messages.channel.*;
27  import net.jetrix.messages.channel.specials.*;
28  
29  /***
30   * Defines a generic filter to be used and extended by filter developers.
31   * GenericFilter makes writing filters easier by dispatching messages to an
32   * appropriate method according to the type of this message (onPline(),
33   * onStartGame(), etc...).
34   *
35   * @author Emmanuel Bourg
36   * @version $Revision: 799 $, $Date: 2009-02-18 17:28:08 +0100 (Wed, 18 Feb 2009) $
37   */
38  public abstract class GenericFilter extends MessageFilter
39  {
40      protected Logger log = Logger.getLogger("net.jetrix");
41  
42      public final void process(Message m, List<Message> out)
43      {
44          // overwritable pre processing
45          onMessage(m);
46  
47          // message dispatching
48          if (m instanceof SpecialMessage)           { onMessage((SpecialMessage) m, out); }
49          else if (m instanceof FieldMessage)        { onMessage((FieldMessage) m, out); }
50          else if (m instanceof CommandMessage)      { onMessage((CommandMessage) m, out); }
51          else if (m instanceof PlineMessage)        { onMessage((PlineMessage) m, out); }
52          else if (m instanceof LevelMessage)        { onMessage((LevelMessage) m, out); }
53          else if (m instanceof PlayerLostMessage)   { onMessage((PlayerLostMessage) m, out); }
54          else if (m instanceof PlineActMessage)     { onMessage((PlineActMessage) m, out); }
55          else if (m instanceof TeamMessage)         { onMessage((TeamMessage) m, out); }
56          else if (m instanceof JoinMessage)         { onMessage((JoinMessage) m, out); }
57          else if (m instanceof LeaveMessage)        { onMessage((LeaveMessage) m, out); }
58          else if (m instanceof PlayerNumMessage)    { onMessage((PlayerNumMessage) m, out); }
59          else if (m instanceof StartGameMessage)    { onMessage((StartGameMessage) m, out); }
60          else if (m instanceof StopGameMessage)     { onMessage((StopGameMessage) m, out); }
61          else if (m instanceof NewGameMessage)      { onMessage((NewGameMessage) m, out); }
62          else if (m instanceof EndGameMessage)      { onMessage((EndGameMessage) m, out); }
63          else if (m instanceof PauseMessage)        { onMessage((PauseMessage) m, out); }
64          else if (m instanceof ResumeMessage)       { onMessage((ResumeMessage) m, out); }
65          else if (m instanceof GmsgMessage)         { onMessage((GmsgMessage) m, out); }
66          else if (m instanceof PlayerWonMessage)    { onMessage((PlayerWonMessage) m, out); }
67          else
68          {
69              onMessage(m, out);
70          }
71      }
72  
73      /***
74       * Message pre-processing. This method is called at the beginning of the
75       * <tt>process(Message m, List out)</tt> method and allow custom
76       * processing for all filtered messages.
77       */
78      public void onMessage(Message m) { }
79  
80      public void onMessage(Message m, List<Message> out) { out.add(m); }
81  
82      public void onMessage(PlineMessage m, List<Message> out)
83      {
84          out.add(m);
85      }
86  
87      public void onMessage(PlineActMessage m, List<Message> out)
88      {
89          out.add(m);
90      }
91  
92      public void onMessage(TeamMessage m, List<Message> out)
93      {
94          out.add(m);
95      }
96  
97      public void onMessage(JoinMessage m, List<Message> out)
98      {
99          out.add(m);
100     }
101 
102     public void onMessage(LeaveMessage m, List<Message> out)
103     {
104         out.add(m);
105     }
106 
107     public void onMessage(PlayerNumMessage m, List<Message> out)
108     {
109         out.add(m);
110     }
111 
112     public void onMessage(StartGameMessage m, List<Message> out)
113     {
114         out.add(m);
115     }
116 
117     public void onMessage(StopGameMessage m, List<Message> out)
118     {
119         out.add(m);
120     }
121 
122     public void onMessage(NewGameMessage m, List<Message> out)
123     {
124         out.add(m);
125     }
126 
127     public void onMessage(EndGameMessage m, List<Message> out)
128     {
129         out.add(m);
130     }
131 
132     public void onMessage(PauseMessage m, List<Message> out)
133     {
134         out.add(m);
135     }
136 
137     public void onMessage(ResumeMessage m, List<Message> out)
138     {
139         out.add(m);
140     }
141 
142     public void onMessage(GmsgMessage m, List<Message> out)
143     {
144         out.add(m);
145     }
146 
147     private void onMessage(SpecialMessage m, List<Message> out)
148     {
149         // message pre-processing
150         onSpecial(m, out);
151 
152         // message dispatching
153         if (m instanceof LinesAddedMessage)          { onMessage((LinesAddedMessage) m, out); }
154         else if (m instanceof AddLineMessage)        { onMessage((AddLineMessage) m, out); }
155         else if (m instanceof ClearLineMessage)      { onMessage((ClearLineMessage) m, out); }
156         else if (m instanceof ClearSpecialsMessage)  { onMessage((ClearSpecialsMessage) m, out); }
157         else if (m instanceof RandomClearMessage)    { onMessage((RandomClearMessage) m, out); }
158         else if (m instanceof BlockQuakeMessage)     { onMessage((BlockQuakeMessage) m, out); }
159         else if (m instanceof BlockBombMessage)      { onMessage((BlockBombMessage) m, out); }
160         else if (m instanceof GravityMessage)        { onMessage((GravityMessage) m, out); }
161         else if (m instanceof NukeFieldMessage)      { onMessage((NukeFieldMessage) m, out); }
162         else if (m instanceof SwitchFieldsMessage)   { onMessage((SwitchFieldsMessage) m, out); }
163     }
164 
165     /***
166      * Special block message pre-processing. This method is called for all
167      * specials filtered and allow custom processing for all specials
168      * (lines added, blockbomb switchs, etc...).
169      */
170     public void onSpecial(SpecialMessage m, List<Message> out) { }
171 
172     public void onMessage(LevelMessage m, List<Message> out)
173     {
174         out.add(m);
175     }
176 
177     public void onMessage(FieldMessage m, List<Message> out)
178     {
179         out.add(m);
180     }
181 
182     public void onMessage(PlayerLostMessage m, List<Message> out)
183     {
184         out.add(m);
185     }
186 
187     public void onMessage(PlayerWonMessage m, List<Message> out)
188     {
189         out.add(m);
190     }
191 
192     public void onMessage(CommandMessage m, List<Message> out)
193     {
194         out.add(m);
195     }
196 
197     public void onMessage(LinesAddedMessage m, List<Message> out)
198     {
199         if (m instanceof OneLineAddedMessage)        { onMessage((OneLineAddedMessage) m, out); }
200         else if (m instanceof TwoLinesAddedMessage)  { onMessage((TwoLinesAddedMessage) m, out); }
201         else if (m instanceof FourLinesAddedMessage) { onMessage((FourLinesAddedMessage) m, out); }
202     }
203 
204     public void onMessage(OneLineAddedMessage m, List<Message> out)
205     {
206         out.add(m);
207     }
208 
209     public void onMessage(TwoLinesAddedMessage m, List<Message> out)
210     {
211         out.add(m);
212     }
213 
214     public void onMessage(FourLinesAddedMessage m, List<Message> out)
215     {
216         out.add(m);
217     }
218 
219     public void onMessage(AddLineMessage m, List<Message> out)
220     {
221         out.add(m);
222     }
223 
224     public void onMessage(ClearLineMessage m, List<Message> out)
225     {
226         out.add(m);
227     }
228 
229     public void onMessage(NukeFieldMessage m, List<Message> out)
230     {
231         out.add(m);
232     }
233 
234     public void onMessage(RandomClearMessage m, List<Message> out)
235     {
236         out.add(m);
237     }
238 
239     public void onMessage(SwitchFieldsMessage m, List<Message> out)
240     {
241         out.add(m);
242     }
243 
244     public void onMessage(ClearSpecialsMessage m, List<Message> out)
245     {
246         out.add(m);
247     }
248 
249     public void onMessage(GravityMessage m, List<Message> out)
250     {
251         out.add(m);
252     }
253 
254     public void onMessage(BlockQuakeMessage m, List<Message> out)
255     {
256         out.add(m);
257     }
258 
259     public void onMessage(BlockBombMessage m, List<Message> out)
260     {
261         out.add(m);
262     }
263 
264 }