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=529a769b8d03bbf26539b59895ba35540f8a8bc5;hp=a2af6451ccfbf2787f479667881a7a9d0d046071;hb=b82022327701273b1b56419e8d6042895c0bc7b9;hpb=47b689dbdaf08b9636021ddd8f72ca9ee7f11998 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 a2af6451..529a769b 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 . * @@ -334,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. @@ -360,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. @@ -410,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. @@ -420,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. @@ -450,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`. @@ -477,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.