Exemplo n.º 1
0
  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;
  }
Exemplo n.º 2
0
 public static boolean isWorking() {
   return LoadStatusesFromWebManager.isWorking();
 }
Exemplo n.º 3
0
 public static void run(Context context) {
   LoadStatusesFromWebManager.run(context);
 }
Exemplo n.º 4
0
 public static void addOnLoadStatusesFromWebListener(OnLoadStatusesFromWebListener listener) {
   LoadStatusesFromWebManager.add(listener);
 }