Home | History | Annotate | Download | only in phonenumbers
      1 /*
      2  * Copyright (C) 2010 The Libphonenumber Authors
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  * http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 /**
     18  * Definition of the class representing metadata for international telephone numbers. This class is
     19  * hand created based on the class file compiled from phonemetadata.proto. Please refer to that file
     20  * for detailed descriptions of the meaning of each field.
     21  */
     22 
     23 package com.google.i18n.phonenumbers;
     24 
     25 import java.io.Externalizable;
     26 import java.io.IOException;
     27 import java.io.ObjectInput;
     28 import java.io.ObjectOutput;
     29 
     30 public final class Phonemetadata {
     31   private Phonemetadata() {}
     32   public static class NumberFormat implements Externalizable {
     33     private static final long serialVersionUID = 1;
     34     public NumberFormat() {}
     35 
     36     /**
     37      * Provides a dummy builder to 'emulate' the API of the code generated by the latest version of
     38      * Protocol Buffers. This lets BuildMetadataFromXml class to build with both this hand created
     39      * class and the one generated by the latest version of Protocol Buffers.
     40      */
     41     public static final class Builder extends NumberFormat {
     42       public NumberFormat build() {
     43         return this;
     44       }
     45     }
     46 
     47     public static Builder newBuilder() {
     48       return new Builder();
     49     }
     50 
     51     // required string pattern = 1;
     52     private boolean hasPattern;
     53     private String pattern_ = "";
     54     public boolean hasPattern() { return hasPattern; }
     55     public String getPattern() { return pattern_; }
     56     public NumberFormat setPattern(String value) {
     57       hasPattern = true;
     58       pattern_ = value;
     59       return this;
     60     }
     61 
     62     // required string format = 2;
     63     private boolean hasFormat;
     64     private String format_ = "";
     65     public boolean hasFormat() { return hasFormat; }
     66     public String getFormat() { return format_; }
     67     public NumberFormat setFormat(String value) {
     68       hasFormat = true;
     69       format_ = value;
     70       return this;
     71     }
     72 
     73     // repeated string leading_digits_pattern = 3;
     74     private java.util.List<String> leadingDigitsPattern_ = new java.util.ArrayList<String>();
     75     public java.util.List<String> leadingDigitPatterns() {
     76       return leadingDigitsPattern_;
     77     }
     78     public int leadingDigitsPatternSize() { return leadingDigitsPattern_.size(); }
     79     public String getLeadingDigitsPattern(int index) {
     80       return leadingDigitsPattern_.get(index);
     81     }
     82     public NumberFormat addLeadingDigitsPattern(String value) {
     83       if (value == null) {
     84         throw new NullPointerException();
     85       }
     86       leadingDigitsPattern_.add(value);
     87       return this;
     88     }
     89 
     90     // optional string national_prefix_formatting_rule = 4;
     91     private boolean hasNationalPrefixFormattingRule;
     92     private String nationalPrefixFormattingRule_ = "";
     93     public boolean hasNationalPrefixFormattingRule() { return hasNationalPrefixFormattingRule; }
     94     public String getNationalPrefixFormattingRule() { return nationalPrefixFormattingRule_; }
     95     public NumberFormat setNationalPrefixFormattingRule(String value) {
     96       hasNationalPrefixFormattingRule = true;
     97       nationalPrefixFormattingRule_ = value;
     98       return this;
     99     }
    100     public NumberFormat clearNationalPrefixFormattingRule() {
    101       hasNationalPrefixFormattingRule = false;
    102       nationalPrefixFormattingRule_ = "";
    103       return this;
    104     }
    105 
    106     // optional bool national_prefix_optional_when_formatting = 6;
    107     private boolean hasNationalPrefixOptionalWhenFormatting;
    108     private boolean nationalPrefixOptionalWhenFormatting_ = false;
    109     public boolean hasNationalPrefixOptionalWhenFormatting() {
    110       return hasNationalPrefixOptionalWhenFormatting; }
    111     public boolean isNationalPrefixOptionalWhenFormatting() {
    112       return nationalPrefixOptionalWhenFormatting_; }
    113     public NumberFormat setNationalPrefixOptionalWhenFormatting(boolean value) {
    114       hasNationalPrefixOptionalWhenFormatting = true;
    115       nationalPrefixOptionalWhenFormatting_ = value;
    116       return this;
    117     }
    118 
    119     // optional string domestic_carrier_code_formatting_rule = 5;
    120     private boolean hasDomesticCarrierCodeFormattingRule;
    121     private String domesticCarrierCodeFormattingRule_ = "";
    122     public boolean hasDomesticCarrierCodeFormattingRule() {
    123       return hasDomesticCarrierCodeFormattingRule; }
    124     public String getDomesticCarrierCodeFormattingRule() {
    125       return domesticCarrierCodeFormattingRule_; }
    126     public NumberFormat setDomesticCarrierCodeFormattingRule(String value) {
    127       hasDomesticCarrierCodeFormattingRule = true;
    128       domesticCarrierCodeFormattingRule_ = value;
    129       return this;
    130     }
    131 
    132     public NumberFormat mergeFrom(NumberFormat other) {
    133       if (other.hasPattern()) {
    134         setPattern(other.getPattern());
    135       }
    136       if (other.hasFormat()) {
    137         setFormat(other.getFormat());
    138       }
    139       int leadingDigitsPatternSize = other.leadingDigitsPatternSize();
    140       for (int i = 0; i < leadingDigitsPatternSize; i++) {
    141         addLeadingDigitsPattern(other.getLeadingDigitsPattern(i));
    142       }
    143       if (other.hasNationalPrefixFormattingRule()) {
    144         setNationalPrefixFormattingRule(other.getNationalPrefixFormattingRule());
    145       }
    146       if (other.hasDomesticCarrierCodeFormattingRule()) {
    147         setDomesticCarrierCodeFormattingRule(other.getDomesticCarrierCodeFormattingRule());
    148       }
    149       setNationalPrefixOptionalWhenFormatting(other.isNationalPrefixOptionalWhenFormatting());
    150       return this;
    151     }
    152 
    153     public void writeExternal(ObjectOutput objectOutput) throws IOException {
    154       objectOutput.writeUTF(pattern_);
    155       objectOutput.writeUTF(format_);
    156       int leadingDigitsPatternSize = leadingDigitsPatternSize();
    157       objectOutput.writeInt(leadingDigitsPatternSize);
    158       for (int i = 0; i < leadingDigitsPatternSize; i++) {
    159         objectOutput.writeUTF(leadingDigitsPattern_.get(i));
    160       }
    161 
    162       objectOutput.writeBoolean(hasNationalPrefixFormattingRule);
    163       if (hasNationalPrefixFormattingRule) {
    164         objectOutput.writeUTF(nationalPrefixFormattingRule_);
    165       }
    166       objectOutput.writeBoolean(hasDomesticCarrierCodeFormattingRule);
    167       if (hasDomesticCarrierCodeFormattingRule) {
    168         objectOutput.writeUTF(domesticCarrierCodeFormattingRule_);
    169       }
    170       objectOutput.writeBoolean(nationalPrefixOptionalWhenFormatting_);
    171     }
    172 
    173     public void readExternal(ObjectInput objectInput) throws IOException {
    174       setPattern(objectInput.readUTF());
    175       setFormat(objectInput.readUTF());
    176       int leadingDigitsPatternSize = objectInput.readInt();
    177       for (int i = 0; i < leadingDigitsPatternSize; i++) {
    178         leadingDigitsPattern_.add(objectInput.readUTF());
    179       }
    180       if (objectInput.readBoolean()) {
    181         setNationalPrefixFormattingRule(objectInput.readUTF());
    182       }
    183       if (objectInput.readBoolean()) {
    184         setDomesticCarrierCodeFormattingRule(objectInput.readUTF());
    185       }
    186       setNationalPrefixOptionalWhenFormatting(objectInput.readBoolean());
    187     }
    188   }
    189 
    190   public static class PhoneNumberDesc implements Externalizable {
    191     private static final long serialVersionUID = 1;
    192     public PhoneNumberDesc() {}
    193 
    194     /**
    195      * Provides a dummy builder.
    196      *
    197      * @see NumberFormat.Builder
    198      */
    199     public static final class Builder extends PhoneNumberDesc {
    200       public PhoneNumberDesc build() {
    201         return this;
    202       }
    203     }
    204     public static Builder newBuilder() {
    205       return new Builder();
    206     }
    207 
    208     // optional string national_number_pattern = 2;
    209     private boolean hasNationalNumberPattern;
    210     private String nationalNumberPattern_ = "";
    211     public boolean hasNationalNumberPattern() { return hasNationalNumberPattern; }
    212     public String getNationalNumberPattern() { return nationalNumberPattern_; }
    213     public PhoneNumberDesc setNationalNumberPattern(String value) {
    214       hasNationalNumberPattern = true;
    215       nationalNumberPattern_ = value;
    216       return this;
    217     }
    218 
    219     // optional string possible_number_pattern = 3;
    220     private boolean hasPossibleNumberPattern;
    221     private String possibleNumberPattern_ = "";
    222     public boolean hasPossibleNumberPattern() { return hasPossibleNumberPattern; }
    223     public String getPossibleNumberPattern() { return possibleNumberPattern_; }
    224     public PhoneNumberDesc setPossibleNumberPattern(String value) {
    225       hasPossibleNumberPattern = true;
    226       possibleNumberPattern_ = value;
    227       return this;
    228     }
    229 
    230     // optional string example_number = 6;
    231     private boolean hasExampleNumber;
    232     private String exampleNumber_ = "";
    233     public boolean hasExampleNumber() { return hasExampleNumber; }
    234     public String getExampleNumber() { return exampleNumber_; }
    235     public PhoneNumberDesc setExampleNumber(String value) {
    236       hasExampleNumber = true;
    237       exampleNumber_ = value;
    238       return this;
    239     }
    240 
    241     public PhoneNumberDesc mergeFrom(PhoneNumberDesc other) {
    242       if (other.hasNationalNumberPattern()) {
    243         setNationalNumberPattern(other.getNationalNumberPattern());
    244       }
    245       if (other.hasPossibleNumberPattern()) {
    246         setPossibleNumberPattern(other.getPossibleNumberPattern());
    247       }
    248       if (other.hasExampleNumber()) {
    249         setExampleNumber(other.getExampleNumber());
    250       }
    251       return this;
    252     }
    253 
    254     public boolean exactlySameAs(PhoneNumberDesc other) {
    255       return nationalNumberPattern_.equals(other.nationalNumberPattern_) &&
    256           possibleNumberPattern_.equals(other.possibleNumberPattern_) &&
    257           exampleNumber_.equals(other.exampleNumber_);
    258     }
    259 
    260     public void writeExternal(ObjectOutput objectOutput) throws IOException {
    261       objectOutput.writeBoolean(hasNationalNumberPattern);
    262       if (hasNationalNumberPattern) {
    263         objectOutput.writeUTF(nationalNumberPattern_);
    264       }
    265 
    266       objectOutput.writeBoolean(hasPossibleNumberPattern);
    267       if (hasPossibleNumberPattern) {
    268         objectOutput.writeUTF(possibleNumberPattern_);
    269       }
    270 
    271       objectOutput.writeBoolean(hasExampleNumber);
    272       if (hasExampleNumber) {
    273         objectOutput.writeUTF(exampleNumber_);
    274       }
    275     }
    276 
    277     public void readExternal(ObjectInput objectInput) throws IOException {
    278       if (objectInput.readBoolean()) {
    279         setNationalNumberPattern(objectInput.readUTF());
    280       }
    281 
    282       if (objectInput.readBoolean()) {
    283         setPossibleNumberPattern(objectInput.readUTF());
    284       }
    285 
    286       if (objectInput.readBoolean()) {
    287         setExampleNumber(objectInput.readUTF());
    288       }
    289     }
    290   }
    291 
    292   public static class PhoneMetadata implements Externalizable {
    293     private static final long serialVersionUID = 1;
    294     public PhoneMetadata() {}
    295 
    296     /**
    297      * Provides a dummy builder.
    298      *
    299      * @see NumberFormat.Builder
    300      */
    301     public static final class Builder extends PhoneMetadata {
    302       public PhoneMetadata build() {
    303         return this;
    304       }
    305     }
    306     public static Builder newBuilder() {
    307       return new Builder();
    308     }
    309 
    310     // optional PhoneNumberDesc general_desc = 1;
    311     private boolean hasGeneralDesc;
    312     private PhoneNumberDesc generalDesc_ = null;
    313     public boolean hasGeneralDesc() { return hasGeneralDesc; }
    314     public PhoneNumberDesc getGeneralDesc() { return generalDesc_; }
    315     public PhoneMetadata setGeneralDesc(PhoneNumberDesc value) {
    316       if (value == null) {
    317         throw new NullPointerException();
    318       }
    319       hasGeneralDesc = true;
    320       generalDesc_ = value;
    321       return this;
    322     }
    323 
    324     // optional PhoneNumberDesc fixed_line = 2;
    325     private boolean hasFixedLine;
    326     private PhoneNumberDesc fixedLine_ = null;
    327     public boolean hasFixedLine() { return hasFixedLine; }
    328     public PhoneNumberDesc getFixedLine() { return fixedLine_; }
    329     public PhoneMetadata setFixedLine(PhoneNumberDesc value) {
    330       if (value == null) {
    331         throw new NullPointerException();
    332       }
    333       hasFixedLine = true;
    334       fixedLine_ = value;
    335       return this;
    336     }
    337 
    338     // optional PhoneNumberDesc mobile = 3;
    339     private boolean hasMobile;
    340     private PhoneNumberDesc mobile_ = null;
    341     public boolean hasMobile() { return hasMobile; }
    342     public PhoneNumberDesc getMobile() { return mobile_; }
    343     public PhoneMetadata setMobile(PhoneNumberDesc value) {
    344       if (value == null) {
    345         throw new NullPointerException();
    346       }
    347       hasMobile = true;
    348       mobile_ = value;
    349       return this;
    350     }
    351 
    352     // optional PhoneNumberDesc toll_free = 4;
    353     private boolean hasTollFree;
    354     private PhoneNumberDesc tollFree_ = null;
    355     public boolean hasTollFree() { return hasTollFree; }
    356     public PhoneNumberDesc getTollFree() { return tollFree_; }
    357     public PhoneMetadata setTollFree(PhoneNumberDesc value) {
    358       if (value == null) {
    359         throw new NullPointerException();
    360       }
    361       hasTollFree = true;
    362       tollFree_ = value;
    363       return this;
    364     }
    365 
    366     // optional PhoneNumberDesc premium_rate = 5;
    367     private boolean hasPremiumRate;
    368     private PhoneNumberDesc premiumRate_ = null;
    369     public boolean hasPremiumRate() { return hasPremiumRate; }
    370     public PhoneNumberDesc getPremiumRate() { return premiumRate_; }
    371     public PhoneMetadata setPremiumRate(PhoneNumberDesc value) {
    372       if (value == null) {
    373         throw new NullPointerException();
    374       }
    375       hasPremiumRate = true;
    376       premiumRate_ = value;
    377       return this;
    378     }
    379 
    380     // optional PhoneNumberDesc shared_cost = 6;
    381     private boolean hasSharedCost;
    382     private PhoneNumberDesc sharedCost_ = null;
    383     public boolean hasSharedCost() { return hasSharedCost; }
    384     public PhoneNumberDesc getSharedCost() { return sharedCost_; }
    385     public PhoneMetadata setSharedCost(PhoneNumberDesc value) {
    386       if (value == null) {
    387         throw new NullPointerException();
    388       }
    389       hasSharedCost = true;
    390       sharedCost_ = value;
    391       return this;
    392     }
    393 
    394     // optional PhoneNumberDesc personal_number = 7;
    395     private boolean hasPersonalNumber;
    396     private PhoneNumberDesc personalNumber_ = null;
    397     public boolean hasPersonalNumber() { return hasPersonalNumber; }
    398     public PhoneNumberDesc getPersonalNumber() { return personalNumber_; }
    399     public PhoneMetadata setPersonalNumber(PhoneNumberDesc value) {
    400       if (value == null) {
    401         throw new NullPointerException();
    402       }
    403       hasPersonalNumber = true;
    404       personalNumber_ = value;
    405       return this;
    406     }
    407 
    408     // optional PhoneNumberDesc voip = 8;
    409     private boolean hasVoip;
    410     private PhoneNumberDesc voip_ = null;
    411     public boolean hasVoip() { return hasVoip; }
    412     public PhoneNumberDesc getVoip() { return voip_; }
    413     public PhoneMetadata setVoip(PhoneNumberDesc value) {
    414       if (value == null) {
    415         throw new NullPointerException();
    416       }
    417       hasVoip = true;
    418       voip_ = value;
    419       return this;
    420     }
    421 
    422     // optional PhoneNumberDesc pager = 21;
    423     private boolean hasPager;
    424     private PhoneNumberDesc pager_ = null;
    425     public boolean hasPager() { return hasPager; }
    426     public PhoneNumberDesc getPager() { return pager_; }
    427     public PhoneMetadata setPager(PhoneNumberDesc value) {
    428       if (value == null) {
    429         throw new NullPointerException();
    430       }
    431       hasPager = true;
    432       pager_ = value;
    433       return this;
    434     }
    435 
    436     // optional PhoneNumberDesc uan = 25;
    437     private boolean hasUan;
    438     private PhoneNumberDesc uan_ = null;
    439     public boolean hasUan() { return hasUan; }
    440     public PhoneNumberDesc getUan() { return uan_; }
    441     public PhoneMetadata setUan(PhoneNumberDesc value) {
    442       if (value == null) {
    443         throw new NullPointerException();
    444       }
    445       hasUan = true;
    446       uan_ = value;
    447       return this;
    448     }
    449 
    450     // optional PhoneNumberDesc emergency = 27;
    451     private boolean hasEmergency;
    452     private PhoneNumberDesc emergency_ = null;
    453     public boolean hasEmergency() { return hasEmergency; }
    454     public PhoneNumberDesc getEmergency() { return emergency_; }
    455     public PhoneMetadata setEmergency(PhoneNumberDesc value) {
    456       if (value == null) {
    457         throw new NullPointerException();
    458       }
    459       hasEmergency = true;
    460       emergency_ = value;
    461       return this;
    462     }
    463 
    464     // optional PhoneNumberDesc voicemail = 28;
    465     private boolean hasVoicemail;
    466     private PhoneNumberDesc voicemail_ = null;
    467     public boolean hasVoicemail() { return hasVoicemail; }
    468     public PhoneNumberDesc getVoicemail() { return voicemail_; }
    469     public PhoneMetadata setVoicemail(PhoneNumberDesc value) {
    470       if (value == null) {
    471         throw new NullPointerException();
    472       }
    473       hasVoicemail = true;
    474       voicemail_ = value;
    475       return this;
    476     }
    477 
    478     // optional PhoneNumberDesc short_code = 29;
    479     private boolean hasShortCode;
    480     private PhoneNumberDesc shortCode_ = null;
    481     public boolean hasShortCode() { return hasShortCode; }
    482     public PhoneNumberDesc getShortCode() { return shortCode_; }
    483     public PhoneMetadata setShortCode(PhoneNumberDesc value) {
    484       if (value == null) {
    485         throw new NullPointerException();
    486       }
    487       hasShortCode = true;
    488       shortCode_ = value;
    489       return this;
    490     }
    491 
    492     // optional PhoneNumberDesc standard_rate = 30;
    493     private boolean hasStandardRate;
    494     private PhoneNumberDesc standardRate_ = null;
    495     public boolean hasStandardRate() { return hasStandardRate; }
    496     public PhoneNumberDesc getStandardRate() { return standardRate_; }
    497     public PhoneMetadata setStandardRate(PhoneNumberDesc value) {
    498       if (value == null) {
    499         throw new NullPointerException();
    500       }
    501       hasStandardRate = true;
    502       standardRate_ = value;
    503       return this;
    504     }
    505 
    506     // optional PhoneNumberDesc carrier_specific = 31;
    507     private boolean hasCarrierSpecific;
    508     private PhoneNumberDesc carrierSpecific_ = null;
    509     public boolean hasCarrierSpecific() { return hasCarrierSpecific; }
    510     public PhoneNumberDesc getCarrierSpecific() { return carrierSpecific_; }
    511     public PhoneMetadata setCarrierSpecific(PhoneNumberDesc value) {
    512       if (value == null) {
    513         throw new NullPointerException();
    514       }
    515       hasCarrierSpecific = true;
    516       carrierSpecific_ = value;
    517       return this;
    518     }
    519 
    520     // optional PhoneNumberDesc noInternationalDialling = 24;
    521     private boolean hasNoInternationalDialling;
    522     private PhoneNumberDesc noInternationalDialling_ = null;
    523     public boolean hasNoInternationalDialling() { return hasNoInternationalDialling; }
    524     public PhoneNumberDesc getNoInternationalDialling() { return noInternationalDialling_; }
    525     public PhoneMetadata setNoInternationalDialling(PhoneNumberDesc value) {
    526       if (value == null) {
    527         throw new NullPointerException();
    528       }
    529       hasNoInternationalDialling = true;
    530       noInternationalDialling_ = value;
    531       return this;
    532     }
    533 
    534     // required string id = 9;
    535     private boolean hasId;
    536     private String id_ = "";
    537     public boolean hasId() { return hasId; }
    538     public String getId() { return id_; }
    539     public PhoneMetadata setId(String value) {
    540       hasId = true;
    541       id_ = value;
    542       return this;
    543     }
    544 
    545     // optional int32 country_code = 10;
    546     private boolean hasCountryCode;
    547     private int countryCode_ = 0;
    548     public boolean hasCountryCode() { return hasCountryCode; }
    549     public int getCountryCode() { return countryCode_; }
    550     public PhoneMetadata setCountryCode(int value) {
    551       hasCountryCode = true;
    552       countryCode_ = value;
    553       return this;
    554     }
    555 
    556     // optional string international_prefix = 11;
    557     private boolean hasInternationalPrefix;
    558     private String internationalPrefix_ = "";
    559     public boolean hasInternationalPrefix() { return hasInternationalPrefix; }
    560     public String getInternationalPrefix() { return internationalPrefix_; }
    561     public PhoneMetadata setInternationalPrefix(String value) {
    562       hasInternationalPrefix = true;
    563       internationalPrefix_ = value;
    564       return this;
    565     }
    566 
    567     // optional string preferred_international_prefix = 17;
    568     private boolean hasPreferredInternationalPrefix;
    569     private String preferredInternationalPrefix_ = "";
    570     public boolean hasPreferredInternationalPrefix() { return hasPreferredInternationalPrefix; }
    571     public String getPreferredInternationalPrefix() { return preferredInternationalPrefix_; }
    572     public PhoneMetadata setPreferredInternationalPrefix(String value) {
    573       hasPreferredInternationalPrefix = true;
    574       preferredInternationalPrefix_ = value;
    575       return this;
    576     }
    577 
    578     // optional string national_prefix = 12;
    579     private boolean hasNationalPrefix;
    580     private String nationalPrefix_ = "";
    581     public boolean hasNationalPrefix() { return hasNationalPrefix; }
    582     public String getNationalPrefix() { return nationalPrefix_; }
    583     public PhoneMetadata setNationalPrefix(String value) {
    584       hasNationalPrefix = true;
    585       nationalPrefix_ = value;
    586       return this;
    587     }
    588 
    589     // optional string preferred_extn_prefix = 13;
    590     private boolean hasPreferredExtnPrefix;
    591     private String preferredExtnPrefix_ = "";
    592     public boolean hasPreferredExtnPrefix() { return hasPreferredExtnPrefix; }
    593     public String getPreferredExtnPrefix() { return preferredExtnPrefix_; }
    594     public PhoneMetadata setPreferredExtnPrefix(String value) {
    595       hasPreferredExtnPrefix = true;
    596       preferredExtnPrefix_ = value;
    597       return this;
    598     }
    599 
    600     // optional string national_prefix_for_parsing = 15;
    601     private boolean hasNationalPrefixForParsing;
    602     private String nationalPrefixForParsing_ = "";
    603     public boolean hasNationalPrefixForParsing() { return hasNationalPrefixForParsing; }
    604     public String getNationalPrefixForParsing() { return nationalPrefixForParsing_; }
    605     public PhoneMetadata setNationalPrefixForParsing(String value) {
    606       hasNationalPrefixForParsing = true;
    607       nationalPrefixForParsing_ = value;
    608       return this;
    609     }
    610 
    611     // optional string national_prefix_transform_rule = 16;
    612     private boolean hasNationalPrefixTransformRule;
    613     private String nationalPrefixTransformRule_ = "";
    614     public boolean hasNationalPrefixTransformRule() { return hasNationalPrefixTransformRule; }
    615     public String getNationalPrefixTransformRule() { return nationalPrefixTransformRule_; }
    616     public PhoneMetadata setNationalPrefixTransformRule(String value) {
    617       hasNationalPrefixTransformRule = true;
    618       nationalPrefixTransformRule_ = value;
    619       return this;
    620     }
    621 
    622     // optional bool same_mobile_and_fixed_line_pattern = 18 [default = false];
    623     private boolean hasSameMobileAndFixedLinePattern;
    624     private boolean sameMobileAndFixedLinePattern_ = false;
    625     public boolean hasSameMobileAndFixedLinePattern() { return hasSameMobileAndFixedLinePattern; }
    626     public boolean isSameMobileAndFixedLinePattern() { return sameMobileAndFixedLinePattern_; }
    627     public PhoneMetadata setSameMobileAndFixedLinePattern(boolean value) {
    628       hasSameMobileAndFixedLinePattern = true;
    629       sameMobileAndFixedLinePattern_ = value;
    630       return this;
    631     }
    632 
    633     // repeated NumberFormat number_format = 19;
    634     private java.util.List<NumberFormat> numberFormat_ = new java.util.ArrayList<NumberFormat>();
    635     public java.util.List<NumberFormat> numberFormats() {
    636       return numberFormat_;
    637     }
    638     public int numberFormatSize() { return numberFormat_.size(); }
    639     public NumberFormat getNumberFormat(int index) {
    640       return numberFormat_.get(index);
    641     }
    642     public PhoneMetadata addNumberFormat(NumberFormat value) {
    643       if (value == null) {
    644         throw new NullPointerException();
    645       }
    646       numberFormat_.add(value);
    647       return this;
    648     }
    649 
    650     // repeated NumberFormat intl_number_format = 20;
    651     private java.util.List<NumberFormat> intlNumberFormat_ =
    652         new java.util.ArrayList<NumberFormat>();
    653     public java.util.List<NumberFormat> intlNumberFormats() {
    654       return intlNumberFormat_;
    655     }
    656     public int intlNumberFormatSize() { return intlNumberFormat_.size(); }
    657     public NumberFormat getIntlNumberFormat(int index) {
    658       return intlNumberFormat_.get(index);
    659     }
    660 
    661     public PhoneMetadata addIntlNumberFormat(NumberFormat value) {
    662       if (value == null) {
    663         throw new NullPointerException();
    664       }
    665       intlNumberFormat_.add(value);
    666       return this;
    667     }
    668     public PhoneMetadata clearIntlNumberFormat() {
    669       intlNumberFormat_.clear();
    670       return this;
    671     }
    672 
    673     // optional bool main_country_for_code = 22 [default = false];
    674     private boolean hasMainCountryForCode;
    675     private boolean mainCountryForCode_ = false;
    676     public boolean hasMainCountryForCode() { return hasMainCountryForCode; }
    677     public boolean isMainCountryForCode() { return mainCountryForCode_; }
    678     // Method that lets this class have the same interface as the one generated by Protocol Buffers
    679     // which is used by C++ build tools.
    680     public boolean getMainCountryForCode() { return mainCountryForCode_; }
    681     public PhoneMetadata setMainCountryForCode(boolean value) {
    682       hasMainCountryForCode = true;
    683       mainCountryForCode_ = value;
    684       return this;
    685     }
    686 
    687     // optional string leading_digits = 23;
    688     private boolean hasLeadingDigits;
    689     private String leadingDigits_ = "";
    690     public boolean hasLeadingDigits() { return hasLeadingDigits; }
    691     public String getLeadingDigits() { return leadingDigits_; }
    692     public PhoneMetadata setLeadingDigits(String value) {
    693       hasLeadingDigits = true;
    694       leadingDigits_ = value;
    695       return this;
    696     }
    697 
    698     // optional bool leading_zero_possible = 26 [default = false];
    699     private boolean hasLeadingZeroPossible;
    700     private boolean leadingZeroPossible_ = false;
    701     public boolean hasLeadingZeroPossible() { return hasLeadingZeroPossible; }
    702     public boolean isLeadingZeroPossible() { return leadingZeroPossible_; }
    703     public PhoneMetadata setLeadingZeroPossible(boolean value) {
    704       hasLeadingZeroPossible = true;
    705       leadingZeroPossible_ = value;
    706       return this;
    707     }
    708 
    709     // optional bool mobile_number_portable_region = 32 [default = false];
    710     private boolean hasMobileNumberPortableRegion;
    711     private boolean mobileNumberPortableRegion_ = false;
    712     public boolean hasMobileNumberPortableRegion() { return hasMobileNumberPortableRegion; }
    713     public boolean isMobileNumberPortableRegion() { return mobileNumberPortableRegion_; }
    714     public PhoneMetadata setMobileNumberPortableRegion(boolean value) {
    715       hasMobileNumberPortableRegion = true;
    716       mobileNumberPortableRegion_ = value;
    717       return this;
    718     }
    719 
    720     public void writeExternal(ObjectOutput objectOutput) throws IOException {
    721       objectOutput.writeBoolean(hasGeneralDesc);
    722       if (hasGeneralDesc) {
    723         generalDesc_.writeExternal(objectOutput);
    724       }
    725       objectOutput.writeBoolean(hasFixedLine);
    726       if (hasFixedLine) {
    727         fixedLine_.writeExternal(objectOutput);
    728       }
    729       objectOutput.writeBoolean(hasMobile);
    730       if (hasMobile) {
    731         mobile_.writeExternal(objectOutput);
    732       }
    733       objectOutput.writeBoolean(hasTollFree);
    734       if (hasTollFree) {
    735         tollFree_.writeExternal(objectOutput);
    736       }
    737       objectOutput.writeBoolean(hasPremiumRate);
    738       if (hasPremiumRate) {
    739         premiumRate_.writeExternal(objectOutput);
    740       }
    741       objectOutput.writeBoolean(hasSharedCost);
    742       if (hasSharedCost) {
    743         sharedCost_.writeExternal(objectOutput);
    744       }
    745       objectOutput.writeBoolean(hasPersonalNumber);
    746       if (hasPersonalNumber) {
    747         personalNumber_.writeExternal(objectOutput);
    748       }
    749       objectOutput.writeBoolean(hasVoip);
    750       if (hasVoip) {
    751         voip_.writeExternal(objectOutput);
    752       }
    753       objectOutput.writeBoolean(hasPager);
    754       if (hasPager) {
    755         pager_.writeExternal(objectOutput);
    756       }
    757       objectOutput.writeBoolean(hasUan);
    758       if (hasUan) {
    759         uan_.writeExternal(objectOutput);
    760       }
    761       objectOutput.writeBoolean(hasEmergency);
    762       if (hasEmergency) {
    763         emergency_.writeExternal(objectOutput);
    764       }
    765       objectOutput.writeBoolean(hasVoicemail);
    766       if (hasVoicemail) {
    767         voicemail_.writeExternal(objectOutput);
    768       }
    769       objectOutput.writeBoolean(hasShortCode);
    770       if (hasShortCode) {
    771         shortCode_.writeExternal(objectOutput);
    772       }
    773       objectOutput.writeBoolean(hasStandardRate);
    774       if (hasStandardRate) {
    775         standardRate_.writeExternal(objectOutput);
    776       }
    777       objectOutput.writeBoolean(hasCarrierSpecific);
    778       if (hasCarrierSpecific) {
    779         carrierSpecific_.writeExternal(objectOutput);
    780       }
    781       objectOutput.writeBoolean(hasNoInternationalDialling);
    782       if (hasNoInternationalDialling) {
    783         noInternationalDialling_.writeExternal(objectOutput);
    784       }
    785 
    786       objectOutput.writeUTF(id_);
    787       objectOutput.writeInt(countryCode_);
    788       objectOutput.writeUTF(internationalPrefix_);
    789 
    790       objectOutput.writeBoolean(hasPreferredInternationalPrefix);
    791       if (hasPreferredInternationalPrefix) {
    792         objectOutput.writeUTF(preferredInternationalPrefix_);
    793       }
    794 
    795       objectOutput.writeBoolean(hasNationalPrefix);
    796       if (hasNationalPrefix) {
    797         objectOutput.writeUTF(nationalPrefix_);
    798       }
    799 
    800       objectOutput.writeBoolean(hasPreferredExtnPrefix);
    801       if (hasPreferredExtnPrefix) {
    802         objectOutput.writeUTF(preferredExtnPrefix_);
    803       }
    804 
    805       objectOutput.writeBoolean(hasNationalPrefixForParsing);
    806       if (hasNationalPrefixForParsing) {
    807         objectOutput.writeUTF(nationalPrefixForParsing_);
    808       }
    809 
    810       objectOutput.writeBoolean(hasNationalPrefixTransformRule);
    811       if (hasNationalPrefixTransformRule) {
    812         objectOutput.writeUTF(nationalPrefixTransformRule_);
    813       }
    814 
    815       objectOutput.writeBoolean(sameMobileAndFixedLinePattern_);
    816 
    817       int numberFormatSize = numberFormatSize();
    818       objectOutput.writeInt(numberFormatSize);
    819       for (int i = 0; i < numberFormatSize; i++) {
    820         numberFormat_.get(i).writeExternal(objectOutput);
    821       }
    822 
    823       int intlNumberFormatSize = intlNumberFormatSize();
    824       objectOutput.writeInt(intlNumberFormatSize);
    825       for (int i = 0; i < intlNumberFormatSize; i++) {
    826         intlNumberFormat_.get(i).writeExternal(objectOutput);
    827       }
    828 
    829       objectOutput.writeBoolean(mainCountryForCode_);
    830 
    831       objectOutput.writeBoolean(hasLeadingDigits);
    832       if (hasLeadingDigits) {
    833         objectOutput.writeUTF(leadingDigits_);
    834       }
    835 
    836       objectOutput.writeBoolean(leadingZeroPossible_);
    837 
    838       objectOutput.writeBoolean(mobileNumberPortableRegion_);
    839     }
    840 
    841     public void readExternal(ObjectInput objectInput) throws IOException {
    842       boolean hasDesc = objectInput.readBoolean();
    843       if (hasDesc) {
    844         PhoneNumberDesc desc = new PhoneNumberDesc();
    845         desc.readExternal(objectInput);
    846         setGeneralDesc(desc);
    847       }
    848       hasDesc = objectInput.readBoolean();
    849       if (hasDesc) {
    850         PhoneNumberDesc desc = new PhoneNumberDesc();
    851         desc.readExternal(objectInput);
    852         setFixedLine(desc);
    853       }
    854       hasDesc = objectInput.readBoolean();
    855       if (hasDesc) {
    856         PhoneNumberDesc desc = new PhoneNumberDesc();
    857         desc.readExternal(objectInput);
    858         setMobile(desc);
    859       }
    860       hasDesc = objectInput.readBoolean();
    861       if (hasDesc) {
    862         PhoneNumberDesc desc = new PhoneNumberDesc();
    863         desc.readExternal(objectInput);
    864         setTollFree(desc);
    865       }
    866       hasDesc = objectInput.readBoolean();
    867       if (hasDesc) {
    868         PhoneNumberDesc desc = new PhoneNumberDesc();
    869         desc.readExternal(objectInput);
    870         setPremiumRate(desc);
    871       }
    872       hasDesc = objectInput.readBoolean();
    873       if (hasDesc) {
    874         PhoneNumberDesc desc = new PhoneNumberDesc();
    875         desc.readExternal(objectInput);
    876         setSharedCost(desc);
    877       }
    878       hasDesc = objectInput.readBoolean();
    879       if (hasDesc) {
    880         PhoneNumberDesc desc = new PhoneNumberDesc();
    881         desc.readExternal(objectInput);
    882         setPersonalNumber(desc);
    883       }
    884       hasDesc = objectInput.readBoolean();
    885       if (hasDesc) {
    886         PhoneNumberDesc desc = new PhoneNumberDesc();
    887         desc.readExternal(objectInput);
    888         setVoip(desc);
    889       }
    890       hasDesc = objectInput.readBoolean();
    891       if (hasDesc) {
    892         PhoneNumberDesc desc = new PhoneNumberDesc();
    893         desc.readExternal(objectInput);
    894         setPager(desc);
    895       }
    896       hasDesc = objectInput.readBoolean();
    897       if (hasDesc) {
    898         PhoneNumberDesc desc = new PhoneNumberDesc();
    899         desc.readExternal(objectInput);
    900         setUan(desc);
    901       }
    902       hasDesc = objectInput.readBoolean();
    903       if (hasDesc) {
    904         PhoneNumberDesc desc = new PhoneNumberDesc();
    905         desc.readExternal(objectInput);
    906         setEmergency(desc);
    907       }
    908       hasDesc = objectInput.readBoolean();
    909       if (hasDesc) {
    910         PhoneNumberDesc desc = new PhoneNumberDesc();
    911         desc.readExternal(objectInput);
    912         setVoicemail(desc);
    913       }
    914       hasDesc = objectInput.readBoolean();
    915       if (hasDesc) {
    916         PhoneNumberDesc desc = new PhoneNumberDesc();
    917         desc.readExternal(objectInput);
    918         setShortCode(desc);
    919       }
    920       hasDesc = objectInput.readBoolean();
    921       if (hasDesc) {
    922         PhoneNumberDesc desc = new PhoneNumberDesc();
    923         desc.readExternal(objectInput);
    924         setStandardRate(desc);
    925       }
    926       hasDesc = objectInput.readBoolean();
    927       if (hasDesc) {
    928         PhoneNumberDesc desc = new PhoneNumberDesc();
    929         desc.readExternal(objectInput);
    930         setCarrierSpecific(desc);
    931       }
    932       hasDesc = objectInput.readBoolean();
    933       if (hasDesc) {
    934         PhoneNumberDesc desc = new PhoneNumberDesc();
    935         desc.readExternal(objectInput);
    936         setNoInternationalDialling(desc);
    937       }
    938 
    939       setId(objectInput.readUTF());
    940       setCountryCode(objectInput.readInt());
    941       setInternationalPrefix(objectInput.readUTF());
    942 
    943       boolean hasString = objectInput.readBoolean();
    944       if (hasString) {
    945         setPreferredInternationalPrefix(objectInput.readUTF());
    946       }
    947 
    948       hasString = objectInput.readBoolean();
    949       if (hasString) {
    950         setNationalPrefix(objectInput.readUTF());
    951       }
    952 
    953       hasString = objectInput.readBoolean();
    954       if (hasString) {
    955         setPreferredExtnPrefix(objectInput.readUTF());
    956       }
    957 
    958       hasString = objectInput.readBoolean();
    959       if (hasString) {
    960         setNationalPrefixForParsing(objectInput.readUTF());
    961       }
    962 
    963       hasString = objectInput.readBoolean();
    964       if (hasString) {
    965         setNationalPrefixTransformRule(objectInput.readUTF());
    966       }
    967 
    968       setSameMobileAndFixedLinePattern(objectInput.readBoolean());
    969 
    970       int nationalFormatSize = objectInput.readInt();
    971       for (int i = 0; i < nationalFormatSize; i++) {
    972         NumberFormat numFormat = new NumberFormat();
    973         numFormat.readExternal(objectInput);
    974         numberFormat_.add(numFormat);
    975       }
    976 
    977       int intlNumberFormatSize = objectInput.readInt();
    978       for (int i = 0; i < intlNumberFormatSize; i++) {
    979         NumberFormat numFormat = new NumberFormat();
    980         numFormat.readExternal(objectInput);
    981         intlNumberFormat_.add(numFormat);
    982       }
    983 
    984       setMainCountryForCode(objectInput.readBoolean());
    985 
    986       hasString = objectInput.readBoolean();
    987       if (hasString) {
    988         setLeadingDigits(objectInput.readUTF());
    989       }
    990 
    991       setLeadingZeroPossible(objectInput.readBoolean());
    992 
    993       setMobileNumberPortableRegion(objectInput.readBoolean());
    994     }
    995   }
    996 
    997   public static class PhoneMetadataCollection implements Externalizable {
    998     private static final long serialVersionUID = 1;
    999     public PhoneMetadataCollection() {}
   1000 
   1001     /**
   1002      * Provides a dummy builder.
   1003      *
   1004      * @see NumberFormat.Builder
   1005      */
   1006     public static final class Builder extends PhoneMetadataCollection {
   1007       public PhoneMetadataCollection build() {
   1008         return this;
   1009       }
   1010     }
   1011     public static Builder newBuilder() {
   1012       return new Builder();
   1013     }
   1014 
   1015     // repeated PhoneMetadata metadata = 1;
   1016     private java.util.List<PhoneMetadata> metadata_ = new java.util.ArrayList<PhoneMetadata>();
   1017 
   1018     public java.util.List<PhoneMetadata> getMetadataList() {
   1019       return metadata_;
   1020     }
   1021     public int getMetadataCount() { return metadata_.size(); }
   1022 
   1023     public PhoneMetadataCollection addMetadata(PhoneMetadata value) {
   1024       if (value == null) {
   1025         throw new NullPointerException();
   1026       }
   1027       metadata_.add(value);
   1028       return this;
   1029     }
   1030 
   1031     public void writeExternal(ObjectOutput objectOutput) throws IOException {
   1032       int size = getMetadataCount();
   1033       objectOutput.writeInt(size);
   1034       for (int i = 0; i < size; i++) {
   1035         metadata_.get(i).writeExternal(objectOutput);
   1036       }
   1037     }
   1038 
   1039     public void readExternal(ObjectInput objectInput) throws IOException {
   1040       int size = objectInput.readInt();
   1041       for (int i = 0; i < size; i++) {
   1042         PhoneMetadata metadata = new PhoneMetadata();
   1043         metadata.readExternal(objectInput);
   1044         metadata_.add(metadata);
   1045       }
   1046     }
   1047 
   1048     public PhoneMetadataCollection clear() {
   1049       metadata_.clear();
   1050       return this;
   1051     }
   1052   }
   1053 }
   1054