/*
- * 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>.
*
" 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);
}
// 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.
// 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.
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.
// 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.
// 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`.
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.