• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 The Android Open Source Project
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 package com.android.dialer.phonenumberproto;
17 
18 import com.android.dialer.DialerInternalPhoneNumber;
19 import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
20 
21 /**
22  * Methods for converting from {@link PhoneNumber} POJOs to {@link DialerInternalPhoneNumber} protos
23  * and back.
24  */
25 class Converter {
26 
pojoToProto(PhoneNumber pojo)27   static DialerInternalPhoneNumber pojoToProto(PhoneNumber pojo) {
28     DialerInternalPhoneNumber.Builder proto = DialerInternalPhoneNumber.newBuilder();
29     if (pojo.hasCountryCode()) {
30       proto.setCountryCode(pojo.getCountryCode());
31     }
32     if (pojo.hasCountryCodeSource()) {
33       switch (pojo.getCountryCodeSource()) {
34         case FROM_NUMBER_WITH_PLUS_SIGN:
35           proto.setCountryCodeSource(
36               DialerInternalPhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN);
37           break;
38         case FROM_NUMBER_WITH_IDD:
39           proto.setCountryCodeSource(
40               DialerInternalPhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_IDD);
41           break;
42         case FROM_NUMBER_WITHOUT_PLUS_SIGN:
43           proto.setCountryCodeSource(
44               DialerInternalPhoneNumber.CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN);
45           break;
46         case FROM_DEFAULT_COUNTRY:
47           proto.setCountryCodeSource(
48               DialerInternalPhoneNumber.CountryCodeSource.FROM_DEFAULT_COUNTRY);
49           break;
50         default:
51           throw new IllegalArgumentException(
52               "unsupported country code source: " + pojo.getCountryCodeSource());
53       }
54     }
55     if (pojo.hasExtension()) {
56       proto.setExtension(pojo.getExtension());
57     }
58     if (pojo.hasItalianLeadingZero()) {
59       proto.setItalianLeadingZero(pojo.isItalianLeadingZero());
60     }
61     if (pojo.hasNationalNumber()) {
62       proto.setNationalNumber(pojo.getNationalNumber());
63     }
64     if (pojo.hasNumberOfLeadingZeros()) {
65       proto.setNumberOfLeadingZeros(pojo.getNumberOfLeadingZeros());
66     }
67     if (pojo.hasPreferredDomesticCarrierCode()) {
68       proto.setPreferredDomesticCarrierCode(pojo.getPreferredDomesticCarrierCode());
69     }
70     if (pojo.hasRawInput()) {
71       proto.setRawInput(pojo.getRawInput());
72     }
73     return proto.build();
74   }
75 
protoToPojo(DialerInternalPhoneNumber proto)76   static PhoneNumber protoToPojo(DialerInternalPhoneNumber proto) {
77     PhoneNumber pojo = new PhoneNumber();
78     if (proto.hasCountryCode()) {
79       pojo.setCountryCode(proto.getCountryCode());
80     }
81     if (proto.hasCountryCodeSource()) {
82       switch (proto.getCountryCodeSource()) {
83         case FROM_NUMBER_WITH_PLUS_SIGN:
84           pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN);
85           break;
86         case FROM_NUMBER_WITH_IDD:
87           pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_IDD);
88           break;
89         case FROM_NUMBER_WITHOUT_PLUS_SIGN:
90           pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN);
91           break;
92         case FROM_DEFAULT_COUNTRY:
93           pojo.setCountryCodeSource(PhoneNumber.CountryCodeSource.FROM_DEFAULT_COUNTRY);
94           break;
95         default:
96           throw new IllegalArgumentException(
97               "unsupported country code source: " + proto.getCountryCodeSource());
98       }
99     }
100     if (proto.hasExtension()) {
101       pojo.setExtension(proto.getExtension());
102     }
103     if (proto.hasItalianLeadingZero()) {
104       pojo.setItalianLeadingZero(proto.getItalianLeadingZero());
105     }
106     if (proto.hasNationalNumber()) {
107       pojo.setNationalNumber(proto.getNationalNumber());
108     }
109     if (proto.hasNumberOfLeadingZeros()) {
110       pojo.setNumberOfLeadingZeros(proto.getNumberOfLeadingZeros());
111     }
112     if (proto.hasPreferredDomesticCarrierCode()) {
113       pojo.setPreferredDomesticCarrierCode(proto.getPreferredDomesticCarrierCode());
114     }
115     if (proto.hasRawInput()) {
116       pojo.setRawInput(proto.getRawInput());
117     }
118     return pojo;
119   }
120 }
121