19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.internal.telephony.gsm;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.telephony.*;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This class represents a apn setting for create PDP link
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ApnSetting {
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String carrier;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String apn;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String proxy;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String port;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String mmsc;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String mmsProxy;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String mmsPort;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String user;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String password;
342811f1625ebdb7f7483b8b866694474f89112d8cJaikumar Ganesh    int authType;
3578b6e899145b08bbb8ccf3f12ecf0a5bb792033bRobert Greenwalt    public String[] types;
36fe3492dde042cc6646e63f12a237773391806328John Huang    int id;
37fe3492dde042cc6646e63f12a237773391806328John Huang    String numeric;
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4078b6e899145b08bbb8ccf3f12ecf0a5bb792033bRobert Greenwalt    public ApnSetting(int id, String numeric, String carrier, String apn, String proxy, String port,
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String mmsc, String mmsProxy, String mmsPort,
422811f1625ebdb7f7483b8b866694474f89112d8cJaikumar Ganesh            String user, String password, int authType, String[] types) {
43fe3492dde042cc6646e63f12a237773391806328John Huang        this.id = id;
44fe3492dde042cc6646e63f12a237773391806328John Huang        this.numeric = numeric;
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.carrier = carrier;
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.apn = apn;
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.proxy = proxy;
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.port = port;
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.mmsc = mmsc;
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.mmsProxy = mmsProxy;
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.mmsPort = mmsPort;
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.user = user;
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.password = password;
542811f1625ebdb7f7483b8b866694474f89112d8cJaikumar Ganesh        this.authType = authType;
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.types = types;
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5877b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[0] = name
5977b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[1] = apn
6077b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[2] = proxy
6177b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[3] = port
6277b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[4] = username
6377b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[5] = password
6477b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[6] = server
6577b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[7] = mmsc
6677b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[8] = mmsproxy
6777b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[9] = mmsport
6877b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[10] = mcc
6977b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[11] = mnc
7077b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[12] = auth
7177b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    // data[13] = first type...
7277b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    public static ApnSetting fromString(String data) {
7377b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt        if (data == null) return null;
7477b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt        String[] a = data.split("\\s*,\\s*");
7577b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt        if (a.length < 14) return null;
7677b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt        int authType = 0;
7777b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt        try {
7877b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt            authType = Integer.parseInt(a[12]);
7977b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt        } catch (Exception e) {
8077b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt        }
8177b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt        String[] typeArray = new String[a.length - 13];
8277b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt        System.arraycopy(a, 13, typeArray, 0, a.length - 13);
8377b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt        return new ApnSetting(-1,a[10]+a[11],a[0],a[1],a[2],a[3],a[7],a[8],
8477b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt                a[9],a[4],a[5],authType,typeArray);
8577b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt    }
8677b32ddbbeeb13a07b16f23af705567c75a8e3dfRobert Greenwalt
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        StringBuilder sb = new StringBuilder();
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sb.append(carrier)
90fe3492dde042cc6646e63f12a237773391806328John Huang        .append(", ").append(id)
91fe3492dde042cc6646e63f12a237773391806328John Huang        .append(", ").append(numeric)
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        .append(", ").append(apn)
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        .append(", ").append(proxy)
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        .append(", ").append(mmsc)
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        .append(", ").append(mmsProxy)
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        .append(", ").append(mmsPort)
972811f1625ebdb7f7483b8b866694474f89112d8cJaikumar Ganesh        .append(", ").append(port)
982811f1625ebdb7f7483b8b866694474f89112d8cJaikumar Ganesh        .append(", ").append(authType);
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        for (String t : types) {
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            sb.append(", ").append(t);
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return sb.toString();
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10578b6e899145b08bbb8ccf3f12ecf0a5bb792033bRobert Greenwalt    public boolean canHandleType(String type) {
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        for (String t : types) {
10742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt            // DEFAULT handles all, and HIPRI is handled by DEFAULT
10842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt            if (t.equals(type) || t.equals(Phone.APN_TYPE_ALL) ||
10942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt                    (t.equals(Phone.APN_TYPE_DEFAULT) &&
11042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt                    type.equals(Phone.APN_TYPE_HIPRI))) {
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return true;
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return false;
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
117