SpnOverride.java revision d720945f2be5ea5fe0faf67e67d9ea0e184eba67
10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2009 The Android Open Source Project
30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License.
60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at
70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software
110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and
140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License.
150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
17d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkapackage com.android.internal.telephony.uicc;
180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.File;
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.FileNotFoundException;
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.FileReader;
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.IOException;
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.HashMap;
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport org.xmlpull.v1.XmlPullParser;
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport org.xmlpull.v1.XmlPullParserException;
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Environment;
29ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Savilleimport android.telephony.Rlog;
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.util.Xml;
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.util.XmlUtils;
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class SpnOverride {
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private HashMap<String, String> CarrierSpnMap;
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    static final String LOG_TAG = "GSM";
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    static final String PARTNER_SPN_OVERRIDE_PATH ="etc/spn-conf.xml";
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    SpnOverride () {
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        CarrierSpnMap = new HashMap<String, String>();
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        loadSpnOverrides();
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    boolean containsCarrier(String carrier) {
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return CarrierSpnMap.containsKey(carrier);
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    String getSpn(String carrier) {
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return CarrierSpnMap.get(carrier);
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void loadSpnOverrides() {
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        FileReader spnReader;
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        final File spnFile = new File(Environment.getRootDirectory(),
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                PARTNER_SPN_OVERRIDE_PATH);
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            spnReader = new FileReader(spnFile);
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (FileNotFoundException e) {
63ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville            Rlog.w(LOG_TAG, "Can't open " +
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    Environment.getRootDirectory() + "/" + PARTNER_SPN_OVERRIDE_PATH);
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return;
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            XmlPullParser parser = Xml.newPullParser();
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            parser.setInput(spnReader);
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            XmlUtils.beginDocument(parser, "spnOverrides");
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            while (true) {
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                XmlUtils.nextElement(parser);
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                String name = parser.getName();
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if (!"spnOverride".equals(name)) {
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    break;
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                }
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                String numeric = parser.getAttributeValue(null, "numeric");
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                String data    = parser.getAttributeValue(null, "spn");
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                CarrierSpnMap.put(numeric, data);
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (XmlPullParserException e) {
88ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville            Rlog.w(LOG_TAG, "Exception in spn-conf parser " + e);
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (IOException e) {
90ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville            Rlog.w(LOG_TAG, "Exception in spn-conf parser " + e);
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
95