KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > opensubsystems > core > util > Messages


1 /*
2  * Copyright (c) 2003 - 2007 OpenSubsystems s.r.o. Slovak Republic. All rights reserved.
3  *
4  * Project: OpenSubsystems
5  *
6  * $Id: Messages.java,v 1.4 2007/01/07 06:14:00 bastafidli Exp $
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; version 2 of the License.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20  */

21  
22 package org.opensubsystems.core.util;
23
24 import java.util.ArrayList JavaDoc;
25 import java.util.HashMap JavaDoc;
26 import java.util.Iterator JavaDoc;
27 import java.util.List JavaDoc;
28 import java.util.Map JavaDoc;
29
30 /**
31  * Object which collects messages to report to user. The messages might be tied
32  * to categories which then decide how are they displayed to user. Category can
33  * represent the purpose of the message such as error or information or it can
34  * represent screen object such as control, which contains data that caused the
35  * error.
36  *
37  * @version $Id: Messages.java,v 1.4 2007/01/07 06:14:00 bastafidli Exp $
38  * @author Miro Halas
39  * @code.reviewer Miro Halas
40  * @code.reviewed Initial revision
41  */

42 public class Messages
43 {
44    // Constants ////////////////////////////////////////////////////////////////
45

46    /**
47     * Key used to store nonspecific errors.
48     */

49    public static final String JavaDoc NONSPECIFIC_ERRORS = "NONSPECIFIC_ERRORS";
50    
51    /**
52     * Key used to store nonspecific errors.
53     */

54    public static final String JavaDoc ACCESSRIGHT_ERRORS = "ACCESSRIGHT_ERRORS";
55
56    /**
57     * Key used to store all errors.
58     */

59    public static final String JavaDoc ALL_ERRORS = "ALL_ERRORS";
60    
61    /**
62     * Key used to store all errors and info messages.
63     */

64    public static final String JavaDoc ALL = "ALL";
65    
66    /**
67     * Key used to store informations not errors
68     */

69    public static final String JavaDoc INFORMATIONS = "INFORMATIONS";
70
71    // Attributes ///////////////////////////////////////////////////////////////
72

73    /**
74     * Map which collects messages
75     */

76    protected Map JavaDoc m_mpMessages;
77    
78    // Constructors /////////////////////////////////////////////////////////////
79

80    /**
81     * Construct new error object.
82     */

83    public Messages(
84    )
85    {
86       m_mpMessages = new HashMap JavaDoc();
87    }
88    
89    // Accessors ////////////////////////////////////////////////////////////////
90

91    /**
92     * Add new nonspecific message to the list of error messages.
93     *
94     * @param strMessage - message to add
95     */

96    public void addErrorMessage(
97       String JavaDoc strMessage
98    )
99    {
100       addMessage(NONSPECIFIC_ERRORS, strMessage);
101    }
102
103    /**
104     * Add new message for a specific category. The category can represent for
105     * example dialog control for which the error message applies or one of the
106     * constants defined in this class.
107     *
108     * @param messageCategory - category to which the message should be added
109     * @param strMessage - message to add
110     */

111    public void addMessage(
112       Object JavaDoc messageCategory,
113       String JavaDoc strMessage
114    )
115    {
116       List JavaDoc lstMessages;
117       
118       lstMessages = (List JavaDoc) m_mpMessages.get(messageCategory);
119       if (lstMessages == null)
120       {
121          lstMessages = new ArrayList JavaDoc();
122          m_mpMessages.put(messageCategory, lstMessages);
123       }
124       if (!lstMessages.contains(strMessage))
125       {
126          lstMessages.add(strMessage);
127       }
128       
129       // Now add the message to the all errors category in case we want all errors
130
if (!messageCategory.equals(INFORMATIONS))
131       {
132          lstMessages = (List JavaDoc) m_mpMessages.get(ALL_ERRORS);
133          if (lstMessages == null)
134          {
135             lstMessages = new ArrayList JavaDoc();
136             m_mpMessages.put(ALL_ERRORS, lstMessages);
137          }
138          if (!lstMessages.contains(strMessage))
139          {
140             lstMessages.add(strMessage);
141          }
142       }
143
144       // Now add the message to the all category in case we want all of them
145
lstMessages = (List JavaDoc) m_mpMessages.get(ALL);
146       if (lstMessages == null)
147       {
148          lstMessages = new ArrayList JavaDoc();
149          m_mpMessages.put(ALL, lstMessages);
150       }
151       if (!lstMessages.contains(strMessage))
152       {
153          lstMessages.add(strMessage);
154       }
155    }
156    
157    /**
158     * Method to merge Messages
159     *
160     * @param erMessages - Messages to add
161     */

162    public void addMessages(
163       Messages erMessages
164    )
165    {
166       if (erMessages.m_mpMessages != null)
167       {
168          Map.Entry JavaDoc item;
169          List JavaDoc lstMessages;
170          
171          for (Iterator JavaDoc items = erMessages.m_mpMessages.entrySet().iterator();
172               items.hasNext();)
173          {
174             item = (Map.Entry JavaDoc)items.next();
175             lstMessages = (List JavaDoc)m_mpMessages.get(item.getKey());
176             if (lstMessages != null)
177             {
178                lstMessages.addAll((List JavaDoc)item.getValue());
179             }
180             else
181             {
182                m_mpMessages.put(item.getKey(), item.getValue());
183             }
184          }
185       }
186    }
187    
188    /**
189     * Returns list of all error messages.
190     *
191     * @return List - list containing all error messages, may be null
192     */

193    // TODO: For Miro: Reexamine if we need this method
194
public List JavaDoc getAllErrorMessages(
195    )
196    {
197       return getMessages(ALL_ERRORS);
198    }
199    
200    /**
201     * Returns list of all messages.
202     *
203     * @return List - list containing all messages, may be null
204     */

205    // TODO: For Miro: Reexamine if we need this method
206
public List JavaDoc getAllMessages(
207    )
208    {
209       return getMessages(ALL);
210    }
211    
212    /**
213     * Returns list of all info messages.
214     *
215     * @return List - list containing all info messages, may be null
216     */

217    // TODO: For Miro: Reexamine if we need this method
218
public List JavaDoc getInfoMessages(
219    )
220    {
221       return getMessages(INFORMATIONS);
222    }
223    
224
225    /**
226     * Returns list of all nonspecific messages.
227     *
228     * @return List - list containing nonspecific messages, may be null
229     */

230    // TODO: For Miro: Reexamine if we need this method
231
public List JavaDoc getNonSpecificMessages(
232    )
233    {
234       return getMessages(NONSPECIFIC_ERRORS);
235    }
236    
237    /**
238     * Returns String with all messages divided by deliminer.
239     *
240     * @param strDeliminer - deliminer String
241     * @return String - String containing messages for divided by deliminer, may be empty
242     */

243    // TODO: For Miro: Reexamine if we need this method
244
public String JavaDoc getAllErrorMessages(
245       String JavaDoc strDeliminer
246    )
247    {
248       return getMessages(ALL_ERRORS, strDeliminer);
249    }
250
251    /**
252     * Returns list of all messages for a given category.
253     *
254     * @param messageCategory - messages for given category
255     * @return List - list containing messages for given category, may be null
256     */

257    public List JavaDoc getMessages(
258       Object JavaDoc messageCategory
259    )
260    {
261       return (List JavaDoc)m_mpMessages.get(messageCategory);
262    }
263    
264    /**
265     * Returns String with all messages for a given category divided by deliminer.
266     *
267     * @param messageCategory - messages for given category
268     * @param strDeliminer - deliminer String
269     * @return String - String containing messages for given category divided by deliminer
270     * , may be empty
271     */

272    public String JavaDoc getMessages(
273       Object JavaDoc messageCategory,
274       String JavaDoc strDeliminer
275    )
276    {
277       StringBuffer JavaDoc sbHelp = new StringBuffer JavaDoc();
278       // get all messages for category
279
List JavaDoc lstMessages = (List JavaDoc) m_mpMessages.get(messageCategory);
280
281       if (lstMessages != null && lstMessages.size() > 0)
282       {
283          for (Iterator JavaDoc itHelp = lstMessages.iterator(); itHelp.hasNext();)
284          {
285             if (sbHelp.length() > 0 && strDeliminer != null)
286             {
287                sbHelp.append(strDeliminer);
288             }
289             sbHelp.append((String JavaDoc) itHelp.next());
290          }
291       }
292       
293       return sbHelp.toString();
294    }
295 }
296
Popular Tags