From 593a5bea4ea03784af9ec3dfd8adcc2970110588 Mon Sep 17 00:00:00 2001 From: "jia.shao.peng" Date: Fri, 8 Mar 2013 12:06:47 +0000 Subject: libphonenumber v5.4 release. Review URL: https://codereview.appspot.com/7570043 git-svn-id: http://libphonenumber.googlecode.com/svn/trunk@557 ee073f10-1060-11df-b6a4-87a95322a99c --- .../google/i18n/phonenumbers/PhoneNumberUtil.java | 58 +++++++++++---------- .../phonenumbers/data/PhoneNumberMetadataProto_BF | Bin 444 -> 446 bytes .../phonenumbers/data/PhoneNumberMetadataProto_CD | Bin 467 -> 541 bytes .../phonenumbers/data/PhoneNumberMetadataProto_CN | Bin 3505 -> 3553 bytes .../phonenumbers/data/PhoneNumberMetadataProto_CZ | Bin 744 -> 741 bytes .../phonenumbers/data/PhoneNumberMetadataProto_GN | Bin 534 -> 575 bytes .../phonenumbers/data/PhoneNumberMetadataProto_IR | Bin 1123 -> 1129 bytes .../phonenumbers/data/PhoneNumberMetadataProto_JP | Bin 5359 -> 5364 bytes .../phonenumbers/data/PhoneNumberMetadataProto_KR | Bin 1406 -> 1431 bytes .../phonenumbers/data/PhoneNumberMetadataProto_KW | Bin 510 -> 516 bytes .../phonenumbers/data/PhoneNumberMetadataProto_LR | Bin 595 -> 585 bytes .../phonenumbers/data/PhoneNumberMetadataProto_NZ | Bin 866 -> 867 bytes .../phonenumbers/data/PhoneNumberMetadataProto_TT | Bin 568 -> 578 bytes .../phonenumbers/data/PhoneNumberMetadataProto_UG | Bin 589 -> 607 bytes .../phonenumbers/data/PhoneNumberMetadataProto_ZW | Bin 1676 -> 1719 bytes 15 files changed, 31 insertions(+), 27 deletions(-) (limited to 'java/libphonenumber/src/com/google') diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java b/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java index f562e4a..5734a56 100644 --- a/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java +++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java @@ -1203,43 +1203,47 @@ public class PhoneNumberUtil { return number.hasRawInput() ? number.getRawInput() : ""; } - String formattedNumber; + String formattedNumber = ""; // Clear the extension, as that part cannot normally be dialed together with the main number. PhoneNumber numberNoExt = new PhoneNumber().mergeFrom(number).clearExtension(); - PhoneNumberType numberType = getNumberType(numberNoExt); String regionCode = getRegionCodeForCountryCode(countryCallingCode); - if (regionCode.equals("CO") && regionCallingFrom.equals("CO")) { - if (numberType == PhoneNumberType.FIXED_LINE) { + if (regionCallingFrom.equals(regionCode)) { + PhoneNumberType numberType = getNumberType(numberNoExt); + boolean isFixedLineOrMobile = + (numberType == PhoneNumberType.FIXED_LINE) || (numberType == PhoneNumberType.MOBILE) || + (numberType == PhoneNumberType.FIXED_LINE_OR_MOBILE); + // Carrier codes may be needed in some countries. We handle this here. + if (regionCode.equals("CO") && numberType == PhoneNumberType.FIXED_LINE) { formattedNumber = formatNationalNumberWithCarrierCode(numberNoExt, COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX); + } else if (regionCode.equals("BR") && isFixedLineOrMobile) { + formattedNumber = numberNoExt.hasPreferredDomesticCarrierCode() + ? formattedNumber = formatNationalNumberWithPreferredCarrierCode(numberNoExt, "") + // Brazilian fixed line and mobile numbers need to be dialed with a carrier code when + // called within Brazil. Without that, most of the carriers won't connect the call. + // Because of that, we return an empty string here. + : ""; } else { - // E164 doesn't work at all when dialing within Colombia. - formattedNumber = format(numberNoExt, PhoneNumberFormat.NATIONAL); + // For NANPA countries, non-geographical countries, and Mexican fixed line and mobile + // numbers, we output international format for numbers that can be dialed internationally + // as that always works. + if ((countryCallingCode == NANPA_COUNTRY_CODE || + regionCode.equals(REGION_CODE_FOR_NON_GEO_ENTITY) || + // MX fixed line and mobile numbers should always be formatted in international format, + // even when dialed within MX. For national format to work, a carrier code needs to be + // used, and the correct carrier code depends on if the caller and callee are from the + // same local area. It is trickier to get that to work correctly than using + // international format, which is tested to work fine on all carriers. + (regionCode.equals("MX") && isFixedLineOrMobile)) && + canBeInternationallyDialled(numberNoExt)) { + formattedNumber = format(numberNoExt, PhoneNumberFormat.INTERNATIONAL); + } else { + formattedNumber = format(numberNoExt, PhoneNumberFormat.NATIONAL); + } } - } else if (regionCode.equals("PE") && regionCallingFrom.equals("PE")) { - // In Peru, numbers cannot be dialled using E164 format from a mobile phone for Movistar. - // Instead they must be dialled in national format. - formattedNumber = format(numberNoExt, PhoneNumberFormat.NATIONAL); - } else if (regionCode.equals("AE") && regionCallingFrom.equals("AE") && - numberType == PhoneNumberType.UAN) { - // In the United Arab Emirates, numbers with the prefix 600 (UAN numbers) cannot be dialled - // using E164 format. Instead they must be dialled in national format. - formattedNumber = format(numberNoExt, PhoneNumberFormat.NATIONAL); - } else if (regionCode.equals("BR") && regionCallingFrom.equals("BR") && - ((numberType == PhoneNumberType.FIXED_LINE) || (numberType == PhoneNumberType.MOBILE) || - (numberType == PhoneNumberType.FIXED_LINE_OR_MOBILE))) { - formattedNumber = numberNoExt.hasPreferredDomesticCarrierCode() - ? formatNationalNumberWithPreferredCarrierCode(numberNoExt, "") - // Brazilian fixed line and mobile numbers need to be dialed with a carrier code when - // called within Brazil. Without that, most of the carriers won't connect the call. - // Because of that, we return an empty string here. - : ""; } else if (canBeInternationallyDialled(numberNoExt)) { return withFormatting ? format(numberNoExt, PhoneNumberFormat.INTERNATIONAL) : format(numberNoExt, PhoneNumberFormat.E164); - } else { - formattedNumber = (regionCallingFrom.equals(regionCode)) - ? format(numberNoExt, PhoneNumberFormat.NATIONAL) : ""; } return withFormatting ? formattedNumber : normalizeHelper(formattedNumber, DIALLABLE_CHAR_MAPPINGS, diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF index 82942ae..9b9a506 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD index 4c79a92..e79d806 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN index b337fc8..58db068 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ index 84ac0f5..59389cd 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN index 95ff3b7..262cbbd 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR index 5af5d86..08534ee 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP index 9f73300..ada4eeb 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR index d8344af..cb17c76 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW index 75d87e5..e475245 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR index 0f2380c..bb25224 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ index d67fad0..4f7a0b1 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT index f15107f..9e92e1a 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG index 039084f..284f387 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG differ diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW index 8efafcf..a5baf97 100644 Binary files a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW differ -- cgit v1.2.3