X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fhelpers%2FBookmarksDatabaseHelper.java;h=8fe4be9cab056f55f0c229371db53ce123f3b140;hp=8508931461bfa38a1a67a87e9130c45ba95f5a78;hb=85ae33a22d54866507ccc414fc5fcba5106ab38f;hpb=572449f6c66adfc1a3d88e761cb87581a7961df3 diff --git a/app/src/main/java/com/stoutner/privacybrowser/helpers/BookmarksDatabaseHelper.java b/app/src/main/java/com/stoutner/privacybrowser/helpers/BookmarksDatabaseHelper.java index 85089314..8fe4be9c 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/helpers/BookmarksDatabaseHelper.java +++ b/app/src/main/java/com/stoutner/privacybrowser/helpers/BookmarksDatabaseHelper.java @@ -1,5 +1,5 @@ /* - * Copyright © 2016-2019 Soren Stoutner . + * Copyright © 2016-2020 Soren Stoutner . * * This file is part of Privacy Browser . * @@ -295,8 +295,7 @@ public class BookmarksDatabaseHelper extends SQLiteOpenHelper { " WHERE " + IS_FOLDER + " = " + 1 + " ORDER BY " + BOOKMARK_NAME + " ASC"; - // Return the results as a `Cursor`. The second argument is `null` because there are no `selectionArgs`. - // We can't close the `Cursor` because we need to use it in the parent activity. + // Return the results as a cursor. The cursor cannot be closed because it is used in the parent activity. return bookmarksDatabase.rawQuery(GET_ALL_FOLDERS, null); } @@ -335,12 +334,14 @@ public class BookmarksDatabaseHelper extends SQLiteOpenHelper { // Extract the array of IDs not to get to the string builder. for (long databaseIdLong : exceptIdLongArray) { - if (idsNotToGetStringBuilder.length() == 0) { // This is the first number, so only add the number. - idsNotToGetStringBuilder.append(databaseIdLong); - } else { // This is not the first number, so place a `,` before the new number. + // Check to see if there is already a number in the builder. + if (idsNotToGetStringBuilder.length() > 0) { + // This is not the first number, so place a `,` before the new number. idsNotToGetStringBuilder.append(","); - idsNotToGetStringBuilder.append(databaseIdLong); } + + // Add the new number to the builder. + idsNotToGetStringBuilder.append(databaseIdLong); } // Prepare the SQL statement to select all items except those with the specified IDs. @@ -361,12 +362,14 @@ public class BookmarksDatabaseHelper extends SQLiteOpenHelper { // Extract the array of IDs not to get to the string builder. for (long databaseIdLong : exceptIdLongArray) { - if (idsNotToGetStringBuilder.length() == 0) { // This is the first number, so only add the number. - idsNotToGetStringBuilder.append(databaseIdLong); - } else { // This is not the first number, so place a `,` before the new number. + // Check to see if there is already a number in the builder. + if (idsNotToGetStringBuilder.length() > 0) { + // This is not the first number, so place a `,` before the new number. idsNotToGetStringBuilder.append(","); - idsNotToGetStringBuilder.append(databaseIdLong); } + + // Add the new number to the builder. + idsNotToGetStringBuilder.append(databaseIdLong); } // Prepare the SQL statement to select all items except those with the specified IDs. @@ -411,6 +414,22 @@ public class BookmarksDatabaseHelper extends SQLiteOpenHelper { return bookmarksDatabase.rawQuery(GET_BOOKMARKS, null); } + // Get a cursor with just database ID of bookmarks and folders in the specified folder. This is useful for deleting folders with bookmarks that have favorite icons too large to fit in a cursor. + public Cursor getBookmarkIds(String folderName) { + // Get a readable database handle. + SQLiteDatabase bookmarksDatabase = this.getReadableDatabase(); + + // SQL escape the folder name. + folderName = DatabaseUtils.sqlEscapeString(folderName); + + // Get everything in the bookmarks table with `folderName` as the `PARENT_FOLDER`. + String GET_BOOKMARKS = "SELECT " + _ID + " FROM " + BOOKMARKS_TABLE + + " WHERE " + PARENT_FOLDER + " = " + folderName; + + // Return the result as a cursor. The cursor cannot be closed because it is used in the parent activity. + return bookmarksDatabase.rawQuery(GET_BOOKMARKS, null); + } + // Get a cursor for bookmarks and folders in the specified folder except for ta specific list of IDs. public Cursor getBookmarksExcept(long[] exceptIdLongArray, String folderName) { // Get a readable database handle. @@ -421,12 +440,14 @@ public class BookmarksDatabaseHelper extends SQLiteOpenHelper { // Extract the array of IDs not to get to the string builder. for (long databaseIdLong : exceptIdLongArray) { - if (idsNotToGetStringBuilder.length() == 0) { // This is the first number, so only add the number. - idsNotToGetStringBuilder.append(databaseIdLong); - } else { // This is not the first number, so place a `,` before the new number. + // Check to see if there is already a number in the builder. + if (idsNotToGetStringBuilder.length() > 0) { + // This is not the first number, so place a `,` before the new number. idsNotToGetStringBuilder.append(","); - idsNotToGetStringBuilder.append(databaseIdLong); } + + // Add the new number to the builder. + idsNotToGetStringBuilder.append(databaseIdLong); } // SQL escape the folder name. @@ -451,12 +472,14 @@ public class BookmarksDatabaseHelper extends SQLiteOpenHelper { // Extract the array of IDs not to get to the string builder. for (long databaseIdLong : exceptIdLongArray) { - if (idsNotToGetStringBuilder.length() == 0) { // This is the first number, so only add the number. - idsNotToGetStringBuilder.append(databaseIdLong); - } else { // This is not the first number, so place a `,` before the new number. + // Check to see if there is already a number in the builder. + if (idsNotToGetStringBuilder.length() > 0) { + // This is not the first number, so place a `,` before the new number. idsNotToGetStringBuilder.append(","); - idsNotToGetStringBuilder.append(databaseIdLong); } + + // Add the new number to the builder. + idsNotToGetStringBuilder.append(databaseIdLong); } // SQL escape `folderName`. @@ -478,7 +501,7 @@ public class BookmarksDatabaseHelper extends SQLiteOpenHelper { SQLiteDatabase bookmarksDatabase = this.getReadableDatabase(); // Prepare the SQL statement to determine if `databaseId` is a folder. - String CHECK_IF_FOLDER = "SELECT * FROM " + BOOKMARKS_TABLE + + String CHECK_IF_FOLDER = "SELECT " + IS_FOLDER + " FROM " + BOOKMARKS_TABLE + " WHERE " + _ID + " = " + databaseId; // Populate the folder cursor.