/*
* Copyright (c) 2015, Nils Braden
*
* This file is part of ttrss-reader-fork. This program is free software; you
* can redistribute it and/or modify it under the terms of the GNU
* General Public License as published by the Free Software Foundation;
* either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program; If
* not, see http://www.gnu.org/licenses/.
*/
package org.ttrssreader.model;
import org.ttrssreader.controllers.Controller;
import org.ttrssreader.controllers.DBHelper;
import org.ttrssreader.utils.Utils;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
class FeedCursorHelper extends MainCursorHelper {
@SuppressWarnings("unused")
private static final String TAG = FeedCursorHelper.class.getSimpleName();
FeedCursorHelper(int categoryId) {
super();
this.categoryId = categoryId;
}
@Override
public Cursor createCursor(SQLiteDatabase db, boolean overrideDisplayUnread, boolean buildSafeQuery) {
StringBuilder query = new StringBuilder();
String lastOpenedFeedsList = Utils.separateItems(Controller.getInstance().lastOpenedFeeds, ",");
boolean displayUnread = Controller.getInstance().onlyUnread();
boolean invertSortFeedCats = Controller.getInstance().invertSortFeedscats();
if (overrideDisplayUnread) displayUnread = false;
if (lastOpenedFeedsList.length() > 0 && !buildSafeQuery) {
query.append("SELECT _id,title,unread FROM (");
}
query.append("SELECT _id,title,unread FROM ");
query.append(DBHelper.TABLE_FEEDS);
query.append(" WHERE categoryId=");
query.append(categoryId);
query.append(displayUnread ? " AND unread>0" : "");
if (lastOpenedFeedsList.length() > 0 && !buildSafeQuery) {
query.append(" UNION SELECT _id,title,unread");
query.append(" FROM feeds WHERE _id IN (");
query.append(lastOpenedFeedsList);
query.append(" ))");
}
query.append(" ORDER BY UPPER(title) ");
query.append(invertSortFeedCats ? "DESC" : "ASC");
query.append(buildSafeQuery ? " LIMIT 200" : " LIMIT 600");
return db.rawQuery(query.toString(), null);
}
}