/*
* 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.updaters;
import org.ttrssreader.controllers.DBHelper;
import org.ttrssreader.controllers.Data;
import org.ttrssreader.model.pojos.Article;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
public class ArticleReadStateUpdater implements IUpdatable {
@SuppressWarnings("unused")
private static final String TAG = ArticleReadStateUpdater.class.getSimpleName();
private int state;
private Collection<Article> articles = null;
/* articleState: 0 = mark as read, 1 = mark as unread */
public ArticleReadStateUpdater(Article article, int articleState) {
articles = new ArrayList<>();
articles.add(article);
state = articleState;
article.isUnread = (articleState > 0);
}
/* articleState: 0 = mark as read, 1 = mark as unread */
public ArticleReadStateUpdater(Collection<Article> articlesList, int articleState) {
articles = new ArrayList<>();
articles.addAll(articlesList);
state = articleState;
for (Article article : articles) {
article.isUnread = (articleState > 0);
}
}
@Override
public void update() {
if (articles != null) {
Set<Integer> ids = new HashSet<>();
for (Article article : articles) {
ids.add(article.id);
article.isUnread = (state > 0);
}
if (!ids.isEmpty()) {
DBHelper.getInstance().markArticles(ids, "isUnread", state);
Data.getInstance().calculateCounters();
Data.getInstance().notifyListeners();
Data.getInstance().setArticleRead(ids, state);
}
}
}
}