read MVNO config and insert DB

Update DB version because of using new field for MVNO.
If there is config of MVNO, insert MVNO data to telephony.db.
Default value of fields related to MVNO sets empty value('').

Bug: 8143480

Change-Id: Idfa06c6f39a2c15ff4f0815724823f44b76ac819
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index f9b1e58..62435ee 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -57,7 +57,7 @@
     private static final String DATABASE_NAME = "telephony.db";
     private static final boolean DBG = true;
 
-    private static final int DATABASE_VERSION = 7 << 16;
+    private static final int DATABASE_VERSION = 8 << 16;
     private static final int URL_TELEPHONY = 1;
     private static final int URL_CURRENT = 2;
     private static final int URL_ID = 3;
@@ -148,7 +148,9 @@
                     "protocol TEXT," +
                     "roaming_protocol TEXT," +
                     "carrier_enabled BOOLEAN," +
-                    "bearer INTEGER);");
+                    "bearer INTEGER," +
+                    "mvno_type TEXT," +
+                    "mvno_match_data TEXT);");
 
             initDatabase(db);
         }
@@ -233,6 +235,15 @@
                         " ADD COLUMN bearer INTEGER DEFAULT 0;");
                 oldVersion = 7 << 16 | 6;
             }
+            if (oldVersion < (8 << 16 | 6)) {
+                // Add mvno_type, mvno_match_data fields to the APN.
+                // The XML file does not change.
+                db.execSQL("ALTER TABLE " + CARRIERS_TABLE +
+                        " ADD COLUMN mvno_type TEXT DEFAULT '';");
+                db.execSQL("ALTER TABLE " + CARRIERS_TABLE +
+                        " ADD COLUMN mvno_match_data TEXT DEFAULT '';");
+                oldVersion = 8 << 16 | 6;
+            }
         }
 
         /**
@@ -308,6 +319,15 @@
             if (bearer != null) {
                 map.put(Telephony.Carriers.BEARER, Integer.parseInt(bearer));
             }
+
+            String mvno_type = parser.getAttributeValue(null, "mvno_type");
+            if (mvno_type != null) {
+                String mvno_match_data = parser.getAttributeValue(null, "mvno_match_data");
+                if (mvno_match_data != null) {
+                    map.put(Telephony.Carriers.MVNO_TYPE, mvno_type);
+                    map.put(Telephony.Carriers.MVNO_MATCH_DATA, mvno_match_data);
+                }
+            }
             return map;
         }
 
@@ -361,6 +381,12 @@
             if (row.containsKey(Telephony.Carriers.BEARER) == false) {
                 row.put(Telephony.Carriers.BEARER, 0);
             }
+            if (row.containsKey(Telephony.Carriers.MVNO_TYPE) == false) {
+                row.put(Telephony.Carriers.MVNO_TYPE, "");
+            }
+            if (row.containsKey(Telephony.Carriers.MVNO_MATCH_DATA) == false) {
+                row.put(Telephony.Carriers.MVNO_MATCH_DATA, "");
+            }
             db.insert(CARRIERS_TABLE, null, row);
         }
     }
@@ -565,6 +591,12 @@
                 if (!values.containsKey(Telephony.Carriers.BEARER)) {
                     values.put(Telephony.Carriers.BEARER, 0);
                 }
+                if (!values.containsKey(Telephony.Carriers.MVNO_TYPE)) {
+                    values.put(Telephony.Carriers.MVNO_TYPE, "");
+                }
+                if (!values.containsKey(Telephony.Carriers.MVNO_MATCH_DATA)) {
+                    values.put(Telephony.Carriers.MVNO_MATCH_DATA, "");
+                }
 
                 long rowID = db.insert(CARRIERS_TABLE, null, values);
                 if (rowID > 0)