1d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian/*
2d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * Copyright (C) 2015 The Android Open Source Project
3d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian *
4d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * Licensed under the Apache License, Version 2.0 (the "License");
5d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * you may not use this file except in compliance with the License.
6d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * You may obtain a copy of the License at
7d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian *
8d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian *      http://www.apache.org/licenses/LICENSE-2.0
9d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian *
10d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * Unless required by applicable law or agreed to in writing, software
11d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * distributed under the License is distributed on an "AS IS" BASIS,
12d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * See the License for the specific language governing permissions and
14d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * limitations under the License
15d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian */
16d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanianpackage com.android.voicemail.impl.sms;
17d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
18d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanianimport android.os.Bundle;
19d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanianimport com.android.voicemail.impl.NeededForTesting;
20d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanianimport com.android.voicemail.impl.OmtpConstants;
21d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanianimport com.android.voicemail.impl.VisualVoicemailPreferences;
22d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanianimport com.android.voicemail.impl.VvmLog;
23d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
24d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian/**
25d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * Structured data representation of OMTP STATUS message.
26d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian *
27d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * <p>The getters will return null if the field was not set in the message body or it could not be
28d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian * parsed.
29d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian */
30d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanianpublic class StatusMessage {
31d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  // NOTE: Following Status SMS fields are not yet parsed, as they do not seem
32d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  // to be useful for initial omtp source implementation.
33d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  // lang, g_len, vs_len, pw_len, pm, gm, vtc, vt
34d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
35d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mProvisioningStatus;
36d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mStatusReturnCode;
37d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mSubscriptionUrl;
38d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mServerAddress;
39d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mTuiAccessNumber;
40d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mClientSmsDestinationNumber;
41d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mImapPort;
42d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mImapUserName;
43d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mImapPassword;
44d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mSmtpPort;
45d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mSmtpUserName;
46d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mSmtpPassword;
47d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private final String mTuiPasswordLength;
48d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
49d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  @Override
50d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String toString() {
51d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return "StatusMessage [mProvisioningStatus="
52d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + mProvisioningStatus
53d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mStatusReturnCode="
54d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + mStatusReturnCode
55d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mSubscriptionUrl="
56d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + mSubscriptionUrl
57d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mServerAddress="
58d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + mServerAddress
59d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mTuiAccessNumber="
60d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + mTuiAccessNumber
61d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mClientSmsDestinationNumber="
62d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + mClientSmsDestinationNumber
63d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mImapPort="
64d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + mImapPort
65d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mImapUserName="
66d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + mImapUserName
67d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mImapPassword="
68d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + VvmLog.pii(mImapPassword)
69d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mSmtpPort="
70d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + mSmtpPort
71d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mSmtpUserName="
72d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + mSmtpUserName
73d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mSmtpPassword="
74d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + VvmLog.pii(mSmtpPassword)
75d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + ", mTuiPasswordLength="
76d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + mTuiPasswordLength
77d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        + "]";
78d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
79d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
80d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public StatusMessage(Bundle wrappedData) {
81d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mProvisioningStatus = unquote(getString(wrappedData, OmtpConstants.PROVISIONING_STATUS));
82d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mStatusReturnCode = getString(wrappedData, OmtpConstants.RETURN_CODE);
83d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mSubscriptionUrl = getString(wrappedData, OmtpConstants.SUBSCRIPTION_URL);
84d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mServerAddress = getString(wrappedData, OmtpConstants.SERVER_ADDRESS);
85d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mTuiAccessNumber = getString(wrappedData, OmtpConstants.TUI_ACCESS_NUMBER);
86d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mClientSmsDestinationNumber =
87d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        getString(wrappedData, OmtpConstants.CLIENT_SMS_DESTINATION_NUMBER);
88d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mImapPort = getString(wrappedData, OmtpConstants.IMAP_PORT);
89d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mImapUserName = getString(wrappedData, OmtpConstants.IMAP_USER_NAME);
90d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mImapPassword = getString(wrappedData, OmtpConstants.IMAP_PASSWORD);
91d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mSmtpPort = getString(wrappedData, OmtpConstants.SMTP_PORT);
92d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mSmtpUserName = getString(wrappedData, OmtpConstants.SMTP_USER_NAME);
93d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mSmtpPassword = getString(wrappedData, OmtpConstants.SMTP_PASSWORD);
94d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    mTuiPasswordLength = getString(wrappedData, OmtpConstants.TUI_PASSWORD_LENGTH);
95d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
96d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
97d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private static String unquote(String string) {
98d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    if (string.length() < 2) {
99d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian      return string;
100d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    }
101d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    if (string.startsWith("\"") && string.endsWith("\"")) {
102d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian      return string.substring(1, string.length() - 1);
103d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    }
104d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return string;
105d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
106d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
107d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /** @return the subscriber's VVM provisioning status. */
108d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getProvisioningStatus() {
109d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mProvisioningStatus;
110d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
111d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
112d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /** @return the return-code of the status SMS. */
113d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getReturnCode() {
114d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mStatusReturnCode;
115d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
116d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
117d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /**
118d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian   * @return the URL of the voicemail server. This is the URL to send the users to for subscribing
119d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian   *     to the visual voicemail service.
120d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian   */
121d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  @NeededForTesting
122d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getSubscriptionUrl() {
123d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mSubscriptionUrl;
124d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
125d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
126d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /**
127d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian   * @return the voicemail server address. Either server IP address or fully qualified domain name.
128d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian   */
129d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getServerAddress() {
130d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mServerAddress;
131d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
132d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
133d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /**
134d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian   * @return the Telephony User Interface number to call to access voicemails directly from the IVR.
135d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian   */
136d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  @NeededForTesting
137d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getTuiAccessNumber() {
138d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mTuiAccessNumber;
139d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
140d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
141d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /** @return the number to which client originated SMSes should be sent to. */
142d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  @NeededForTesting
143d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getClientSmsDestinationNumber() {
144d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mClientSmsDestinationNumber;
145d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
146d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
147d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /** @return the IMAP server port to talk to. */
148d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getImapPort() {
149d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mImapPort;
150d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
151d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
152d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /** @return the IMAP user name to be used for authentication. */
153d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getImapUserName() {
154d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mImapUserName;
155d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
156d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
157d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /** @return the IMAP password to be used for authentication. */
158d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getImapPassword() {
159d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mImapPassword;
160d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
161d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
162d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /** @return the SMTP server port to talk to. */
163d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  @NeededForTesting
164d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getSmtpPort() {
165d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mSmtpPort;
166d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
167d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
168d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /** @return the SMTP user name to be used for SMTP authentication. */
169d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  @NeededForTesting
170d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getSmtpUserName() {
171d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mSmtpUserName;
172d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
173d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
174d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /** @return the SMTP password to be used for SMTP authentication. */
175d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  @NeededForTesting
176d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getSmtpPassword() {
177d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mSmtpPassword;
178d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
179d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
180d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public String getTuiPasswordLength() {
181d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return mTuiPasswordLength;
182d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
183d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
184d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  private static String getString(Bundle bundle, String key) {
185d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    String value = bundle.getString(key);
186d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    if (value == null) {
187d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian      return "";
188d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    }
189d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return value;
190d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
191d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian
192d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  /** Saves a StatusMessage to the {@link VisualVoicemailPreferences}. Not all fields are saved. */
193d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  public VisualVoicemailPreferences.Editor putStatus(VisualVoicemailPreferences.Editor editor) {
194d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian    return editor
195d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        .putString(OmtpConstants.IMAP_PORT, getImapPort())
196d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        .putString(OmtpConstants.SERVER_ADDRESS, getServerAddress())
197d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        .putString(OmtpConstants.IMAP_USER_NAME, getImapUserName())
198d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        .putString(OmtpConstants.IMAP_PASSWORD, getImapPassword())
199d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian        .putString(OmtpConstants.TUI_PASSWORD_LENGTH, getTuiPasswordLength());
200d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian  }
201d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian}
202