aboutsummaryrefslogtreecommitdiffstats
path: root/src/frontends
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-08-28 12:41:56 +0200
committerTobias Brunner <tobias@strongswan.org>2012-08-31 18:24:23 +0200
commit3f9e90f618b1abb5f25c62d44b2a059cf1b6b78c (patch)
tree95b6027fadcfa6270598a56273225d80c4cb0abd /src/frontends
parentd0f6481eb0807c3664d137a9c30e84fe35a44e87 (diff)
downloadstrongswan-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.java30
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();
+ }
}
}