Add support for travel books in WikivoyageLocalDataHelper; add method for clearing all search history
This commit is contained in:
parent
b6ac5127e6
commit
e957ba5f83
1 changed files with 60 additions and 15 deletions
|
@ -60,6 +60,11 @@ public class WikivoyageLocalDataHelper {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearHistory() {
|
||||||
|
historyMap.clear();
|
||||||
|
dbHelper.clearAllHistory();
|
||||||
|
}
|
||||||
|
|
||||||
public void addToHistory(@NonNull WikivoyageArticle article) {
|
public void addToHistory(@NonNull WikivoyageArticle article) {
|
||||||
addToHistory(article.getCityId(), article.getTitle(), article.getLang(), article.getIsPartOf());
|
addToHistory(article.getCityId(), article.getTitle(), article.getLang(), article.getIsPartOf());
|
||||||
}
|
}
|
||||||
|
@ -153,7 +158,7 @@ public class WikivoyageLocalDataHelper {
|
||||||
|
|
||||||
private static class WikivoyageLocalDataDbHelper {
|
private static class WikivoyageLocalDataDbHelper {
|
||||||
|
|
||||||
private static final int DB_VERSION = 2;
|
private static final int DB_VERSION = 3;
|
||||||
private static final String DB_NAME = "wikivoyage_local_data";
|
private static final String DB_NAME = "wikivoyage_local_data";
|
||||||
|
|
||||||
private static final String HISTORY_TABLE_NAME = "wikivoyage_search_history";
|
private static final String HISTORY_TABLE_NAME = "wikivoyage_search_history";
|
||||||
|
@ -162,6 +167,7 @@ public class WikivoyageLocalDataHelper {
|
||||||
private static final String HISTORY_COL_LANG = "lang";
|
private static final String HISTORY_COL_LANG = "lang";
|
||||||
private static final String HISTORY_COL_IS_PART_OF = "is_part_of";
|
private static final String HISTORY_COL_IS_PART_OF = "is_part_of";
|
||||||
private static final String HISTORY_COL_LAST_ACCESSED = "last_accessed";
|
private static final String HISTORY_COL_LAST_ACCESSED = "last_accessed";
|
||||||
|
private static final String HISTORY_COL_TRAVEL_BOOK = "travel_book";
|
||||||
|
|
||||||
private static final String HISTORY_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " +
|
private static final String HISTORY_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " +
|
||||||
HISTORY_TABLE_NAME + " (" +
|
HISTORY_TABLE_NAME + " (" +
|
||||||
|
@ -169,7 +175,8 @@ public class WikivoyageLocalDataHelper {
|
||||||
HISTORY_COL_ARTICLE_TITLE + " TEXT, " +
|
HISTORY_COL_ARTICLE_TITLE + " TEXT, " +
|
||||||
HISTORY_COL_LANG + " TEXT, " +
|
HISTORY_COL_LANG + " TEXT, " +
|
||||||
HISTORY_COL_IS_PART_OF + " TEXT, " +
|
HISTORY_COL_IS_PART_OF + " TEXT, " +
|
||||||
HISTORY_COL_LAST_ACCESSED + " long);";
|
HISTORY_COL_LAST_ACCESSED + " long, " +
|
||||||
|
HISTORY_COL_TRAVEL_BOOK + " TEXT);";
|
||||||
|
|
||||||
private static final String HISTORY_TABLE_SELECT = "SELECT " +
|
private static final String HISTORY_TABLE_SELECT = "SELECT " +
|
||||||
HISTORY_COL_CITY_ID + ", " +
|
HISTORY_COL_CITY_ID + ", " +
|
||||||
|
@ -186,6 +193,7 @@ public class WikivoyageLocalDataHelper {
|
||||||
private static final String BOOKMARKS_COL_IS_PART_OF = "is_part_of";
|
private static final String BOOKMARKS_COL_IS_PART_OF = "is_part_of";
|
||||||
private static final String BOOKMARKS_COL_IMAGE_TITLE = "image_title";
|
private static final String BOOKMARKS_COL_IMAGE_TITLE = "image_title";
|
||||||
private static final String BOOKMARKS_COL_PARTIAL_CONTENT = "partial_content";
|
private static final String BOOKMARKS_COL_PARTIAL_CONTENT = "partial_content";
|
||||||
|
private static final String BOOKMARKS_COL_TRAVEL_BOOK = "travel_book";
|
||||||
|
|
||||||
private static final String BOOKMARKS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " +
|
private static final String BOOKMARKS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " +
|
||||||
BOOKMARKS_TABLE_NAME + " (" +
|
BOOKMARKS_TABLE_NAME + " (" +
|
||||||
|
@ -194,7 +202,8 @@ public class WikivoyageLocalDataHelper {
|
||||||
BOOKMARKS_COL_LANG + " TEXT, " +
|
BOOKMARKS_COL_LANG + " TEXT, " +
|
||||||
BOOKMARKS_COL_IS_PART_OF + " TEXT, " +
|
BOOKMARKS_COL_IS_PART_OF + " TEXT, " +
|
||||||
BOOKMARKS_COL_IMAGE_TITLE + " TEXT, " +
|
BOOKMARKS_COL_IMAGE_TITLE + " TEXT, " +
|
||||||
BOOKMARKS_COL_PARTIAL_CONTENT + " TEXT);";
|
BOOKMARKS_COL_PARTIAL_CONTENT + " TEXT, " +
|
||||||
|
BOOKMARKS_COL_TRAVEL_BOOK + " TEXT);";
|
||||||
|
|
||||||
private static final String BOOKMARKS_TABLE_SELECT = "SELECT " +
|
private static final String BOOKMARKS_TABLE_SELECT = "SELECT " +
|
||||||
BOOKMARKS_COL_CITY_ID + ", " +
|
BOOKMARKS_COL_CITY_ID + ", " +
|
||||||
|
@ -240,6 +249,13 @@ public class WikivoyageLocalDataHelper {
|
||||||
if (oldVersion < 2) {
|
if (oldVersion < 2) {
|
||||||
conn.execSQL(BOOKMARKS_TABLE_CREATE);
|
conn.execSQL(BOOKMARKS_TABLE_CREATE);
|
||||||
}
|
}
|
||||||
|
if (oldVersion < 3) {
|
||||||
|
conn.execSQL("ALTER TABLE " + HISTORY_TABLE_NAME + " ADD " + HISTORY_COL_TRAVEL_BOOK + " TEXT");
|
||||||
|
conn.execSQL("ALTER TABLE " + BOOKMARKS_TABLE_NAME + " ADD " + BOOKMARKS_COL_TRAVEL_BOOK + " TEXT");
|
||||||
|
Object[] args = new Object[]{context.getWikivoyageDbHelper().getSelectedTravelBook().getName()};
|
||||||
|
conn.execSQL("UPDATE " + HISTORY_TABLE_NAME + " SET " + HISTORY_COL_TRAVEL_BOOK + " = ?", args);
|
||||||
|
conn.execSQL("UPDATE " + BOOKMARKS_TABLE_NAME + " SET " + BOOKMARKS_COL_TRAVEL_BOOK + " = ?", args);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
@ -248,7 +264,9 @@ public class WikivoyageLocalDataHelper {
|
||||||
SQLiteConnection conn = openConnection(true);
|
SQLiteConnection conn = openConnection(true);
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
try {
|
try {
|
||||||
SQLiteCursor cursor = conn.rawQuery(HISTORY_TABLE_SELECT, null);
|
String query = HISTORY_TABLE_SELECT + " WHERE " + HISTORY_COL_TRAVEL_BOOK + " = ?";
|
||||||
|
String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get();
|
||||||
|
SQLiteCursor cursor = conn.rawQuery(query, new String[]{travelBook});
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
WikivoyageSearchHistoryItem item = readHistoryItem(cursor);
|
WikivoyageSearchHistoryItem item = readHistoryItem(cursor);
|
||||||
|
@ -266,8 +284,10 @@ public class WikivoyageLocalDataHelper {
|
||||||
SQLiteConnection conn = openConnection(false);
|
SQLiteConnection conn = openConnection(false);
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
try {
|
try {
|
||||||
conn.execSQL("INSERT INTO " + HISTORY_TABLE_NAME + " VALUES (?, ?, ?, ?, ?)",
|
String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get();
|
||||||
new Object[]{item.cityId, item.articleTitle, item.lang, item.isPartOf, item.lastAccessed});
|
conn.execSQL("INSERT INTO " + HISTORY_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?)",
|
||||||
|
new Object[]{item.cityId, item.articleTitle, item.lang,
|
||||||
|
item.isPartOf, item.lastAccessed, travelBook});
|
||||||
} finally {
|
} finally {
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
|
@ -278,13 +298,16 @@ public class WikivoyageLocalDataHelper {
|
||||||
SQLiteConnection conn = openConnection(false);
|
SQLiteConnection conn = openConnection(false);
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
try {
|
try {
|
||||||
|
String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get();
|
||||||
conn.execSQL("UPDATE " + HISTORY_TABLE_NAME + " SET " +
|
conn.execSQL("UPDATE " + HISTORY_TABLE_NAME + " SET " +
|
||||||
HISTORY_COL_ARTICLE_TITLE + " = ?, " +
|
HISTORY_COL_ARTICLE_TITLE + " = ?, " +
|
||||||
HISTORY_COL_LANG + " = ?, " +
|
HISTORY_COL_LANG + " = ?, " +
|
||||||
HISTORY_COL_IS_PART_OF + " = ?, " +
|
HISTORY_COL_IS_PART_OF + " = ?, " +
|
||||||
HISTORY_COL_LAST_ACCESSED + " = ? " +
|
HISTORY_COL_LAST_ACCESSED + " = ? " +
|
||||||
"WHERE " + HISTORY_COL_CITY_ID + " = ?",
|
"WHERE " + HISTORY_COL_CITY_ID + " = ? " +
|
||||||
new Object[]{item.articleTitle, item.lang, item.isPartOf, item.lastAccessed, item.cityId});
|
"AND " + HISTORY_COL_TRAVEL_BOOK + " = ?",
|
||||||
|
new Object[]{item.articleTitle, item.lang, item.isPartOf,
|
||||||
|
item.lastAccessed, item.cityId, travelBook});
|
||||||
} finally {
|
} finally {
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
|
@ -295,8 +318,25 @@ public class WikivoyageLocalDataHelper {
|
||||||
SQLiteConnection conn = openConnection(false);
|
SQLiteConnection conn = openConnection(false);
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
try {
|
try {
|
||||||
conn.execSQL("DELETE FROM " + HISTORY_TABLE_NAME + " WHERE " + HISTORY_COL_CITY_ID + " = ?",
|
String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get();
|
||||||
new Object[]{item.cityId});
|
conn.execSQL("DELETE FROM " + HISTORY_TABLE_NAME +
|
||||||
|
" WHERE " + HISTORY_COL_CITY_ID + " = ?" +
|
||||||
|
" AND " + HISTORY_COL_TRAVEL_BOOK + " = ?",
|
||||||
|
new Object[]{item.cityId, travelBook});
|
||||||
|
} finally {
|
||||||
|
conn.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void clearAllHistory() {
|
||||||
|
SQLiteConnection conn = openConnection(false);
|
||||||
|
if (conn != null) {
|
||||||
|
try {
|
||||||
|
String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get();
|
||||||
|
conn.execSQL("DELETE FROM " + HISTORY_TABLE_NAME +
|
||||||
|
" WHERE " + HISTORY_COL_TRAVEL_BOOK + " = ?",
|
||||||
|
new Object[]{travelBook});
|
||||||
} finally {
|
} finally {
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
|
@ -309,7 +349,9 @@ public class WikivoyageLocalDataHelper {
|
||||||
SQLiteConnection conn = openConnection(true);
|
SQLiteConnection conn = openConnection(true);
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
try {
|
try {
|
||||||
SQLiteCursor cursor = conn.rawQuery(BOOKMARKS_TABLE_SELECT, null);
|
String query = BOOKMARKS_TABLE_SELECT + " WHERE " + BOOKMARKS_COL_TRAVEL_BOOK + " = ?";
|
||||||
|
String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get();
|
||||||
|
SQLiteCursor cursor = conn.rawQuery(query, new String[]{travelBook});
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
res.add(readSavedArticle(cursor));
|
res.add(readSavedArticle(cursor));
|
||||||
|
@ -326,9 +368,10 @@ public class WikivoyageLocalDataHelper {
|
||||||
SQLiteConnection conn = openConnection(false);
|
SQLiteConnection conn = openConnection(false);
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
try {
|
try {
|
||||||
conn.execSQL("INSERT INTO " + BOOKMARKS_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?)",
|
String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get();
|
||||||
|
conn.execSQL("INSERT INTO " + BOOKMARKS_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?, ?)",
|
||||||
new Object[]{article.cityId, article.title, article.lang,
|
new Object[]{article.cityId, article.title, article.lang,
|
||||||
article.aggregatedPartOf, article.imageTitle, article.content});
|
article.aggregatedPartOf, article.imageTitle, article.content, travelBook});
|
||||||
} finally {
|
} finally {
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
|
@ -339,10 +382,12 @@ public class WikivoyageLocalDataHelper {
|
||||||
SQLiteConnection conn = openConnection(false);
|
SQLiteConnection conn = openConnection(false);
|
||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
try {
|
try {
|
||||||
|
String travelBook = context.getSettings().SELECTED_TRAVEL_BOOK.get();
|
||||||
conn.execSQL("DELETE FROM " + BOOKMARKS_TABLE_NAME +
|
conn.execSQL("DELETE FROM " + BOOKMARKS_TABLE_NAME +
|
||||||
" WHERE " + BOOKMARKS_COL_CITY_ID + " = ?" +
|
" WHERE " + BOOKMARKS_COL_CITY_ID + " = ?" +
|
||||||
" AND " + BOOKMARKS_COL_LANG + " = ?",
|
" AND " + BOOKMARKS_COL_LANG + " = ?" +
|
||||||
new Object[]{article.cityId, article.lang});
|
" AND " + BOOKMARKS_COL_TRAVEL_BOOK + " = ?",
|
||||||
|
new Object[]{article.cityId, article.lang, travelBook});
|
||||||
} finally {
|
} finally {
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue