KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > riotfamily > forms > support > AbstractBindingResultSupport


1 /* ***** BEGIN LICENSE BLOCK *****
2  * Version: MPL 1.1
3  * The contents of this file are subject to the Mozilla Public License Version
4  * 1.1 (the "License"); you may not use this file except in compliance with
5  * the License. You may obtain a copy of the License at
6  * http://www.mozilla.org/MPL/
7  *
8  * Software distributed under the License is distributed on an "AS IS" basis,
9  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
10  * for the specific language governing rights and limitations under the
11  * License.
12  *
13  * The Original Code is Riot.
14  *
15  * The Initial Developer of the Original Code is
16  * Neteye GmbH.
17  * Portions created by the Initial Developer are Copyright (C) 2006
18  * the Initial Developer. All Rights Reserved.
19  *
20  * Contributor(s):
21  * Felix Gnass [fgnass at neteye dot de]
22  *
23  * ***** END LICENSE BLOCK ***** */

24 package org.riotfamily.forms.support;
25
26 import java.util.Collections JavaDoc;
27 import java.util.HashMap JavaDoc;
28 import java.util.Iterator JavaDoc;
29 import java.util.LinkedList JavaDoc;
30 import java.util.List JavaDoc;
31 import java.util.Map JavaDoc;
32
33 import org.springframework.validation.BindingResult;
34 import org.springframework.validation.Errors;
35 import org.springframework.validation.FieldError;
36 import org.springframework.validation.MessageCodesResolver;
37 import org.springframework.validation.ObjectError;
38
39 public abstract class AbstractBindingResultSupport implements BindingResult {
40     
41     private final List JavaDoc errors = new LinkedList JavaDoc();
42
43     private final String JavaDoc objectName;
44
45     private MessageCodesResolver messageCodesResolver;
46     
47     protected AbstractBindingResultSupport(String JavaDoc objectName) {
48         this.objectName = objectName;
49     }
50
51     public Map JavaDoc getModel() {
52         Map JavaDoc model = new HashMap JavaDoc();
53         // Errors instance, even if no errors.
54
model.put(MODEL_KEY_PREFIX + getObjectName(), this);
55         // Mapping from name to target object.
56
model.put(getObjectName(), getTarget());
57         return model;
58     }
59
60     public void recordSuppressedField(String JavaDoc fieldName) {
61     }
62
63     public String JavaDoc[] getSuppressedFields() {
64         return null;
65     }
66
67     public void addError(ObjectError error) {
68         this.errors.add(error);
69     }
70     
71     public void removeError(ObjectError error) {
72         this.errors.remove(error);
73     }
74     
75     public void removeErrors(List JavaDoc errors) {
76         for (int i = 0; i < errors.size(); i++) {
77             removeError((ObjectError) errors.get(i));
78         }
79     }
80     
81     public String JavaDoc[] resolveMessageCodes(String JavaDoc errorCode) {
82         return getMessageCodesResolver().resolveMessageCodes(errorCode, getObjectName());
83     }
84
85
86     public String JavaDoc[] resolveMessageCodes(String JavaDoc errorCode, String JavaDoc field) {
87         return getMessageCodesResolver().resolveMessageCodes(errorCode, getObjectName(), field, null);
88     }
89
90     public String JavaDoc getObjectName() {
91         return objectName;
92     }
93     
94     public void setMessageCodesResolver(MessageCodesResolver messageCodesResolver) {
95         this.messageCodesResolver = messageCodesResolver;
96     }
97
98     public MessageCodesResolver getMessageCodesResolver() {
99         return messageCodesResolver;
100     }
101
102     public void setNestedPath(String JavaDoc nestedPath) {
103     }
104
105     public String JavaDoc getNestedPath() {
106         return null;
107     }
108
109     public void pushNestedPath(String JavaDoc subPath) {
110     }
111
112     public void popNestedPath() throws IllegalStateException JavaDoc {
113     }
114
115     public void reject(String JavaDoc errorCode) {
116         reject(errorCode, null, null);
117     }
118
119     public void reject(String JavaDoc errorCode, String JavaDoc defaultMessage) {
120         reject(errorCode, null, defaultMessage);
121     }
122
123     public void reject(String JavaDoc errorCode, Object JavaDoc[] errorArgs, String JavaDoc defaultMessage) {
124         addError(new ObjectError(getObjectName(), resolveMessageCodes(errorCode), errorArgs, defaultMessage));
125     }
126
127     public void rejectValue(String JavaDoc field, String JavaDoc errorCode) {
128         rejectValue(field, errorCode, null, null);
129     }
130
131     public void rejectValue(String JavaDoc field, String JavaDoc errorCode, String JavaDoc defaultMessage) {
132         rejectValue(field, errorCode, null, defaultMessage);
133     }
134
135     public void rejectValue(String JavaDoc field, String JavaDoc errorCode, Object JavaDoc[] errorArgs, String JavaDoc defaultMessage) {
136         FieldError fe = new FieldError(
137                 getObjectName(), field, null, false,
138                 resolveMessageCodes(errorCode, field), errorArgs, defaultMessage);
139         addError(fe);
140     }
141
142     public void addAllErrors(Errors errors) {
143         this.errors.addAll(errors.getAllErrors());
144     }
145
146     public boolean hasErrors() {
147         return !this.errors.isEmpty();
148     }
149     
150     public int getErrorCount() {
151         return this.errors.size();
152     }
153
154     public List JavaDoc getAllErrors() {
155         return Collections.unmodifiableList(this.errors);
156     }
157
158     public boolean hasGlobalErrors() {
159         return (getGlobalErrorCount() > 0);
160     }
161
162     public int getGlobalErrorCount() {
163         return getGlobalErrors().size();
164     }
165
166     public List JavaDoc getGlobalErrors() {
167         List JavaDoc result = new LinkedList JavaDoc();
168         for (Iterator JavaDoc it = this.errors.iterator(); it.hasNext();) {
169             Object JavaDoc error = it.next();
170             if (!(error instanceof FieldError)) {
171                 result.add(error);
172             }
173         }
174         return Collections.unmodifiableList(result);
175     }
176     
177     public ObjectError getGlobalError() {
178         for (Iterator JavaDoc it = this.errors.iterator(); it.hasNext();) {
179             ObjectError objectError = (ObjectError) it.next();
180             if (!(objectError instanceof FieldError)) {
181                 return objectError;
182             }
183         }
184         return null;
185     }
186
187     public boolean hasFieldErrors() {
188         return (getFieldErrorCount() > 0);
189     }
190
191     public int getFieldErrorCount() {
192         return getFieldErrors().size();
193     }
194
195     public List JavaDoc getFieldErrors() {
196         List JavaDoc result = new LinkedList JavaDoc();
197         for (Iterator JavaDoc it = this.errors.iterator(); it.hasNext();) {
198             Object JavaDoc error = it.next();
199             if (error instanceof FieldError) {
200                 result.add(error);
201             }
202         }
203         return Collections.unmodifiableList(result);
204     }
205
206     public FieldError getFieldError() {
207         for (Iterator JavaDoc it = this.errors.iterator(); it.hasNext();) {
208             Object JavaDoc error = it.next();
209             if (error instanceof FieldError) {
210                 return (FieldError) error;
211             }
212         }
213         return null;
214     }
215
216     public boolean hasFieldErrors(String JavaDoc field) {
217         return (getFieldErrorCount(field) > 0);
218     }
219
220     public int getFieldErrorCount(String JavaDoc field) {
221         return getFieldErrors(field).size();
222     }
223
224     public List JavaDoc getFieldErrors(String JavaDoc field) {
225         List JavaDoc result = new LinkedList JavaDoc();
226         
227         for (Iterator JavaDoc it = this.errors.iterator(); it.hasNext();) {
228             Object JavaDoc error = it.next();
229             if (error instanceof FieldError && isMatchingFieldError(field, ((FieldError) error))) {
230                 result.add(error);
231             }
232         }
233         return Collections.unmodifiableList(result);
234     }
235
236     public FieldError getFieldError(String JavaDoc field) {
237         for (Iterator JavaDoc it = this.errors.iterator(); it.hasNext();) {
238             Object JavaDoc error = it.next();
239             if (error instanceof FieldError) {
240                 FieldError fe = (FieldError) error;
241                 if (isMatchingFieldError(field, fe)) {
242                     return fe;
243                 }
244             }
245         }
246         return null;
247     }
248
249     public Object JavaDoc getFieldValue(String JavaDoc field) {
250         throw new UnsupportedOperationException JavaDoc();
251     }
252     
253     public Class JavaDoc getFieldType(String JavaDoc field) {
254         throw new UnsupportedOperationException JavaDoc();
255     }
256     
257     protected boolean isMatchingFieldError(String JavaDoc field, FieldError fieldError) {
258         return (field.equals(fieldError.getField()) ||
259                 (field.endsWith("*") && fieldError.getField().startsWith(field.substring(0, field.length() - 1))));
260     }
261
262 }
263
Popular Tags