diff options
author | recalculated <recalculated@users.noreply.github.com> | 2016-01-24 20:56:07 -0600 |
---|---|---|
committer | recalculated <recalculated@users.noreply.github.com> | 2016-01-24 20:56:07 -0600 |
commit | 4329aef26d01704c16bf2e3571538291f0bf3494 (patch) | |
tree | 5b6edcd572543b4c7727c251fa262b278011e122 /core/src | |
parent | b02c70425e31219fa0ac745de79a3ccf8db21d36 (diff) | |
download | AntennaPod-4329aef26d01704c16bf2e3571538291f0bf3494.zip |
Add database migration for filter
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java index 915ca14c7..63b563525 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java @@ -1501,7 +1501,7 @@ public class PodDBAdapter { */ private static class PodDBHelper extends SQLiteOpenHelper { - private final static int VERSION = 1040013; + private final static int VERSION = 1050003; private Context context; @@ -1745,6 +1745,42 @@ public class PodDBAdapter { db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_PUBDATE); db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_READ); } + if (oldVersion < 1050003) { + // Migrates feed list filter data + + db.beginTransaction(); + + // Change to intermediate values to avoid overwriting in the following find/replace + db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + + "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'unplayed', 'noplay')"); + db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + + "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'not_queued', 'noqueue')"); + db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + + "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'not_downloaded', 'nodl')"); + + // Replace played, queued, and downloaded with their opposites + db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + + "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'played', 'unplayed')"); + db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + + "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'queued', 'not_queued')"); + db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + + "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'downloaded', 'not_downloaded')"); + + // Now replace intermediates for unplayed, not queued, etc. with their opposites + db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + + "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'noplay', 'played')"); + db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + + "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'noqueue', 'queued')"); + db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + + "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'nodl', 'downloaded')"); + + // Paused doesn't have an opposite, so unplayed is the next best option + db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + + "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'paused', 'unplayed')"); + + db.setTransactionSuccessful(); + db.endTransaction(); + } EventBus.getDefault().post(ProgressEvent.end()); } |