KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jivesoftware > smackx > muc > DiscussionHistory


1 /**
2  * $RCSfile$
3 /**
4  * $RCSfile$
5  * $Revision: 2407 $
6  * $Date: 2004-11-02 20:37:00 -0300 (Tue, 02 Nov 2004) $
7  *
8  * Copyright 2003-2004 Jive Software.
9  *
10  * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
11  * you may not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  */

22
23 package org.jivesoftware.smackx.muc;
24
25 import java.util.Date JavaDoc;
26
27 import org.jivesoftware.smackx.packet.MUCInitialPresence;
28
29 /**
30  * The DiscussionHistory class controls the number of characters or messages to receive
31  * when entering a room. The room will decide the amount of history to return if you don't
32  * specify a DiscussionHistory while joining a room.<p>
33  *
34  * You can use some or all of these variable to control the amount of history to receive:
35  * <ul>
36  * <li>maxchars -> total number of characters to receive in the history.
37  * <li>maxstanzas -> total number of messages to receive in the history.
38  * <li>seconds -> only the messages received in the last "X" seconds will be included in the
39  * history.
40  * <li>since -> only the messages received since the datetime specified will be included in
41  * the history.
42  * </ul>
43  *
44  * Note: Setting maxchars to 0 indicates that the user requests to receive no history.
45  *
46  * @author Gaston Dombiak
47  */

48 public class DiscussionHistory {
49
50     private int maxChars = -1;
51     private int maxStanzas = -1;
52     private int seconds = -1;
53     private Date JavaDoc since;
54
55     /**
56      * Returns the total number of characters to receive in the history.
57      *
58      * @return total number of characters to receive in the history.
59      */

60     public int getMaxChars() {
61         return maxChars;
62     }
63
64     /**
65      * Returns the total number of messages to receive in the history.
66      *
67      * @return the total number of messages to receive in the history.
68      */

69     public int getMaxStanzas() {
70         return maxStanzas;
71     }
72
73     /**
74      * Returns the number of seconds to use to filter the messages received during that time.
75      * In other words, only the messages received in the last "X" seconds will be included in
76      * the history.
77      *
78      * @return the number of seconds to use to filter the messages received during that time.
79      */

80     public int getSeconds() {
81         return seconds;
82     }
83
84     /**
85      * Returns the since date to use to filter the messages received during that time.
86      * In other words, only the messages received since the datetime specified will be
87      * included in the history.
88      *
89      * @return the since date to use to filter the messages received during that time.
90      */

91     public Date JavaDoc getSince() {
92         return since;
93     }
94
95     /**
96      * Sets the total number of characters to receive in the history.
97      *
98      * @param maxChars the total number of characters to receive in the history.
99      */

100     public void setMaxChars(int maxChars) {
101         this.maxChars = maxChars;
102     }
103
104     /**
105      * Sets the total number of messages to receive in the history.
106      *
107      * @param maxStanzas the total number of messages to receive in the history.
108      */

109     public void setMaxStanzas(int maxStanzas) {
110         this.maxStanzas = maxStanzas;
111     }
112
113     /**
114      * Sets the number of seconds to use to filter the messages received during that time.
115      * In other words, only the messages received in the last "X" seconds will be included in
116      * the history.
117      *
118      * @param seconds the number of seconds to use to filter the messages received during
119      * that time.
120      */

121     public void setSeconds(int seconds) {
122         this.seconds = seconds;
123     }
124
125     /**
126      * Sets the since date to use to filter the messages received during that time.
127      * In other words, only the messages received since the datetime specified will be
128      * included in the history.
129      *
130      * @param since the since date to use to filter the messages received during that time.
131      */

132     public void setSince(Date JavaDoc since) {
133         this.since = since;
134     }
135
136     /**
137      * Returns true if the history has been configured with some values.
138      *
139      * @return true if the history has been configured with some values.
140      */

141     private boolean isConfigured() {
142         return maxChars > -1 || maxStanzas > -1 || seconds > -1 || since != null;
143     }
144
145     /**
146      * Returns the History that manages the amount of discussion history provided on entering a
147      * room.
148      *
149      * @return the History that manages the amount of discussion history provided on entering a
150      * room.
151      */

152     MUCInitialPresence.History getMUCHistory() {
153         // Return null if the history was not properly configured
154
if (!isConfigured()) {
155             return null;
156         }
157         
158         MUCInitialPresence.History mucHistory = new MUCInitialPresence.History();
159         if (maxChars > -1) {
160             mucHistory.setMaxChars(maxChars);
161         }
162         if (maxStanzas > -1) {
163             mucHistory.setMaxStanzas(maxStanzas);
164         }
165         if (seconds > -1) {
166             mucHistory.setSeconds(seconds);
167         }
168         if (since != null) {
169             mucHistory.setSince(since);
170         }
171         return mucHistory;
172     }
173 }
174
Popular Tags