]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/helpers/BookmarksDatabaseHelper.java
Save and restore the app state. https://redmine.stoutner.com/issues/461
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / helpers / BookmarksDatabaseHelper.java
index a2af6451ccfbf2787f479667881a7a9d0d046071..529a769b8d03bbf26539b59895ba35540f8a8bc5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser <https://www.stoutner.com/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.