1 7 package com.inversoft.verge.examples.madlib; 8 9 10 import java.text.ParseException ; 11 import java.text.SimpleDateFormat ; 12 import java.util.Map ; 13 14 import com.inversoft.error.BasicError; 15 import com.inversoft.error.ErrorRegistry; 16 import com.inversoft.error.PropertyError; 17 import com.inversoft.verge.mvc.controller.Action; 18 import com.inversoft.verge.mvc.validator.Validator; 19 import com.inversoft.verge.util.RequestContext; 20 import com.inversoft.verge.util.WebBeanProperty; 21 22 23 32 public class MadLibValidator implements Validator { 33 34 37 public static final String ERROR_BUNDLE = 38 "com.inversoft.verge.examples.madlib.madlib-errors"; 39 40 48 public boolean validate(Map modelObjects, Action action) { 49 MadLibBean mb = (MadLibBean) modelObjects.get("madLibBean"); 50 RequestContext requestContext = action.getRequestContext(); 51 MadLib madlib = mb.getMadLib(); 52 boolean ret = true; 53 boolean oneNull = false; 54 55 int numbers = madlib.getNumberOfNumbers(); 57 for (int i = 0; i < numbers; i++) { 58 if (mb.getNumber(i) == null) { 59 StringBuffer property = new StringBuffer (); 60 property.append("madLibBean.number[").append(i).append("]"); 61 requestContext.addError(new PropertyError(property.toString())); 62 ret = false; 63 oneNull = true; 64 } 65 } 66 67 int words = madlib.getNumberOfWords(); 69 for (int i = 0; i < words; i++) { 70 if (mb.getWord(i) == null) { 71 StringBuffer property = new StringBuffer (); 72 property.append("madLibBean.word[").append(i).append("]"); 73 requestContext.addError(new PropertyError(property.toString())); 74 ret = false; 75 oneNull = true; 76 } 77 } 78 79 if (oneNull) { 81 BasicError error = ErrorRegistry.getBasicError(ERROR_BUNDLE, "input", 82 null, this); 83 requestContext.addError(error); 84 } 85 86 MadLibFillin[] fillins = madlib.getDisplayMadLibFillins(); 88 SimpleDateFormat sdf = new SimpleDateFormat (); 89 String format; 90 int index; 91 boolean formatInvalid = false; 92 for (int i = 0; i < fillins.length; i++) { 93 format = fillins[i].getFormat(); 94 index = fillins[i].getIndex(); 95 96 if (format != null) { 97 sdf.applyPattern(format); 98 99 try { 100 sdf.parse(mb.getWord(index)); 101 } catch (ParseException pe) { 102 StringBuffer property = new StringBuffer (); 105 property.append("madLibBean.word[").append(index).append("]"); 106 107 PropertyError error = new PropertyError(property.toString()); 108 requestContext.addError(error); 109 ret = false; 110 formatInvalid = true; 111 } 112 } 113 } 114 115 if (formatInvalid) { 117 BasicError error = ErrorRegistry.getBasicError(ERROR_BUNDLE, "format", 118 null, this); 119 requestContext.addError(error); 120 } 121 122 if (!ret) { 124 BasicError error = ErrorRegistry.getBasicError(ERROR_BUNDLE, "overall", 125 null, this); 126 requestContext.addError(error); 127 } 128 129 return ret; 130 } 131 132 141 public void handleConversion(Object model, WebBeanProperty property, 142 Action action) { 143 PropertyError error = new PropertyError(property.getFullName()); 144 RequestContext requestContext = action.getRequestContext(); 145 requestContext.addError(error); 146 } 147 }
| Popular Tags
|