/**
* Android ownCloud News
*
* @author David Luhmer
* @copyright 2013 David Luhmer david-dev@live.de
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
package de.luhmer.owncloudnewsreader.reader.owncloud;
import android.content.Context;
import java.util.List;
import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm;
import de.luhmer.owncloudnewsreader.reader.AsyncTask_Reader;
import de.luhmer.owncloudnewsreader.reader.FeedItemTags;
import de.luhmer.owncloudnewsreader.reader.OnAsyncTaskCompletedListener;
public class AsyncTask_PerformItemStateChange extends AsyncTask_Reader
{
public AsyncTask_PerformItemStateChange(final Context context, final OnAsyncTaskCompletedListener... listener) {
super(context, listener);
}
@Override
protected Exception doInBackground(Object... params) {
boolean succeeded;
try {
DatabaseConnectionOrm dbConn = new DatabaseConnectionOrm(context);
//Mark as READ
List<String> itemIds = dbConn.getRssItemsIdsFromList(dbConn.getAllNewReadRssItems());
boolean result = apiFuture.get().PerformTagExecution(itemIds, FeedItemTags.MARK_ITEM_AS_READ, context);
if(result)
dbConn.change_readUnreadStateOfItem(itemIds, true);
succeeded = result;
//Mark as UNREAD
itemIds = dbConn.getRssItemsIdsFromList(dbConn.getAllNewUnreadRssItems());
result = apiFuture.get().PerformTagExecution(itemIds, FeedItemTags.MARK_ITEM_AS_UNREAD, context);
if(result)
dbConn.change_readUnreadStateOfItem(itemIds, false);
succeeded &= result;
//Mark as STARRED
itemIds = dbConn.getRssItemsIdsFromList(dbConn.getAllNewStarredRssItems());
result = apiFuture.get().PerformTagExecution(itemIds, FeedItemTags.MARK_ITEM_AS_STARRED, context);
if(result)
dbConn.change_starrUnstarrStateOfItem(itemIds, true);
succeeded &= result;
//Mark as UNSTARRED
itemIds = dbConn.getRssItemsIdsFromList(dbConn.getAllNewUnstarredRssItems());
result = apiFuture.get().PerformTagExecution(itemIds, FeedItemTags.MARK_ITEM_AS_UNSTARRED, context);
if(result)
dbConn.change_starrUnstarrStateOfItem(itemIds, false);
succeeded &= result;
} catch (Exception e) {
return e;
}
Exception e = null;
if(!succeeded)
e = new Exception("Performing item state change failed");
return e;
}
@Override
protected void onPostExecute(Exception ex) {
for (OnAsyncTaskCompletedListener listenerInstance : listener) {
if(listenerInstance != null)
listenerInstance.onAsyncTaskCompleted(ex);
}
detach();
}
}