package com.nuscomputing.ivle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.nuscomputing.ivle.ModulesFragment.ModulesCursorAdapter;
import com.nuscomputing.ivle.providers.AnnouncementsContract;
import com.nuscomputing.ivle.providers.ModulesContract;
import com.nuscomputing.ivle.providers.UsersContract;
import com.nuscomputing.ivle.providers.WebcastFilesContract;
import com.nuscomputing.ivle.providers.WebcastItemGroupsContract;
import com.nuscomputing.ivle.providers.WebcastsContract;
import com.nuscomputing.ivle.providers.WorkbinFilesContract;
import com.nuscomputing.ivle.providers.WorkbinFoldersContract;
import com.nuscomputing.ivle.providers.WorkbinsContract;
import android.accounts.Account;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
import android.util.Log;
import android.widget.Adapter;
/**
* The primary loader for IVLE data.
* @author yjwong
*/
public class DataLoader implements LoaderManager.LoaderCallbacks<Cursor> {
// {{{ properties
/** TAG for logging */
public static final String TAG = "DataLoader";
/** Loader IDs */
public static final int LOADER_MODULES_FRAGMENT = 1;
public static final int LOADER_MODULE_INFO_FRAGMENT = 2;
public static final int LOADER_MODULE_ANNOUNCEMENTS_FRAGMENT = 3;
public static final int LOADER_MODULE_WEBCASTS_FRAGMENT = 4;
public static final int LOADER_MODULE_WORKBINS_FRAGMENT = 5;
public static final int LOADER_VIEW_ANNOUNCEMENT_FRAGMENT = 6;
public static final int LOADER_VIEW_WEBCAST_ACTIVITY = 7;
public static final int LOADER_VIEW_WEBCAST_FRAGMENT = 8;
public static final int LOADER_VIEW_WEBCAST_ITEM_GROUP_FRAGMENT = 9;
public static final int LOADER_VIEW_WEBCAST_FILE_ACTIVITY = 10;
public static final int LOADER_VIEW_WORKBIN_ACTIVITY = 11;
public static final int LOADER_VIEW_WORKBIN_FRAGMENT = 12;
public static final int LOADER_VIEW_WORKBIN_FILES_FRAGMENT = 13;
public static final int LOADER_VIEW_WORKBIN_FOLDERS_FRAGMENT = 14;
public static final int LOADER_NEW_ANNOUNCEMENTS_FRAGMENT = 15;
/** Loader IDs for AsyncTaskLoaders that are not handled by this loader */
public static final int LOADER_MODULE_INFO_FRAGMENT_INFO = 15;
public static final int LOADER_MODULE_INFO_FRAGMENT_DESCRIPTIONS = 16;
public static final int LOADER_MODULE_LECTURERS_FRAGMENT = 17;
public static final int LOADER_MODULE_WEBLINKS_FRAGMENT = 18;
public static final int LOADER_SEARCHABLE_FRAGMENT = 19;
public static final int LOADER_CHECK_FOR_UPDATES = 20;
public static final int LOADER_PUBLIC_NEWS_FRAGMENT = 21;
/** Listener for data loader events */
private DataLoaderListener mListener;
/** The context */
private Context mContext;
/** The adapter, if any */
private Adapter mAdapter;
// }}}
// {{{ methods
public DataLoader(Context context) {
mContext = context;
mListener = null;
}
public DataLoader(Context context, DataLoaderListener listener) {
mContext = context;
mListener = listener;
}
public DataLoader(Context context, Adapter adapter) {
mContext = context;
mAdapter = adapter;
mListener = null;
}
public DataLoader(Context context, Adapter adapter, DataLoaderListener listener) {
mContext = context;
mAdapter = adapter;
mListener = listener;
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
Log.v(TAG, "onCreateLoader");
// Obtain the current account.
Account activeAccount = AccountUtils.getActiveAccount(mContext, true);
if (activeAccount == null) {
Log.e(TAG, "Error loading accounts");
return null;
}
// Obtain the account name.
String accountName = activeAccount.name;
if (accountName == null) {
throw new IllegalStateException("Account name cannot be retrieved");
}
Log.d(TAG, "Account found, using " + accountName);
// Select the correct loader based on the provided ID.
long moduleId = -1;
long announcementId = -1;
long webcastId = -1;
long webcastItemGroupId = -1;
long webcastFileId = -1;
long workbinId = -1;
long workbinFolderId = -1;
switch (id) {
case LOADER_MODULE_INFO_FRAGMENT:
case LOADER_MODULE_ANNOUNCEMENTS_FRAGMENT:
case LOADER_MODULE_WEBCASTS_FRAGMENT:
case LOADER_MODULE_WORKBINS_FRAGMENT:
// Obtain the module ID.
moduleId = args.getLong("moduleId", -1);
if (moduleId == -1) {
throw new IllegalStateException("No module ID was passed to DataLoader");
}
break;
case LOADER_VIEW_ANNOUNCEMENT_FRAGMENT:
// Obtain the announcement ID.
announcementId = args.getLong("announcementId", -1);
if (announcementId == -1) {
throw new IllegalStateException("No announcement ID was passed to DataLoader");
}
break;
case LOADER_VIEW_WEBCAST_ACTIVITY:
case LOADER_VIEW_WEBCAST_FRAGMENT:
// Obtain the webcast ID.
webcastId = args.getLong("webcastId", -1);
if (webcastId == -1) {
throw new IllegalStateException("No webcast ID was passed to DataLoader");
}
break;
case LOADER_VIEW_WEBCAST_ITEM_GROUP_FRAGMENT:
// Obtain the webcast item group ID.
webcastItemGroupId = args.getLong("webcastItemGroupId", -1);
if (webcastItemGroupId == -1) {
throw new IllegalStateException("No webcast group ID was passed to DataLoader");
}
break;
case LOADER_VIEW_WEBCAST_FILE_ACTIVITY:
// Obtain the webcast file ID.
webcastFileId = args.getLong("webcastFileId", -1);
if (webcastFileId == -1) {
throw new IllegalStateException("No webcast file ID was passed to DataLoader");
}
break;
case LOADER_VIEW_WORKBIN_ACTIVITY:
case LOADER_VIEW_WORKBIN_FRAGMENT:
// Obtain the workbin ID.
workbinId = args.getLong("workbinId", -1);
if (workbinId == -1) {
throw new IllegalStateException("No workbin ID was passed to DataLoader");
}
break;
case LOADER_VIEW_WORKBIN_FOLDERS_FRAGMENT:
// Obtain the workbin ID.
workbinId = args.getLong("workbinId", -1);
if (workbinId == -1) {
throw new IllegalStateException("No workbin ID was passed to DataLoader");
}
case LOADER_VIEW_WORKBIN_FILES_FRAGMENT:// Fall through.
// Obtain the workbin folder ID.
workbinFolderId = args.getLong("workbinFolderId", -1);
break;
case LOADER_MODULES_FRAGMENT:
case LOADER_NEW_ANNOUNCEMENTS_FRAGMENT:
break;
default:
throw new IllegalArgumentException("No such loader");
}
// Set up query parameters.
CursorLoader loader = new CursorLoader(mContext);
List<String> projectionList = new ArrayList<String>();
List<String> selectionArgsList = new ArrayList<String>();
String selection = null;
String sortOrder = null;
Log.d(TAG, "loader " + id + " setting up cursorLoader");
if (id == LOADER_MODULES_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
ModulesContract.ID,
ModulesContract.IVLE_ID,
ModulesContract.COURSE_CODE,
ModulesContract.COURSE_NAME
));
selection = DatabaseHelper.MODULES_TABLE_NAME + "." + ModulesContract.ACCOUNT + " = ?";
selectionArgsList.add(accountName);
// Set up the cursor loader.
loader.setUri(ModulesContract.CONTENT_URI);
} else if (id == LOADER_MODULE_INFO_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
ModulesContract.ID,
ModulesContract.COURSE_CODE,
ModulesContract.COURSE_NAME,
ModulesContract.COURSE_ACAD_YEAR,
ModulesContract.COURSE_SEMESTER
));
selection = DatabaseHelper.MODULES_TABLE_NAME + "." + ModulesContract.ACCOUNT + " = ?";
selectionArgsList.add(accountName);
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/modules/" + moduleId));
} else if (id == LOADER_MODULE_ANNOUNCEMENTS_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
AnnouncementsContract.ID,
AnnouncementsContract.TITLE,
AnnouncementsContract._DESCRIPTION_NOHTML,
AnnouncementsContract.CREATED_DATE,
AnnouncementsContract.IS_READ
));
selection = DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + "." + AnnouncementsContract.ACCOUNT + " = ?";
selectionArgsList.add(accountName);
sortOrder = AnnouncementsContract.CREATED_DATE.concat(" DESC");
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/modules/" + moduleId + "/announcements"));
} else if (id == LOADER_MODULE_WEBCASTS_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
WebcastsContract.ID,
WebcastsContract.TITLE
));
selection = DatabaseHelper.WEBCASTS_TABLE_NAME + "." + WebcastsContract.ACCOUNT + " = ?";
selectionArgsList.add(accountName);
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/modules/" + moduleId + "/webcasts"));
} else if (id == LOADER_MODULE_WORKBINS_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
WorkbinsContract.ID,
WorkbinsContract.TITLE
));
selection = DatabaseHelper.WORKBINS_TABLE_NAME + "." + WorkbinsContract.ACCOUNT + " = ?";
selectionArgsList.add(accountName);
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/modules/" + moduleId + "/workbins"));
} else if (id == LOADER_VIEW_ANNOUNCEMENT_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
AnnouncementsContract.ID,
AnnouncementsContract.IVLE_ID,
AnnouncementsContract.TITLE,
AnnouncementsContract.DESCRIPTION,
AnnouncementsContract.CREATED_DATE,
AnnouncementsContract.EXPIRY_DATE,
AnnouncementsContract.URL,
AnnouncementsContract.IS_READ,
AnnouncementsContract.CREATOR_PREFIX + UsersContract.NAME
));
selection = DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + "." + AnnouncementsContract.ACCOUNT + " = ?";
selectionArgsList.add(accountName);
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/announcements/" + announcementId));
} else if (id == LOADER_VIEW_WEBCAST_ACTIVITY) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
WebcastsContract.MODULE_ID,
WebcastsContract.TITLE
));
selection = DatabaseHelper.WEBCASTS_TABLE_NAME + "." + WebcastsContract.ACCOUNT + " = ?";
selectionArgsList.add(accountName);
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/webcasts/" + webcastId));
} else if (id == LOADER_VIEW_WEBCAST_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
WebcastItemGroupsContract.ID,
WebcastItemGroupsContract.ITEM_GROUP_TITLE
));
selection = DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME + "." + WebcastItemGroupsContract.ACCOUNT + " = ?";
selection += " AND " + DatabaseHelper.WEBCAST_ITEM_GROUPS_TABLE_NAME + "." + WebcastItemGroupsContract.WEBCAST_ID + " = ?";
selectionArgsList.add(accountName);
selectionArgsList.add(Long.toString(webcastId));
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/webcast_item_groups"));
} else if (id == LOADER_VIEW_WEBCAST_ITEM_GROUP_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
WebcastFilesContract.ID,
WebcastFilesContract.FILE_TITLE,
WebcastFilesContract.FILE_NAME,
WebcastFilesContract.FILE_DESCRIPTION,
WebcastFilesContract.CREATE_DATE,
WebcastFilesContract.MEDIA_FORMAT
));
selection = DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.ACCOUNT + " = ?";
selection += " AND " + DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.WEBCAST_ITEM_GROUP_ID + " = ?";
selectionArgsList.add(accountName);
selectionArgsList.add(Long.toString(webcastItemGroupId));
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/webcast_files"));
} else if (id == LOADER_VIEW_WEBCAST_FILE_ACTIVITY) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
WebcastFilesContract.MP4,
WebcastFilesContract.FILE_TITLE,
WebcastFilesContract.FILE_NAME
));
selection = DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.ACCOUNT + " = ?";
selection += " AND " + DatabaseHelper.WEBCAST_FILES_TABLE_NAME + "." + WebcastFilesContract.ID + " = ?";
selectionArgsList.add(accountName);
selectionArgsList.add(Long.toString(webcastFileId));
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/webcast_files"));
} else if (id == LOADER_VIEW_WORKBIN_ACTIVITY) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
WorkbinsContract.TITLE
));
selection = DatabaseHelper.WORKBINS_TABLE_NAME + "." + WorkbinsContract.ACCOUNT + " = ?";
selectionArgsList.add(accountName);
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/workbins/" + workbinId));
} else if (id == LOADER_VIEW_WORKBIN_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
WorkbinFoldersContract.ID,
WorkbinFoldersContract.FOLDER_NAME
));
selection = DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME + "." + WorkbinFoldersContract.ACCOUNT + " = ?";
selection += " AND " + DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME + "." + WorkbinFoldersContract.WORKBIN_ID + " = ?";
selection += " AND " + DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME + "." + WorkbinFoldersContract.WORKBIN_FOLDER_ID + " IS NULL";
selectionArgsList.add(accountName);
selectionArgsList.add(Long.toString(workbinId));
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/workbin_folders"));
} else if (id == LOADER_VIEW_WORKBIN_FILES_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
WorkbinFilesContract.ID,
WorkbinFilesContract.FILE_NAME,
WorkbinFilesContract.DOWNLOAD_URL,
WorkbinFilesContract.FILE_SIZE
));
selection = DatabaseHelper.WORKBIN_FILES_TABLE_NAME + "." + WorkbinFilesContract.ACCOUNT + " = ?";
selectionArgsList.add(accountName);
// Check if we're at the root.
if (workbinFolderId == -1) {
selection += " AND " + DatabaseHelper.WORKBIN_FILES_TABLE_NAME + "." + WorkbinFilesContract.WORKBIN_FOLDER_ID + " IS NULL";
} else {
selection += " AND " + DatabaseHelper.WORKBIN_FILES_TABLE_NAME + "." + WorkbinFilesContract.WORKBIN_FOLDER_ID + " = ?";
selectionArgsList.add(Long.toString(workbinFolderId));
}
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/workbin_files"));
} else if (id == LOADER_VIEW_WORKBIN_FOLDERS_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
WorkbinFoldersContract.ID,
WorkbinFoldersContract.FOLDER_NAME,
WorkbinFoldersContract.FILE_COUNT
));
selection = DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME + "." + WorkbinFoldersContract.ACCOUNT + " = ?";
selection += " AND " + DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME + "." + WorkbinFoldersContract.WORKBIN_ID + "= ?";
selectionArgsList.add(accountName);
selectionArgsList.add(Long.toString(workbinId));
// Check if we're at the root.
if (workbinFolderId == -1) {
selection += " AND " + DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME + "." + WorkbinFoldersContract.WORKBIN_FOLDER_ID + " IS NULL";
} else {
selection += " AND " + DatabaseHelper.WORKBIN_FOLDERS_TABLE_NAME + "." + WorkbinFoldersContract.WORKBIN_FOLDER_ID + " = ?";
selectionArgsList.add(Long.toString(workbinFolderId));
}
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/workbin_folders"));
} else if (id == LOADER_NEW_ANNOUNCEMENTS_FRAGMENT) {
// Set up our query parameters.
projectionList.addAll(Arrays.asList(
AnnouncementsContract.ID,
AnnouncementsContract.TITLE,
AnnouncementsContract._DESCRIPTION_NOHTML,
AnnouncementsContract.CREATED_DATE,
AnnouncementsContract.IS_READ,
AnnouncementsContract.MODULE_PREFIX + ModulesContract.COURSE_CODE
));
selection = DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + "." + AnnouncementsContract.ACCOUNT + " = ? AND ";
selection += DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + "." + AnnouncementsContract.IS_READ + " = ? AND ";
selection += DatabaseHelper.ANNOUNCEMENTS_TABLE_NAME + "." + AnnouncementsContract.MODULE_ID + " = " + DatabaseHelper.MODULES_TABLE_NAME + "." + ModulesContract.ID;
selectionArgsList.add(accountName);
selectionArgsList.add("0");
sortOrder = AnnouncementsContract.CREATED_DATE.concat(" DESC");
// Set up the cursor loader.
loader.setUri(Uri.parse("content://com.nuscomputing.ivle.provider/announcements"));
} else {
throw new IllegalArgumentException("No such loader");
}
loader.setProjection(projectionList.toArray(new String[]{}));
loader.setSelection(selection);
loader.setSelectionArgs(selectionArgsList.toArray(new String[]{}));
loader.setSortOrder(sortOrder);
return loader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
// Select the correct action based on ID.
Bundle result = new Bundle();
switch (loader.getId()) {
case LOADER_MODULES_FRAGMENT:
result.putInt("cursorCount", cursor.getCount());
((ModulesCursorAdapter) mAdapter).swapCursor(cursor);
((ModulesCursorAdapter) mAdapter).notifyDataSetChanged();
break;
case LOADER_MODULE_INFO_FRAGMENT:
cursor.moveToFirst();
result.putString("courseName", cursor.getString(cursor.getColumnIndex(ModulesContract.COURSE_NAME)));
result.putString("courseCode", cursor.getString(cursor.getColumnIndex(ModulesContract.COURSE_CODE)));
result.putString("courseAcadYear", cursor.getString(cursor.getColumnIndex(ModulesContract.COURSE_ACAD_YEAR)));
result.putString("courseSemester", cursor.getString(cursor.getColumnIndex(ModulesContract.COURSE_SEMESTER)));
break;
case LOADER_MODULE_ANNOUNCEMENTS_FRAGMENT:
case LOADER_NEW_ANNOUNCEMENTS_FRAGMENT:
result.putInt("cursorCount", cursor.getCount());
((CursorAdapter) mAdapter).swapCursor(cursor);
((CursorAdapter) mAdapter).notifyDataSetChanged();
break;
case LOADER_MODULE_WEBCASTS_FRAGMENT:
case LOADER_MODULE_WORKBINS_FRAGMENT:
result.putInt("cursorCount", cursor.getCount());
((SimpleCursorAdapter) mAdapter).swapCursor(cursor);
((SimpleCursorAdapter) mAdapter).notifyDataSetChanged();
break;
case LOADER_VIEW_ANNOUNCEMENT_FRAGMENT:
cursor.moveToFirst();
result.putString("ivleId", cursor.getString(cursor.getColumnIndex(AnnouncementsContract.IVLE_ID)));
result.putString("title", cursor.getString(cursor.getColumnIndex(AnnouncementsContract.TITLE)));
result.putString("userName", cursor.getString(cursor.getColumnIndex(UsersContract.NAME)));
result.putString("description", cursor.getString(cursor.getColumnIndex(AnnouncementsContract.DESCRIPTION)));
result.putString("createdDate", cursor.getString(cursor.getColumnIndex(AnnouncementsContract.CREATED_DATE)));
result.putString("expiryDate", cursor.getString(cursor.getColumnIndex(AnnouncementsContract.EXPIRY_DATE)));
result.putString("url", cursor.getString(cursor.getColumnIndex(AnnouncementsContract.URL)));
result.putBoolean("isRead", cursor.getInt(cursor.getColumnIndex(AnnouncementsContract.IS_READ)) == 0 ? false : true);
break;
case LOADER_VIEW_WEBCAST_ACTIVITY:
cursor.moveToFirst();
result.putString("title", cursor.getString(cursor.getColumnIndex(WebcastsContract.TITLE)));
break;
case LOADER_VIEW_WORKBIN_FRAGMENT:
case LOADER_VIEW_WEBCAST_FRAGMENT:
case LOADER_VIEW_WEBCAST_ITEM_GROUP_FRAGMENT:
((SimpleCursorAdapter) mAdapter).swapCursor(cursor);
break;
case LOADER_VIEW_WEBCAST_FILE_ACTIVITY:
cursor.moveToFirst();
result.putString("fileTitle", cursor.getString(cursor.getColumnIndex(WebcastFilesContract.FILE_TITLE)));
result.putString("fileName", cursor.getString(cursor.getColumnIndex(WebcastFilesContract.FILE_NAME)));
result.putString("MP4", cursor.getString(cursor.getColumnIndex(WebcastFilesContract.MP4)));
break;
case LOADER_VIEW_WORKBIN_ACTIVITY:
cursor.moveToFirst();
result.putString("title", cursor.getString(cursor.getColumnIndex(WorkbinsContract.TITLE)));
break;
case LOADER_VIEW_WORKBIN_FILES_FRAGMENT:
result.putInt("cursorCount", cursor.getCount());
((SimpleCursorAdapter) mAdapter).swapCursor(cursor);
break;
case LOADER_VIEW_WORKBIN_FOLDERS_FRAGMENT:
result.putInt("cursorCount", cursor.getCount());
((SimpleCursorAdapter) mAdapter).swapCursor(cursor);
break;
default:
throw new IllegalArgumentException("No such loader");
}
if (mListener != null) {
((DataLoaderListener) mListener).onLoaderFinished(result);
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
// Select the correct action based on ID.
switch (loader.getId()) {
case LOADER_MODULES_FRAGMENT:
((ModulesCursorAdapter) mAdapter).swapCursor(null);
break;
case LOADER_MODULE_ANNOUNCEMENTS_FRAGMENT:
case LOADER_NEW_ANNOUNCEMENTS_FRAGMENT:
((CursorAdapter) mAdapter).swapCursor(null);
break;
case LOADER_MODULE_WEBCASTS_FRAGMENT:
case LOADER_MODULE_WORKBINS_FRAGMENT:
case LOADER_VIEW_WEBCAST_FRAGMENT:
case LOADER_VIEW_WEBCAST_ITEM_GROUP_FRAGMENT:
case LOADER_VIEW_WORKBIN_FILES_FRAGMENT:
case LOADER_VIEW_WORKBIN_FOLDERS_FRAGMENT:
((SimpleCursorAdapter) mAdapter).swapCursor(null);
break;
case LOADER_MODULE_INFO_FRAGMENT:
case LOADER_VIEW_ANNOUNCEMENT_FRAGMENT:
case LOADER_VIEW_WEBCAST_ACTIVITY:
case LOADER_VIEW_WEBCAST_FILE_ACTIVITY:
case LOADER_VIEW_WORKBIN_ACTIVITY:
case LOADER_VIEW_WORKBIN_FRAGMENT:
// Do nothing.
break;
default:
throw new IllegalArgumentException("No such loader");
}
}
// }}}
}