From: <ssk...@vh...> - 2005-12-20 18:55:08
|
Author: sskracic Date: 2005-12-20 19:51:56 +0100 (Tue, 20 Dec 2005) New Revision: 1070 Modified: contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/MobifiSMSProvider.java contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/SMSEmailProvider.java contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/VipSMSProvider.java contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/ui/ConsultationAlertForm.java Log: Changed interface of SMSEmailProvider so that number validation is rid of Bebop legacy. The decision to modify passed in StringBuffer is a bit clumsy, though. Modified: contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/MobifiSMSProvider.java =================================================================== --- contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/MobifiSMSProvider.java 2005-12-20 17:51:16 UTC (rev 1069) +++ contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/MobifiSMSProvider.java 2005-12-20 18:51:56 UTC (rev 1070) @@ -1,7 +1,8 @@ package com.arsdigita.camden.cms.contenttypes; -import com.arsdigita.bebop.parameters.ParameterData; import com.arsdigita.util.Assert; +import java.util.List; +import java.util.ArrayList; public class MobifiSMSProvider implements SMSEmailProvider { @@ -21,12 +22,12 @@ /** * Performs a mobile number validation for the supplied number. - * Errors, if any, will be attached to the supplied ParameterData object. - * The number will be normalised, ie. will start with +44 - * @param data ParameterData for the mobile number UI widget + * @param mobileNumber a number we want to validate + * @return list of error GlobalizedMessages. List is empty if the number is valid. */ - public void validateNumber(ParameterData data) { - String number = data.getValue().toString().replaceAll("[^0-9]", ""); + public List validateNumber(StringBuffer mobileNumber) { + List errors = new ArrayList(); + String number = mobileNumber.toString().replaceAll("[^0-9]", ""); // number is valid if it starts with 447 or 07 or 7 // First strip the leading country prefix, if exists number = number.replaceFirst("^44", ""); @@ -36,11 +37,11 @@ // It must be at least (or exactly?) 10 digits in length // 7789 xxx xxx if (!number.startsWith("7") || number.length() < 10) { - data.addError((String)ConsultationUtil. - globalize("invalid_mobile").localize()); + errors.add(ConsultationUtil.globalize("invalid_mobile")); } else { - data.setValue("+44" + number); + mobileNumber.replace(0, mobileNumber.length(), "+44" + number); } + return errors; } } Modified: contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/SMSEmailProvider.java =================================================================== --- contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/SMSEmailProvider.java 2005-12-20 17:51:16 UTC (rev 1069) +++ contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/SMSEmailProvider.java 2005-12-20 18:51:56 UTC (rev 1070) @@ -1,6 +1,6 @@ package com.arsdigita.camden.cms.contenttypes; -import com.arsdigita.bebop.parameters.ParameterData; +import java.util.List; public interface SMSEmailProvider { @@ -15,9 +15,10 @@ /** * Performs a mobile number validation for the supplied number. - * Errors, if any, will be attached to the supplied ParameterData object. - * @param data ParameterData for the mobile number UI widget + * The input mobileNumber can be altered during the validation. + * @param mobileNumber a number we want to validate. + * @return list of error GlobalizedMessages. List is empty if the number is valid. */ - void validateNumber(ParameterData data); + List validateNumber(StringBuffer mobileNumber); } Modified: contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/VipSMSProvider.java =================================================================== --- contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/VipSMSProvider.java 2005-12-20 17:51:16 UTC (rev 1069) +++ contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/VipSMSProvider.java 2005-12-20 18:51:56 UTC (rev 1070) @@ -1,7 +1,8 @@ package com.arsdigita.camden.cms.contenttypes; -import com.arsdigita.bebop.parameters.ParameterData; import com.arsdigita.util.Assert; +import java.util.List; +import java.util.ArrayList; /** * Used for testing only, since it accepts only @@ -26,12 +27,12 @@ /** * Performs a mobile number validation for the supplied number. - * Errors, if any, will be attached to the supplied ParameterData object. - * The number will be normalised, ie. will start with +385 - * @param data ParameterData for the mobile number UI widget + * @param mobileNumber a number we want to validate + * @return list of error GlobalizedMessages. List is empty if the number is valid. */ - public void validateNumber(ParameterData data) { - String number = data.getValue().toString().replaceAll("[^0-9]", ""); + public List validateNumber(StringBuffer mobileNumber) { + List errors = new ArrayList(); + String number = mobileNumber.toString().replaceAll("[^0-9]", ""); // number is valid if it starts with VIP prefix // First strip the leading country prefix, if exists number = number.replaceFirst("^385", ""); @@ -41,11 +42,11 @@ // It must be at least (or exactly?) 9 digits in length // 91 xxx xx xx if (!number.startsWith("91") || number.length() < 9) { - data.addError((String)ConsultationUtil. - globalize("invalid_mobile").localize()); + errors.add(ConsultationUtil.globalize("invalid_mobile")); } else { - data.setValue("+385" + number); + mobileNumber.replace(0, mobileNumber.length(), "+385" + number); } + return errors; } } Modified: contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/ui/ConsultationAlertForm.java =================================================================== --- contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/ui/ConsultationAlertForm.java 2005-12-20 17:51:16 UTC (rev 1069) +++ contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/ui/ConsultationAlertForm.java 2005-12-20 18:51:56 UTC (rev 1070) @@ -45,6 +45,8 @@ import com.arsdigita.web.URL; import com.arsdigita.web.Web; import java.util.Date; +import java.util.Iterator; +import java.util.List; import java.util.TooManyListenersException; import javax.mail.MessagingException; @@ -179,7 +181,13 @@ if (data == null || data.getValue().toString().trim().length() == 0) { return; } - ConsultationUtil.getConfig().getSMSProvider().validateNumber(data); + StringBuffer number = new StringBuffer(data.getValue().toString()); + List errors = ConsultationUtil.getConfig().getSMSProvider().validateNumber(number); + for (Iterator it=errors.iterator(); it.hasNext(); ) { + GlobalizedMessage msg = (GlobalizedMessage) it.next(); + data.addError( (String) msg.localize()); + } + data.setValue(number.toString()); } }); addField(ConsultationUtil.globalize("mobile"), m_mobile); |