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