Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
MessageList |
|
| 1.4545454545454546;1,455 |
1 | 0 | /** |
2 | * 2007, Digitalis Informatica. All rights reserved. Distribuicao e Gestao de Informatica, Lda. Estrada de Paco de Arcos | |
3 | * num.9 - Piso -1 2780-666 Paco de Arcos Telefone: (351) 21 4408990 Fax: (351) 21 4408999 http://www.digitalis.pt | |
4 | */ | |
5 | ||
6 | package pt.digitalis.dif.dem.objects.messages; | |
7 | ||
8 | import java.util.ArrayList; | |
9 | import java.util.List; | |
10 | import java.util.Map; | |
11 | ||
12 | import pt.digitalis.dif.startup.DIFGeneralConfigurationParameters; | |
13 | import pt.digitalis.dif.utils.ObjectFormatter; | |
14 | import pt.digitalis.utils.common.collections.CaseInsensitiveHashMap; | |
15 | ||
16 | /** | |
17 | * Represents a view message with language translations and persistence information | |
18 | * | |
19 | * @author Pedro Viegas <a href="mailto:pviegas@digitalis.pt">pviegas@digitalis.pt</a><br/> | |
20 | * @author Rodrigo Goncalves <a href="mailto:rgoncalves@digitalis.pt">rgoncalves@digitalis.pt</a><br/> | |
21 | * @created Nov 2, 2007 | |
22 | */ | |
23 | 0 | public class MessageList { |
24 | ||
25 | /** The messages */ | |
26 | 0 | private Map<String, MessageTranslations> messages = new CaseInsensitiveHashMap<MessageTranslations>(); |
27 | ||
28 | /** | |
29 | * Adds a message to the list. Uses the default language | |
30 | * | |
31 | * @param id | |
32 | * the message id | |
33 | * @param message | |
34 | * the message | |
35 | */ | |
36 | public void addMessage(String id, Message message) | |
37 | { | |
38 | 0 | addMessageTranslation(id, DIFGeneralConfigurationParameters.getInstance().getDefaultLanguage(), message); |
39 | 0 | } |
40 | ||
41 | /** | |
42 | * Adds a message to the list. Note: It overrides the current translations if they exist. | |
43 | * | |
44 | * @param id | |
45 | * the message id | |
46 | * @param translations | |
47 | * the translations list | |
48 | */ | |
49 | public void addMessage(String id, MessageTranslations translations) | |
50 | { | |
51 | 0 | messages.put(id, translations); |
52 | 0 | } |
53 | ||
54 | /** | |
55 | * Adds a message to the list. Uses the default language and no custom message | |
56 | * | |
57 | * @param id | |
58 | * the message id | |
59 | * @param message | |
60 | * the message | |
61 | */ | |
62 | public void addMessage(String id, String message) | |
63 | { | |
64 | 0 | addMessage(id, new Message(message)); |
65 | 0 | } |
66 | ||
67 | /** | |
68 | * Adds a message list to the list. All identical ids will override the current ones. | |
69 | * | |
70 | * @param list | |
71 | * the list of message translations to add | |
72 | */ | |
73 | public void addMessageList(MessageList list) | |
74 | { | |
75 | 0 | for (String id: list.getMessageIDs()) |
76 | { | |
77 | 0 | messages.put(id, list.getMessageTranslations(id)); |
78 | } | |
79 | 0 | } |
80 | ||
81 | /** | |
82 | * Adds a message translation to the list | |
83 | * | |
84 | * @param id | |
85 | * @param language | |
86 | * @param message | |
87 | */ | |
88 | public void addMessageTranslation(String id, String language, Message message) | |
89 | { | |
90 | 0 | MessageTranslations translations = messages.get(id); |
91 | 0 | language = language.toLowerCase(); |
92 | ||
93 | 0 | if (translations == null) |
94 | { | |
95 | 0 | translations = new MessageTranslations(); |
96 | 0 | translations.addTranslation(language, message); |
97 | ||
98 | 0 | messages.put(id, translations); |
99 | ||
100 | } | |
101 | else | |
102 | 0 | translations.addTranslation(language, message); |
103 | 0 | } |
104 | ||
105 | /** | |
106 | * Checks if a given message is contained on the list. | |
107 | * | |
108 | * @param messageID | |
109 | * the message ID | |
110 | * @return T if the message with the given ID is contained within the list, F otherwise | |
111 | */ | |
112 | public boolean containsMessageWithID(String messageID) | |
113 | { | |
114 | 0 | return this.messages.containsKey(messageID); |
115 | } | |
116 | ||
117 | /** | |
118 | * Gets the list of messages IDs | |
119 | * | |
120 | * @return the message translations | |
121 | */ | |
122 | public List<String> getMessageIDs() | |
123 | { | |
124 | 0 | return new ArrayList<String>(messages.keySet()); |
125 | } | |
126 | ||
127 | /** | |
128 | * Gets the list of messages and their default translation message | |
129 | * | |
130 | * @return the message map | |
131 | */ | |
132 | public Map<String, String> getMessages() | |
133 | { | |
134 | 0 | return getMessages(DIFGeneralConfigurationParameters.getInstance().getDefaultLanguage()); |
135 | } | |
136 | ||
137 | /** | |
138 | * Gets the list of messages and their default message translation to the given language | |
139 | * | |
140 | * @param language | |
141 | * the language desired | |
142 | * @return the message map | |
143 | */ | |
144 | public Map<String, String> getMessages(String language) | |
145 | { | |
146 | ||
147 | 0 | Map<String, String> messageValues = new CaseInsensitiveHashMap<String>(); |
148 | ||
149 | 0 | for (String id: getMessageIDs()) |
150 | { | |
151 | 0 | if ((messages.get(id) != null) && (messages.get(id).getMessage(language) != null)) |
152 | 0 | messageValues.put(id, messages.get(id).getMessage(language).getMessage()); |
153 | else | |
154 | 0 | messageValues.put(id, null); |
155 | ||
156 | } | |
157 | ||
158 | 0 | return messageValues; |
159 | } | |
160 | ||
161 | /** | |
162 | * Gets the translations for a given message | |
163 | * | |
164 | * @param id | |
165 | * the id of the message to search | |
166 | * @return the message translations for the given message id | |
167 | */ | |
168 | public MessageTranslations getMessageTranslations(String id) | |
169 | { | |
170 | 0 | return messages.get(id); |
171 | } | |
172 | ||
173 | /** | |
174 | * @see java.lang.Object#toString() | |
175 | */ | |
176 | @Override | |
177 | public String toString() | |
178 | { | |
179 | 0 | ObjectFormatter formatter = new ObjectFormatter(); |
180 | ||
181 | 0 | formatter.addItem("Messages", messages); |
182 | ||
183 | 0 | return formatter.getFormatedObject(); |
184 | } | |
185 | } |