diff options
author | Tobias Brunner <tobias@strongswan.org> | 2012-08-28 12:41:56 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2012-08-31 18:24:23 +0200 |
commit | 3f9e90f618b1abb5f25c62d44b2a059cf1b6b78c (patch) | |
tree | 95b6027fadcfa6270598a56273225d80c4cb0abd /src/frontends | |
parent | d0f6481eb0807c3664d137a9c30e84fe35a44e87 (diff) | |
download | strongswan-3f9e90f618b1abb5f25c62d44b2a059cf1b6b78c.tar.bz2 strongswan-3f9e90f618b1abb5f25c62d44b2a059cf1b6b78c.tar.xz |
android: Remove NOT NULL constraint from username column
Diffstat (limited to 'src/frontends')
-rw-r--r-- | src/frontends/android/src/org/strongswan/android/data/VpnProfileDataSource.java | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/frontends/android/src/org/strongswan/android/data/VpnProfileDataSource.java b/src/frontends/android/src/org/strongswan/android/data/VpnProfileDataSource.java index ccc88c1df..6fd68d0c8 100644 --- a/src/frontends/android/src/org/strongswan/android/data/VpnProfileDataSource.java +++ b/src/frontends/android/src/org/strongswan/android/data/VpnProfileDataSource.java @@ -26,6 +26,7 @@ import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; +import android.database.sqlite.SQLiteQueryBuilder; import android.util.Log; public class VpnProfileDataSource @@ -47,7 +48,7 @@ public class VpnProfileDataSource private static final String DATABASE_NAME = "strongswan.db"; private static final String TABLE_VPNPROFILE = "vpnprofile"; - private static final int DATABASE_VERSION = 3; + private static final int DATABASE_VERSION = 4; public static final String DATABASE_CREATE = "CREATE TABLE " + TABLE_VPNPROFILE + " (" + @@ -55,12 +56,12 @@ public class VpnProfileDataSource KEY_NAME + " TEXT NOT NULL," + KEY_GATEWAY + " TEXT NOT NULL," + KEY_VPN_TYPE + " TEXT NOT NULL," + - KEY_USERNAME + " TEXT NOT NULL," + + KEY_USERNAME + " TEXT," + KEY_PASSWORD + " TEXT," + KEY_CERTIFICATE + " TEXT," + KEY_USER_CERTIFICATE + " TEXT" + ");"; - private final String[] ALL_COLUMNS = new String[] { + private static final String[] ALL_COLUMNS = new String[] { KEY_ID, KEY_NAME, KEY_GATEWAY, @@ -99,6 +100,29 @@ public class VpnProfileDataSource db.execSQL("ALTER TABLE " + TABLE_VPNPROFILE + " ADD " + KEY_VPN_TYPE + " TEXT DEFAULT '';"); } + if (oldVersion < 4) + { /* remove NOT NULL constraint from username column */ + updateColumns(db); + } + } + + private void updateColumns(SQLiteDatabase db) + { + db.beginTransaction(); + try + { + db.execSQL("ALTER TABLE " + TABLE_VPNPROFILE + " RENAME TO tmp_" + TABLE_VPNPROFILE + ";"); + db.execSQL(DATABASE_CREATE); + StringBuilder insert = new StringBuilder("INSERT INTO " + TABLE_VPNPROFILE + " SELECT "); + SQLiteQueryBuilder.appendColumns(insert, ALL_COLUMNS); + db.execSQL(insert.append(" FROM tmp_" + TABLE_VPNPROFILE + ";").toString()); + db.execSQL("DROP TABLE tmp_" + TABLE_VPNPROFILE + ";"); + db.setTransactionSuccessful(); + } + finally + { + db.endTransaction(); + } } } |