private List<Status> loadStatuses(Context context) { boolean firstRunning = false; LoadStatusesFromWebManager.notifyOnStart(); List<Status> notifiableStatuses = new ArrayList<Status>(); DbHelper dbHelper = DbHelper.getInstance(context); try { DefaultReduClient redu = ReduApplication.getReduClient(context); String userId = String.valueOf(ReduApplication.getUser(context).id); long dbTimestamp; if (dbHelper.getOldestStatusesWereDownloaded(userId)) { dbTimestamp = dbHelper.getTimestamp(); } else { dbTimestamp = 0; } firstRunning = (dbTimestamp == 0) ? true : false; boolean loadNextPage = true; for (int page = 1; loadNextPage; page++) { String pageStr = String.valueOf(page); List<Status> statuses = new ArrayList<Status>(); List<Status> temp; temp = redu.getStatusesTimelineByUser(userId, Status.TYPE_ACTIVITY, pageStr); if (temp != null) { statuses.addAll(temp); } temp = redu.getStatusesTimelineByUser(userId, Status.TYPE_HELP, pageStr); if (temp != null) { statuses.addAll(temp); } temp = redu.getStatusesTimelineLogByUser(userId, Status.LOGEABLE_TYPE_COURSE, pageStr); if (temp != null) { statuses.addAll(temp); } temp = redu.getStatusesTimelineLogByUser(userId, Status.LOGEABLE_TYPE_SUBJECT, pageStr); if (temp != null) { statuses.addAll(temp); } temp = redu.getStatusesTimelineLogByUser(userId, Status.LOGEABLE_TYPE_LECTURE, pageStr); if (temp != null) { statuses.addAll(temp); } if (statuses.size() == 0) { dbHelper.setOldestStatusesWereDownloaded(userId); loadNextPage = false; } else { for (Status status : statuses) { try { status.createdAtInMillis = DateUtil.dfIn.parse(status.created_at).getTime(); } catch (ParseException e) { e.printStackTrace(); status.createdAtInMillis = 0; } if (status.createdAtInMillis <= dbTimestamp) { loadNextPage = false; } else { if (checkNotifiable(context, status) && firstRunning == false) { notifiableStatuses.add(status); } } } dbHelper.putAllStatuses(statuses, userId); } } LoadStatusesFromWebManager.notifyOnComplete(); } catch (Exception e) { e.printStackTrace(); LoadStatusesFromWebManager.notifyOnError(e); } return notifiableStatuses; }
public static boolean isWorking() { return LoadStatusesFromWebManager.isWorking(); }
public static void run(Context context) { LoadStatusesFromWebManager.run(context); }
public static void addOnLoadStatusesFromWebListener(OnLoadStatusesFromWebListener listener) { LoadStatusesFromWebManager.add(listener); }