public SetExampleNumber ( string value ) : Builder | ||
value | string | |
return | Builder |
/** * Processes a phone number description element from the XML file and returns it as a * PhoneNumberDesc. If the description element is a fixed line or mobile number, the parent * description will be used to fill in the whole element if necessary, or any components that are * missing. For all other types, the parent description will only be used to fill in missing * components if the type has a partial definition. For example, if no "tollFree" element exists, * we assume there are no toll free numbers for that locale, and return a phone number description * with "NA" for both the national and possible number patterns. * * @param generalDesc a generic phone number description that will be used to fill in missing * parts of the description * @param countryElement the XML element representing all the country information * @param numberType the name of the number type, corresponding to the appropriate tag in the XML * file with information about that type * @return complete description of that phone number type */ public static PhoneNumberDesc.Builder ProcessPhoneNumberDescElement(PhoneNumberDesc parentDesc, XElement countryElement, string numberType) { if (parentDesc == null) { parentDesc = new PhoneNumberDesc.Builder().Build(); } var phoneNumberDescList = countryElement.GetElementsByTagName(numberType).ToList(); var numberDesc = new PhoneNumberDesc.Builder(); if (phoneNumberDescList.Count == 0) { // -1 will never match a possible phone number length, so is safe to use to ensure this never // matches. We don't leave it empty, since for compression reasons, we use the empty list to // mean that the generalDesc possible lengths apply. numberDesc.AddPossibleLength(-1); return(numberDesc); } if (phoneNumberDescList.Count > 0) { if (phoneNumberDescList.Count > 1) { throw new Exception($"Multiple elements with type {numberType} found."); } var element = phoneNumberDescList[0]; if (parentDesc != null) { // New way of handling possible number lengths. We don't do this for the general // description, since these tags won't be present; instead we will calculate its values // based on the values for all the other number type descriptions (see // setPossibleLengthsGeneralDesc). var lengths = new SortedSet <int>(); var localOnlyLengths = new SortedSet <int>(); PopulatePossibleLengthSets(element, lengths, localOnlyLengths); SetPossibleLengths(lengths, new SortedSet <int>(), parentDesc, numberDesc); } var validPattern = element.GetElementsByTagName(NATIONAL_NUMBER_PATTERN).ToList(); if (validPattern.Any()) { numberDesc.SetNationalNumberPattern(ValidateRE(validPattern.First().Value, true)); } var exampleNumber = element.GetElementsByTagName(EXAMPLE_NUMBER).ToList(); if (exampleNumber.Any()) { numberDesc.SetExampleNumber(exampleNumber.First().Value); } } return(numberDesc); }
/** * Processes a phone number description element from the XML file and returns it as a * PhoneNumberDesc. If the description element is a fixed line or mobile number, the general * description will be used to fill in the whole element if necessary, or any components that are * missing. For all other types, the general description will only be used to fill in missing * components if the type has a partial definition. For example, if no "tollFree" element exists, * we assume there are no toll free numbers for that locale, and return a phone number description * with "NA" for both the national and possible number patterns. * * @param generalDesc a generic phone number description that will be used to fill in missing * parts of the description * @param countryElement the XML element representing all the country information * @param numberType the name of the number type, corresponding to the appropriate tag in the XML * file with information about that type * @return complete description of that phone number type */ public static PhoneNumberDesc ProcessPhoneNumberDescElement(PhoneNumberDesc generalDesc, XElement countryElement, String numberType, bool liteBuild) { if (generalDesc == null) { generalDesc = new PhoneNumberDesc.Builder().Build(); } var phoneNumberDescList = countryElement.GetElementsByTagName(numberType); var numberDesc = new PhoneNumberDesc.Builder(); if (phoneNumberDescList.Length == 0 && !IsValidNumberType(numberType)) { numberDesc.SetNationalNumberPattern("NA"); numberDesc.SetPossibleNumberPattern("NA"); return(numberDesc.Build()); } numberDesc.MergeFrom(generalDesc); if (phoneNumberDescList.Length > 0) { XElement element = phoneNumberDescList[0]; var possiblePattern = element.GetElementsByTagName(POSSIBLE_NUMBER_PATTERN); if (possiblePattern.Length > 0) { numberDesc.SetPossibleNumberPattern(ValidateRE(possiblePattern[0].Value, true)); } var validPattern = element.GetElementsByTagName(NATIONAL_NUMBER_PATTERN); if (validPattern.Length > 0) { numberDesc.SetNationalNumberPattern(ValidateRE(validPattern[0].Value, true)); } if (!liteBuild) { var exampleNumber = element.GetElementsByTagName(EXAMPLE_NUMBER); if (exampleNumber.Length > 0) { numberDesc.SetExampleNumber(exampleNumber[0].Value); } } } return(numberDesc.Build()); }
/** * Processes a phone number description element from the XML file and returns it as a * PhoneNumberDesc. If the description element is a fixed line or mobile number, the parent * description will be used to fill in the whole element if necessary, or any components that are * missing. For all other types, the parent description will only be used to fill in missing * components if the type has a partial definition. For example, if no "tollFree" element exists, * we assume there are no toll free numbers for that locale, and return a phone number description * with no national number data and [-1] for the possible lengths. Note that the parent * description must therefore already be processed before this method is called on any child * elements. * * @param generalDesc a generic phone number description that will be used to fill in missing * parts of the description * @param countryElement the XML element representing all the country information * @param numberType the name of the number type, corresponding to the appropriate tag in the XML * file with information about that type * @return complete description of that phone number type */ public static PhoneNumberDesc.Builder ProcessPhoneNumberDescElement(PhoneNumberDesc parentDesc, XElement countryElement, string numberType) { var phoneNumberDescList = countryElement.Elements(numberType).ToList(); var numberDesc = new PhoneNumberDesc.Builder(); if (phoneNumberDescList.Count == 0) { // -1 will never match a possible phone number length, so is safe to use to ensure this never // matches. We don't leave it empty, since for compression reasons, we use the empty list to // mean that the generalDesc possible lengths apply. numberDesc.AddPossibleLength(-1); return(numberDesc); } if (phoneNumberDescList.Count > 1) { throw new Exception($"Multiple elements with type {numberType} found."); } var element = phoneNumberDescList[0]; parentDesc ??= new PhoneNumberDesc(); var lengths = new SortedSet <int>(); var localOnlyLengths = new SortedSet <int>(); PopulatePossibleLengthSets(element.Elements(POSSIBLE_LENGTHS), lengths, localOnlyLengths); SetPossibleLengths(lengths, localOnlyLengths, parentDesc, numberDesc); var validPattern = element.Element(NATIONAL_NUMBER_PATTERN); if (validPattern != null) { numberDesc.SetNationalNumberPattern(ValidateRE(validPattern.Value, true)); } var exampleNumber = element.Element(EXAMPLE_NUMBER); if (exampleNumber != null) { numberDesc.SetExampleNumber(exampleNumber.Value); } return(numberDesc); }
/** * Processes a phone number description element from the XML file and returns it as a * PhoneNumberDesc. If the description element is a fixed line or mobile number, the general * description will be used to fill in the whole element if necessary, or any components that are * missing. For all other types, the general description will only be used to fill in missing * components if the type has a partial definition. For example, if no "tollFree" element exists, * we assume there are no toll free numbers for that locale, and return a phone number description * with "NA" for both the national and possible number patterns. * * @param generalDesc a generic phone number description that will be used to fill in missing * parts of the description * @param countryElement the XML element representing all the country information * @param numberType the name of the number type, corresponding to the appropriate tag in the XML * file with information about that type * @return complete description of that phone number type */ public static PhoneNumberDesc ProcessPhoneNumberDescElement(PhoneNumberDesc generalDesc, XmlElement countryElement, String numberType, bool liteBuild) { if (generalDesc == null) generalDesc = new PhoneNumberDesc.Builder().Build(); var phoneNumberDescList = countryElement.GetElementsByTagName(numberType); var numberDesc = new PhoneNumberDesc.Builder(); if (phoneNumberDescList.Count == 0 && !IsValidNumberType(numberType)) { numberDesc.SetNationalNumberPattern("NA"); numberDesc.SetPossibleNumberPattern("NA"); return numberDesc.Build(); } numberDesc.MergeFrom(generalDesc); if (phoneNumberDescList.Count > 0) { XmlElement element = (XmlElement)phoneNumberDescList[0]; var possiblePattern = element.GetElementsByTagName(POSSIBLE_NUMBER_PATTERN); if (possiblePattern.Count > 0) numberDesc.SetPossibleNumberPattern(ValidateRE(possiblePattern[0].InnerText, true)); var validPattern = element.GetElementsByTagName(NATIONAL_NUMBER_PATTERN); if (validPattern.Count > 0) numberDesc.SetNationalNumberPattern(ValidateRE(validPattern[0].InnerText, true)); if (!liteBuild) { var exampleNumber = element.GetElementsByTagName(EXAMPLE_NUMBER); if (exampleNumber.Count > 0) numberDesc.SetExampleNumber(exampleNumber[0].InnerText); } } return numberDesc.Build(); }