1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.primefaces.extensions.util;
23
24 import javax.faces.application.FacesMessage;
25 import javax.faces.convert.ConverterException;
26
27 import org.primefaces.util.LangUtils;
28
29 import com.google.i18n.phonenumbers.NumberParseException;
30 import com.google.i18n.phonenumbers.PhoneNumberUtil;
31 import com.google.i18n.phonenumbers.Phonenumber;
32
33
34
35
36
37 public class PhoneNumberUtilWrapper {
38
39 private static final String MESSAGE_INVALID_VALUE_KEY = "primefaces.extensions.inputphone.INVALID";
40
41 private PhoneNumberUtilWrapper() {
42
43 }
44
45 public static void validate(final String number, final String country, final String validatorMessage) {
46 try {
47 final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
48 final Phonenumber.PhoneNumber phoneNumber = phoneNumberUtil.parse(number, country);
49 if (!phoneNumberUtil.isValidNumber(phoneNumber)) {
50 throw getInvalidValueConverterException(validatorMessage);
51 }
52 }
53 catch (final NumberParseException e) {
54 throw getInvalidValueConverterException(validatorMessage);
55 }
56 }
57
58 private static ConverterException getInvalidValueConverterException(final String validatorMessage) {
59 return new ConverterException(getInvalidValueFacesMessage(validatorMessage));
60 }
61
62 private static FacesMessage getInvalidValueFacesMessage(final String validatorMessage) {
63 if (LangUtils.isEmpty(validatorMessage)) {
64 return MessageFactory.getMessage(MESSAGE_INVALID_VALUE_KEY, FacesMessage.SEVERITY_ERROR);
65 }
66 return new FacesMessage(FacesMessage.SEVERITY_ERROR, validatorMessage, null);
67 }
68
69 }