1 package org.apache.turbine.util;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import java.util.Hashtable;
25 import java.util.Iterator;
26 import java.util.List;
27 import java.util.Vector;
28
29
30
31
32
33
34
35
36
37 public class FormMessages
38 {
39 private final Hashtable<String, Vector<String>> forms_messages;
40 private final Hashtable<String, Vector<String>> fields_messages;
41 private final Hashtable<String, Vector<String>> messages_fields;
42 private final Hashtable<String, Vector<String>> forms_fields;
43
44
45
46
47 public FormMessages()
48 {
49 forms_messages = new Hashtable<String, Vector<String>>();
50 fields_messages = new Hashtable<String, Vector<String>>();
51 messages_fields = new Hashtable<String, Vector<String>>();
52 forms_fields = new Hashtable<String, Vector<String>>();
53 }
54
55
56
57
58
59
60
61
62
63 public void setMessage(String formName,
64 String fieldName,
65 long returnCode)
66 {
67 setMessage(formName, fieldName, String.valueOf(returnCode));
68 }
69
70
71
72
73
74
75
76
77
78 public void setMessage(String formName,
79 String fieldName,
80 String messageName)
81 {
82 fieldName = formName + "-" + fieldName;
83 addValue(forms_messages, formName, messageName);
84 addValue(fields_messages, fieldName, messageName);
85 addValue(messages_fields, messageName, fieldName);
86 addValue(forms_fields, formName, fieldName);
87 }
88
89
90
91
92
93
94
95
96
97 private void addValue(Hashtable<String, Vector<String>> table,
98 String key,
99 String value)
100 {
101 Vector<String> values;
102
103 if (!table.containsKey(key))
104 {
105 values = new Vector<String>();
106 values.addElement(value);
107 table.put(key, values);
108 }
109 else
110 {
111 values = table.get(key);
112 if (!values.contains(value))
113 values.addElement(value);
114 }
115 }
116
117
118
119
120
121
122
123
124 private final Vector<String> getValues(Hashtable<String, Vector<String>> table, String key)
125 {
126 return table.get(key);
127 }
128
129
130
131
132
133
134
135 public FormMessage[] getFormMessages(String formName)
136 {
137 Vector<String> messages, fields;
138 String messageName, fieldName;
139 messages = getValues(forms_messages, formName);
140 if (messages != null)
141 {
142 FormMessage[] result = new FormMessage[messages.size()];
143 for (int i = 0; i < messages.size(); i++)
144 {
145 result[i] = new FormMessage(formName);
146 messageName = messages.elementAt(i);
147 result[i].setMessage(messageName);
148 fields = getValues(messages_fields, messageName);
149 for (int j = 0; j < fields.size(); j++)
150 {
151 fieldName = fields.elementAt(j);
152 if (formHasField(formName, fieldName))
153 {
154 result[i].setFieldName(fieldName);
155 }
156 }
157 }
158 return result;
159 }
160 return null;
161 }
162
163
164
165
166
167
168
169
170 public FormMessage[] getFormMessages(String formName, String fieldName)
171 {
172 String key = formName + "-" + fieldName;
173
174 Vector<String> messages = getValues(fields_messages, key);
175 String messageName;
176
177 if (messages != null)
178 {
179 FormMessage[] result = new FormMessage[messages.size()];
180 for (int i = 0; i < messages.size(); i++)
181 {
182 result[i] = new FormMessage(formName, fieldName);
183 messageName = messages.elementAt(i);
184 result[i].setMessage(messageName);
185 }
186 return result;
187 }
188 return null;
189 }
190
191
192
193
194
195
196
197
198 private boolean formHasField(String formName,
199 String fieldName)
200 {
201 List<String> fields = getValues(forms_fields, formName);
202 for (Iterator<String> iter = fields.iterator(); iter.hasNext();)
203 {
204 if (fieldName.equals(iter.next().toString()))
205 {
206 return true;
207 }
208 }
209 return false;
210 }
211 }