1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.chat.business;
35
36 import java.util.ArrayList;
37 import java.util.Date;
38 import java.util.Enumeration;
39 import java.util.Iterator;
40 import java.util.Vector;
41
42
43
44
45
46 public class ChatUser
47 {
48 public static final int MODE_USER = 0;
49 public static final int MODE_VOICE = 1;
50 public static final int MODE_OP = 2;
51 public static final int MODE_BAN = 3;
52 public static final int MODE_DEBAN = 4;
53 private String _strNickname;
54 private String _strIpAddress;
55 private String _strHostName;
56 private Vector _vChatEntries = new Vector( );
57 private int _nMaxMessages = 20;
58 private Date _dateLastAccess;
59 private Date _dateJoin;
60 private int _nMode;
61 private boolean _bAway;
62 private String _strAwayComment;
63 private boolean _bNewPseudo;
64 private String _strKickComment;
65 private boolean _bKicked;
66
67
68
69 private ArrayList _listSentData = new ArrayList( );
70
71
72
73
74
75
76 public ChatUser( String strNickname )
77 {
78 setNickname( strNickname );
79 _dateJoin = new Date( );
80 _nMode = MODE_USER;
81 }
82
83
84
85
86
87
88
89 public final void setNickname( String strNickname )
90 {
91 _strNickname = strNickname.replace( ' ', '_' );
92 }
93
94
95
96
97
98
99 public String getNickname( )
100 {
101 return _strNickname;
102 }
103
104
105
106
107
108
109 public void setIpAddress( String strIpAddress )
110 {
111 _strIpAddress = strIpAddress;
112 }
113
114
115
116
117
118
119 public String getIpAddress( )
120 {
121 return _strIpAddress;
122 }
123
124
125
126
127
128
129 public void setHostName( String strHostName )
130 {
131 _strHostName = strHostName;
132 }
133
134
135
136
137
138
139 public String getHostName( )
140 {
141 return _strHostName;
142 }
143
144
145
146
147
148
149 public void setLastAccessTime( Date dateLastAccess )
150 {
151 _dateLastAccess = dateLastAccess;
152 }
153
154
155
156
157
158
159 public Date getLastAccessTime( )
160 {
161 return _dateLastAccess;
162 }
163
164
165
166
167
168
169 public long getJoinTime( )
170 {
171 return _dateJoin.getTime( );
172 }
173
174
175
176
177
178
179 public synchronized void addChatEntry( ChatEntry entry )
180 {
181 _vChatEntries.addElement( entry );
182
183 if ( _vChatEntries.size( ) > _nMaxMessages )
184 {
185 _vChatEntries.removeElementAt( 0 );
186 }
187 }
188
189
190
191
192
193
194 public Enumeration getChatEntries( )
195 {
196 return _vChatEntries.elements( );
197 }
198
199
200
201
202
203
204 public void setMode( int nMode )
205 {
206 _nMode = nMode;
207 }
208
209
210
211
212
213
214 public int getMode( )
215 {
216 return _nMode;
217 }
218
219
220
221
222
223
224 public void setAway( boolean bAway )
225 {
226 _bAway = bAway;
227 _strAwayComment = null;
228 }
229
230
231
232
233
234
235 public void setAway( String strComment )
236 {
237 _bAway = true;
238 _strAwayComment = strComment;
239 }
240
241
242
243
244
245
246 public boolean isAway( )
247 {
248 return _bAway;
249 }
250
251
252
253
254
255
256 public String getAwayComment( )
257 {
258 return _strAwayComment;
259 }
260
261
262
263
264
265
266 public boolean hasNewPseudo( )
267 {
268 return _bNewPseudo;
269 }
270
271
272
273
274
275
276 public void setNewPseudo( boolean bNewPseudo )
277 {
278 _bNewPseudo = bNewPseudo;
279 }
280
281
282
283
284
285
286 public void kick( String strComment )
287 {
288 _bKicked = true;
289 _strKickComment = strComment;
290 }
291
292
293
294
295
296
297 public boolean isKicked( )
298 {
299 return _bKicked;
300 }
301
302
303
304
305
306
307 public String getKickComment( )
308 {
309 return _strKickComment;
310 }
311
312
313
314
315
316
317 public void addSentData( String strText )
318 {
319 SentData sd = new SentData( strText );
320 _listSentData.add( sd );
321 }
322
323
324
325
326
327
328
329 public int getSentDataSizeSince( long lSeconds )
330 {
331 long lTime = new Date( ).getTime( ) - ( 1000 * lSeconds );
332 Iterator i = _listSentData.iterator( );
333 int nSize = 0;
334
335 while ( i.hasNext( ) )
336 {
337 SentData sd = (SentData) i.next( );
338
339 if ( sd._date.getTime( ) > lTime )
340 {
341 nSize += ( sd._text.length( ) + 50 );
342 }
343 }
344
345 return nSize;
346 }
347
348
349
350
351 private class SentData
352 {
353 String _text;
354 Date _date;
355
356
357
358
359
360
361 SentData( String strText )
362 {
363 _text = strText;
364 _date = new Date( );
365 }
366 }
367 }