1 16 package org.apache.myfaces.custom.creditcardvalidator; 17 18 import org.apache.myfaces.util.MessageUtils; 19 20 import javax.faces.application.FacesMessage; 21 import javax.faces.component.StateHolder; 22 import javax.faces.component.UIComponent; 23 import javax.faces.context.FacesContext; 24 import javax.faces.validator.Validator; 25 import javax.faces.validator.ValidatorException; 26 27 51 public class CreditCardValidator implements Validator,StateHolder { 52 53 56 public static final String VALIDATOR_ID = "org.apache.myfaces.validator.CreditCard"; 57 58 62 public static final String CREDITCARD_MESSAGE_ID = "org.apache.myfaces.Creditcard.INVALID"; 63 64 private static final boolean DEFAULT_AMEX = true; 66 private static final boolean DEFAULT_DISCOVER = true; 67 private static final boolean DEFAULT_MASTERCARD = true; 68 private static final boolean DEFAULT_VISA = true; 69 private static final boolean DEFAULT_NONE = false; 70 71 72 public CreditCardValidator(){ 73 } 74 75 private Boolean _amex = null; 77 private Boolean _discover = null; 78 private Boolean _mastercard = null; 79 private Boolean _visa = null; 80 private Boolean _none = null; 81 82 private boolean _transient = false; 84 85 private int _initSum = 0; 87 88 private org.apache.commons.validator.CreditCardValidator creditCardValidator = null; 89 90 93 public void validate( 94 FacesContext facesContext, 95 UIComponent uiComponent, 96 Object value) 97 throws ValidatorException { 98 99 if (facesContext == null) throw new NullPointerException ("facesContext"); 100 if (uiComponent == null) throw new NullPointerException ("uiComponent"); 101 102 if (value == null) 103 { 104 return; 105 } 106 initValidator(); 107 if (!this.creditCardValidator.isValid(value.toString())){ 108 Object [] args = {value.toString()}; 109 throw new ValidatorException(MessageUtils.getMessage(FacesMessage.SEVERITY_ERROR,CREDITCARD_MESSAGE_ID, args)); 110 } 111 } 112 113 114 116 119 120 private void initValidator() { 121 if(isNone()){ 122 creditCardValidator = new org.apache.commons.validator.CreditCardValidator(org.apache.commons.validator.CreditCardValidator.NONE); 124 } 125 else{ 126 computeValidators(); 127 creditCardValidator = new org.apache.commons.validator.CreditCardValidator(_initSum); 128 } 129 } 130 131 134 private void computeValidators(){ 135 if(isAmex()){ 136 this._initSum= org.apache.commons.validator.CreditCardValidator.AMEX + _initSum; 137 } 138 if(isVisa()){ 139 this._initSum= org.apache.commons.validator.CreditCardValidator.VISA+ _initSum; 140 } 141 if(isMastercard()){ 142 this._initSum= org.apache.commons.validator.CreditCardValidator.MASTERCARD+ _initSum; 143 } 144 if(isDiscover()){ 145 this._initSum= org.apache.commons.validator.CreditCardValidator.DISCOVER+ _initSum; 146 } 147 } 148 149 public boolean isAmex() { 151 if (_amex!= null) return _amex.booleanValue(); 152 return _amex != null ? _amex.booleanValue() : DEFAULT_AMEX; 153 } 154 155 public boolean isDiscover() { 156 if (_discover!= null) return _discover.booleanValue(); 157 return _discover != null ? _discover.booleanValue() : DEFAULT_DISCOVER; 158 } 159 160 public boolean isMastercard() { 161 if (_mastercard!= null) return _mastercard.booleanValue(); 162 return _mastercard != null ? _mastercard.booleanValue() : DEFAULT_MASTERCARD; 163 } 164 165 public boolean isNone() { 166 if (_none!= null) return _none.booleanValue(); 167 return _none != null ? _none.booleanValue() : DEFAULT_NONE; 168 } 169 170 public boolean isVisa() { 171 if (_visa!= null) return _visa.booleanValue(); 172 return _visa != null ? _visa.booleanValue() : DEFAULT_VISA; 173 } 174 175 public void setAmex(boolean b) { 176 _amex = Boolean.valueOf(b); 177 } 178 179 public void setDiscover(boolean b) { 180 _discover = Boolean.valueOf(b); 181 } 182 183 public void setMastercard(boolean b) { 184 _mastercard = Boolean.valueOf(b); 185 } 186 187 public void setNone(boolean b) { 188 _none = Boolean.valueOf(b); 189 } 190 191 public void setVisa(boolean b) { 192 _visa = Boolean.valueOf(b); 193 } 194 195 196 198 201 public Object saveState(FacesContext context) { 202 Object values[] = new Object [6]; 203 values[0] = _amex; 204 values[1] = _discover; 205 values[2] = _mastercard; 206 values[3] = _visa; 207 values[4] = _none; 208 return values; 209 } 210 211 214 public void restoreState(FacesContext context, Object state) { 215 Object values[] = (Object [])state; 216 _amex = ((Boolean ) values[0]); 217 _discover = ((Boolean ) values[1]); 218 _mastercard = ((Boolean ) values[2]); 219 _visa = ((Boolean ) values[3]); 220 _none = ((Boolean ) values[4]); 221 } 222 223 226 public boolean isTransient() { 227 return _transient; 228 } 229 230 233 public void setTransient(boolean newTransientValue) { 234 this._transient = newTransientValue; 235 } 236 } 237 | Popular Tags |