protected ArrayList doInBackground()

in Android/app/src/main/java/com/harvard/studyappmodule/SurveyActivitiesFragment.java [1680:2395]


    protected ArrayList<ActivitiesWS> doInBackground(ArrayList<ActivitiesWS>... params) {
      SharedPreferenceHelper.writePreference(context, "runsCalculating", "true");
      calculateRunHoldServiceeintent = new Intent(context, CalculateRunHoldService.class);
      if (!AppController.isMyServiceRunning(context, CalculateRunHoldService.class)) {
        context.startService(calculateRunHoldServiceeintent);
      }

      realm = AppController.getRealmobj(context);

      try {
        currentactivityList.clear();
      } catch (Exception e) {
        Logger.log(e);
      }
      try {
        upcomingactivityList.clear();
      } catch (Exception e) {
        Logger.log(e);
      }
      try {
        completedactivityList.clear();
      } catch (Exception e) {
        Logger.log(e);
      }

      // find new activity and deleted activity

      RealmList<ActivitiesWS> activitiesWSesDeleted = new RealmList<>();
      RealmList<ActivitiesWS> newlyAdded = new RealmList<>();
      ActivityListData activityListDataDB =
          dbServiceSubscriber.getActivities(((SurveyActivity) context).getStudyId(), realm);
      if (activityListDataDB != null
          && activityListDataDB.getActivities() != null
          && activityListDataDB.getActivities().size() > 0) {
        ActivityListData activityListData1 = null;
        activityUpdated = false;
        activityListData1 = new ActivityListData();
        activityListData1.setStudyId(activityListDataDB.getStudyId());
        activityListData1.setMessage(activityListDataDB.getMessage());
        activityListData1.setAnchorDate(activityListDataDB.getAnchorDate());
        activityListData1.setWithdrawalConfig(activityListDataDB.getWithdrawalConfig());

        if (activityListData == null) {
          activityListData1.getActivities().addAll(activityListDataDB.getActivities());
        } else {
          activityListData1.getActivities().addAll(activityListData.getActivities());

          for (int i = 0; i < activityListDataDB.getActivities().size(); i++) {
            boolean activityAvailable = false;
            for (int j = 0; j < activityListData.getActivities().size(); j++) {
              if (activityListData
                  .getActivities()
                  .get(j)
                  .getActivityId()
                  .equalsIgnoreCase(activityListDataDB.getActivities().get(i).getActivityId())) {
                activityAvailable = true;
                if (activityListDataDB.getActivities().get(i).getStartTime().equalsIgnoreCase("")
                    && !activityListData
                        .getActivities()
                        .get(j)
                        .getStartTime()
                        .equalsIgnoreCase("")) {
                  dbServiceSubscriber.saveActivityStartTime(
                      activityListDataDB.getActivities().get(i),
                      realm,
                      activityListData.getActivities().get(j).getStartTime());
                }
                if (activityListDataDB.getActivities().get(i).getEndTime().equalsIgnoreCase("")
                    && !activityListData.getActivities().get(j).getEndTime().equalsIgnoreCase("")) {
                  dbServiceSubscriber.saveActivityEndTime(
                      activityListDataDB.getActivities().get(i),
                      realm,
                      activityListData.getActivities().get(j).getEndTime());
                }
              }
            }
            if (!activityAvailable) {
              activityUpdated = true;
              activitiesWSesDeleted.add(activityListDataDB.getActivities().get(i));
              activityListData1.getActivities().add(activityListDataDB.getActivities().get(i));
            }
          }

          for (int j = 0; j < activityListData.getActivities().size(); j++) {
            boolean activityAvailable = false;
            for (int i = 0; i < activityListDataDB.getActivities().size(); i++) {
              if (activityListData
                  .getActivities()
                  .get(j)
                  .getActivityId()
                  .equalsIgnoreCase(activityListDataDB.getActivities().get(i).getActivityId())) {
                activityAvailable = true;
                if (activityListData.getActivities().get(j).getState().equalsIgnoreCase(DELETE)
                    && activityListDataDB
                        .getActivities()
                        .get(i)
                        .getState()
                        .equalsIgnoreCase(ACTIVE)) {
                  RealmResults<ActivityRun> activityRuns =
                      dbServiceSubscriber.getAllActivityRunFromDB(
                          ((SurveyActivity) context).getStudyId(),
                          activityListData.getActivities().get(j).getActivityId(),
                          realm);
                  try {
                    dbServiceSubscriber.deleteAllRun(context, activityRuns);
                  } catch (Exception e) {
                    Logger.log(e);
                  }
                  dbServiceSubscriber.saveActivityState(
                      activityListDataDB.getActivities().get(i), realm);
                }
              }
            }
            if (!activityAvailable) {
              newlyAdded.add(activityListData.getActivities().get(j));
            }
          }
        }

        updateRun = false;

        activityListData2 = activityListData1;

      } else {
        activityUpdated = false;
        if (activityListData != null) {
          insertAndUpdateToDB(context, activityListData);
          activityListData2 = activityListData;
        }
      }

      if (activityListData2 != null) {
        activitiesArrayList.addAll(activityListData2.getActivities());
        SurveyScheduler survayScheduler = new SurveyScheduler(dbServiceSubscriber, realm);
        StudyData studyPreferences = dbServiceSubscriber.getStudyPreference(realm);
        ActivityData activityData =
            dbServiceSubscriber.getActivityPreference(
                ((SurveyActivity) context).getStudyId(), realm);
        Date joiningDate =
            survayScheduler.getJoiningDateOfStudy(
                studyPreferences, ((SurveyActivity) context).getStudyId());

        Date currentDate = new Date();

        if (activityUpdated) {
          dbServiceSubscriber.deleteMotivationalNotification(
              context, ((SurveyActivity) context).getStudyId());
        }

        if (newlyAdded.size() > 0) {
          // insert to activitylist db
          // activityListDataDB
          for (int k = 0; k < newlyAdded.size(); k++) {
            dbServiceSubscriber.addActivityWsList(context, activityListDataDB, newlyAdded.get(k));
          }
        }

        for (int i = 0; i < activitiesArrayList.size(); i++) {
          SimpleDateFormat simpleDateFormat = AppController.getDateFormatUtcNoZone();
          Date starttime = null;
          Date endtime = null;
          if (activitiesArrayList.get(i) != null
              && activitiesArrayList.get(i).getSchedulingType() != null
              && activitiesArrayList.get(i).getSchedulingType().equalsIgnoreCase("AnchorDate")) {

            if (!activitiesArrayList.get(i).getStartTime().equalsIgnoreCase("")) {
              if ((activitiesArrayList.get(i).getEndTime().equalsIgnoreCase("")
                      && activitiesArrayList.get(i).getAnchorDate() != null
                      && activitiesArrayList.get(i).getAnchorDate().getEnd() != null)
                  || !activitiesArrayList.get(i).getEndTime().equalsIgnoreCase("")) {
                try {
                  starttime =
                      simpleDateFormat.parse(
                          activitiesArrayList.get(i).getStartTime().split("\\.")[0]);
                } catch (ParseException e) {
                  Logger.log(e);
                }
                try {
                  endtime =
                      simpleDateFormat.parse(
                          activitiesArrayList.get(i).getEndTime().split("\\.")[0]);
                } catch (ParseException e) {
                  Logger.log(e);
                } catch (Exception e1) {
                  Logger.log(e1);
                }
              } else {
                if (activitiesArrayList.get(i).getFrequency().getType().equalsIgnoreCase("One Time")
                    && activitiesArrayList.get(i).getAnchorDate() != null
                    && activitiesArrayList.get(i).getAnchorDate().getEnd() == null) {
                  try {
                    starttime =
                        simpleDateFormat.parse(
                            activitiesArrayList.get(i).getStartTime().split("\\.")[0]);
                  } catch (ParseException e) {
                    Logger.log(e);
                  }
                }
              }
            }
          } else {
            try {
              if (activitiesArrayList.get(i).getStartTime().equalsIgnoreCase("")) {
                starttime = new Date();
              } else {
                starttime =
                    simpleDateFormat.parse(
                        activitiesArrayList.get(i).getStartTime().split("\\.")[0]);
              }
            } catch (ParseException e) {
              Logger.log(e);
            }
            try {
              endtime =
                  simpleDateFormat.parse(activitiesArrayList.get(i).getEndTime().split("\\.")[0]);
            } catch (ParseException e) {
              Logger.log(e);
            } catch (Exception e1) {
              Logger.log(e1);
            }
          }

          RealmResults<ActivityRun> activityRuns =
              dbServiceSubscriber.getAllActivityRunFromDB(
                  ((SurveyActivity) context).getStudyId(),
                  activitiesArrayList.get(i).getActivityId(),
                  realm);

          boolean deleted = false;
          for (int j = 0; j < activitiesWSesDeleted.size(); j++) {
            if (activitiesWSesDeleted
                .get(j)
                .getActivityId()
                .equalsIgnoreCase(activitiesArrayList.get(i).getActivityId())) {
              deleted = true;
              try {
                dbServiceSubscriber.deleteAllRun(context, activityRuns);
              } catch (Exception e) {
                Logger.log(e);
              }
            }
          }

          if (updateRun || activityRuns == null || activityRuns.size() == 0) {
            if (!deleted) {
              survayScheduler.setRuns(
                  activitiesArrayList.get(i),
                  ((SurveyActivity) context).getStudyId(),
                  starttime,
                  endtime,
                  joiningDate,
                  context);
            }
          } else if (activityIds.size() > 0) {
            // remove runs for these Ids and set runs once again
            if (activityIds.contains(activitiesArrayList.get(i).getActivityId())) {
              dbServiceSubscriber.deleteActivityRunsFromDb(
                  context,
                  activitiesArrayList.get(i).getActivityId(),
                  ((SurveyActivity) context).getStudyId());
              if (!deleted) {
                survayScheduler.setRuns(
                    activitiesArrayList.get(i),
                    ((SurveyActivity) context).getStudyId(),
                    starttime,
                    endtime,
                    joiningDate,
                    context);
              }
              // delete activity object that used for survey
              dbServiceSubscriber.deleteActivityObjectFromDb(
                  context,
                  activitiesArrayList.get(i).getActivityId(),
                  ((SurveyActivity) context).getStudyId());
              for (int j = 0; j < activityData.getActivities().size(); j++) {
                if (activitiesArrayList
                    .get(i)
                    .getActivityId()
                    .equalsIgnoreCase(activityData.getActivities().get(j).getActivityId())) {
                  if (!activityData
                      .getActivities()
                      .get(j)
                      .getStatus()
                      .equalsIgnoreCase(YET_To_START)) {
                    // Delete response data
                    if (!runIds
                        .get(activityIds.indexOf(activitiesArrayList.get(i).getActivityId()))
                        .equalsIgnoreCase("-1")) {
                      dbServiceSubscriber.deleteResponseDataFromDb(
                          context,
                          ((SurveyActivity) context).getStudyId()
                              + "_STUDYID_"
                              + activitiesArrayList.get(i).getActivityId()
                              + "_"
                              + runIds.get(
                              activityIds.indexOf(activitiesArrayList.get(i).getActivityId())));
                    }
                  }
                }
              }
            }
          }

          String currentDateString = AppController.getDateFormatForApi().format(currentDate);
          try {
            currentDate = AppController.getDateFormatForApi().parse(currentDateString);
          } catch (ParseException e) {
            Logger.log(e);
          }
          Calendar calendarCurrentTime = Calendar.getInstance();
          calendarCurrentTime.setTime(currentDate);
          calendarCurrentTime.setTimeInMillis(
              calendarCurrentTime.getTimeInMillis() - survayScheduler.getOffset(context));
          if (!deleted) {
            ActivityStatus activityStatus =
                survayScheduler.getActivityStatus(
                    activityData,
                    ((SurveyActivity) context).getStudyId(),
                    activitiesArrayList.get(i).getActivityId(),
                    calendarCurrentTime.getTime(),
                    activitiesArrayList.get(i));
            if (activityStatus != null) {
              if (activityStatus.getCompletedRun() >= 0) {
                completed = completed + activityStatus.getCompletedRun();
              }
              if (activityStatus.getMissedRun() >= 0) {
                missed = missed + activityStatus.getMissedRun();
              }
              if (activityStatus.getTotalRun() >= 0) {
                total = total + activityStatus.getTotalRun();
              }
            }
            if (!activitiesArrayList.get(i).getState().equalsIgnoreCase("deleted")) {
              if (starttime != null) {
                if (AppController.isWithinRange(starttime, endtime)) {
                  if (activityStatus.getCurrentRunId() == activityStatus.getTotalRun()
                      && activityStatus
                          .getStatus()
                          .equalsIgnoreCase(SurveyActivitiesFragment.STATUS_COMPLETED)) {
                    completedactivityList.add(activitiesArrayList.get(i));
                    completedActivityStatus.add(activityStatus);
                    completedStatus.add(STATUS_COMPLETED);
                  } else {
                    currentactivityList.add(activitiesArrayList.get(i));
                    currentActivityStatus.add(activityStatus);
                    currentStatus.add(STATUS_CURRENT);
                  }
                } else if (AppController.checkafter(starttime)) {
                  upcomingactivityList.add(activitiesArrayList.get(i));
                  upcomingActivityStatus.add(activityStatus);
                  upcomingStatus.add(STATUS_UPCOMING);
                } else {
                  completedactivityList.add(activitiesArrayList.get(i));
                  completedActivityStatus.add(activityStatus);
                  completedStatus.add(STATUS_COMPLETED);
                }
              }
            } else {
              NotificationModuleSubscriber notificationModuleSubscriber =
                  new NotificationModuleSubscriber(dbServiceSubscriber, realm);
              try {
                notificationModuleSubscriber.cancleActivityLocalNotificationByIds(
                    context,
                    activitiesArrayList.get(i).getActivityId(),
                    ((SurveyActivity) context).getStudyId());
              } catch (Exception e) {
                Logger.log(e);
              }
              try {
                notificationModuleSubscriber.cancleResourcesLocalNotificationByIds(
                    context,
                    activitiesArrayList.get(i).getActivityId(),
                    ((SurveyActivity) context).getStudyId());
              } catch (Exception e) {
                Logger.log(e);
              }
            }
          } else {
            NotificationModuleSubscriber notificationModuleSubscriber =
                new NotificationModuleSubscriber(dbServiceSubscriber, realm);
            try {
              notificationModuleSubscriber.cancleActivityLocalNotificationByIds(
                  context,
                  activitiesArrayList.get(i).getActivityId(),
                  ((SurveyActivity) context).getStudyId());
            } catch (Exception e) {
              Logger.log(e);
            }
            try {
              notificationModuleSubscriber.cancleResourcesLocalNotificationByIds(
                  context,
                  activitiesArrayList.get(i).getActivityId(),
                  ((SurveyActivity) context).getStudyId());
            } catch (Exception e) {
              Logger.log(e);
            }

            // delete from activity list db
            dbServiceSubscriber.deleteActivityWsList(
                context, activityListDataDB, activitiesArrayList.get(i).getActivityId());
          }
        }

        activitiesArrayList.clear();
      } else {
        if (errormsg != null) {
          Toast.makeText(context, errormsg, Toast.LENGTH_SHORT).show();
        }
      }

      // sort
      for (int i = 0; i < currentactivityList.size(); i++) {
        for (int j = i; j < currentactivityList.size(); j++) {
          try {
            if (AppController.getDateFormatForApi()
                .parse(currentactivityList.get(i).getStartTime())
                .after(
                    AppController.getDateFormatForApi()
                        .parse(currentactivityList.get(j).getStartTime()))) {
              ActivitiesWS activitiesWS = currentactivityList.get(i);
              currentactivityList.set(i, currentactivityList.get(j));
              currentactivityList.set(j, activitiesWS);

              ActivityStatus activityStatus = currentActivityStatus.get(i);
              currentActivityStatus.set(i, currentActivityStatus.get(j));
              currentActivityStatus.set(j, activityStatus);

              String status = currentStatus.get(i);
              currentStatus.set(i, currentStatus.get(j));
              currentStatus.set(j, status);
            }
          } catch (ParseException e) {
            Logger.log(e);
          }
        }
      }

      ArrayList<ActivitiesWS> yetToStartOrResumeList = new ArrayList<>();
      ArrayList<ActivitiesWS> otherList = new ArrayList<>();
      ArrayList<ActivityStatus> yetToStartOrResumeActivityStatusList = new ArrayList<>();
      ArrayList<ActivityStatus> otherActivityStatusList = new ArrayList<>();
      ArrayList<String> yetToStartOrResumeStatusList = new ArrayList<>();
      ArrayList<String> otherStatusList = new ArrayList<>();
      for (int i = 0; i < currentactivityList.size(); i++) {
        if (currentActivityStatus
                .get(i)
                .getStatus()
                .equalsIgnoreCase(SurveyActivitiesFragment.YET_To_START)
            || currentActivityStatus
                .get(i)
                .getStatus()
                .equalsIgnoreCase(SurveyActivitiesFragment.IN_PROGRESS)) {
          yetToStartOrResumeList.add(currentactivityList.get(i));
          yetToStartOrResumeActivityStatusList.add(currentActivityStatus.get(i));
          yetToStartOrResumeStatusList.add(currentStatus.get(i));
        } else {
          otherList.add(currentactivityList.get(i));
          otherActivityStatusList.add(currentActivityStatus.get(i));
          otherStatusList.add(currentStatus.get(i));
        }
      }
      try {
        currentactivityList.clear();
      } catch (Exception e) {
        Logger.log(e);
      }
      try {
        currentActivityStatus.clear();
      } catch (Exception e) {
        Logger.log(e);
      }
      try {
        currentStatus.clear();
      } catch (Exception e) {
        Logger.log(e);
      }
      currentactivityList.addAll(yetToStartOrResumeList);
      currentactivityList.addAll(otherList);

      currentActivityStatus.addAll(yetToStartOrResumeActivityStatusList);
      currentActivityStatus.addAll(otherActivityStatusList);

      currentStatus.addAll(yetToStartOrResumeStatusList);
      currentStatus.addAll(otherStatusList);

      for (int i = 0; i < upcomingactivityList.size(); i++) {
        for (int j = i; j < upcomingactivityList.size(); j++) {
          try {
            if (AppController.getDateFormatForApi()
                .parse(upcomingactivityList.get(i).getStartTime())
                .after(
                    AppController.getDateFormatForApi()
                        .parse(upcomingactivityList.get(j).getStartTime()))) {
              ActivitiesWS activitiesWS = upcomingactivityList.get(i);
              upcomingactivityList.set(i, upcomingactivityList.get(j));
              upcomingactivityList.set(j, activitiesWS);

              ActivityStatus activityStatus = upcomingActivityStatus.get(i);
              upcomingActivityStatus.set(i, upcomingActivityStatus.get(j));
              upcomingActivityStatus.set(j, activityStatus);

              String status = upcomingStatus.get(i);
              upcomingStatus.set(i, upcomingStatus.get(j));
              upcomingStatus.set(j, status);
            }
          } catch (ParseException e) {
            Logger.log(e);
          }
        }
      }

      for (int i = 0; i < completedactivityList.size(); i++) {
        for (int j = i; j < completedactivityList.size(); j++) {
          try {
            if (AppController.getDateFormatForApi()
                .parse(completedactivityList.get(i).getStartTime())
                .after(
                    AppController.getDateFormatForApi()
                        .parse(completedactivityList.get(j).getStartTime()))) {
              ActivitiesWS activitiesWS = completedactivityList.get(i);
              completedactivityList.set(i, completedactivityList.get(j));
              completedactivityList.set(j, activitiesWS);

              ActivityStatus activityStatus = completedActivityStatus.get(i);
              completedActivityStatus.set(i, completedActivityStatus.get(j));
              completedActivityStatus.set(j, activityStatus);

              String status = completedStatus.get(i);
              completedStatus.set(i, completedStatus.get(j));
              completedStatus.set(j, status);
            }
          } catch (ParseException e) {
            Logger.log(e);
          }
        }
      }

      // Checking the Empty values
      if (currentactivityList.isEmpty()) {
        ActivitiesWS w = new ActivitiesWS();
        w.setActivityId("");
        currentactivityList.add(w);
      }
      if (upcomingactivityList.isEmpty()) {
        ActivitiesWS w = new ActivitiesWS();
        w.setActivityId("");
        upcomingactivityList.add(w);
      }
      if (completedactivityList.isEmpty()) {
        ActivitiesWS w = new ActivitiesWS();
        w.setActivityId("");
        completedactivityList.add(w);
      }

      activitiesArrayList.addAll(currentactivityList);
      activitiesArrayList.addAll(upcomingactivityList);
      activitiesArrayList.addAll(completedactivityList);

      activitiesArrayList1.clear();
      for (int k = 0; k < activitiesArrayList.size(); k++) {
        if (!activitiesArrayList.get(k).getActivityId().equalsIgnoreCase("")) {
          Frequency frequency = new Frequency();
          RealmList<FrequencyRuns> frequencyRunses = new RealmList<>();
          for (int j = 0; j < activitiesArrayList.get(k).getFrequency().getRuns().size(); j++) {
            FrequencyRuns frequencyRuns = new FrequencyRuns();
            frequencyRuns.setEndTime(
                activitiesArrayList.get(k).getFrequency().getRuns().get(j).getEndTime());
            frequencyRuns.setStartTime(
                activitiesArrayList.get(k).getFrequency().getRuns().get(j).getStartTime());
            frequencyRunses.add(frequencyRuns);
          }
          frequency.setRuns(frequencyRunses);
          frequency.setType(activitiesArrayList.get(k).getFrequency().getType());
          ActivitiesWS activitiesWS = new ActivitiesWS();
          activitiesWS.setFrequency(frequency);
          activitiesWS.setStartTime(activitiesArrayList.get(k).getStartTime());
          activitiesWS.setEndTime(activitiesArrayList.get(k).getEndTime());
          activitiesWS.setType(activitiesArrayList.get(k).getType());
          activitiesWS.setActivityVersion(activitiesArrayList.get(k).getActivityVersion());
          activitiesWS.setActivityId(activitiesArrayList.get(k).getActivityId());
          activitiesWS.setBranching(activitiesArrayList.get(k).getBranching());
          activitiesWS.setStatus(activitiesArrayList.get(k).getStatus());
          activitiesWS.setTitle(activitiesArrayList.get(k).getTitle());
          activitiesWS.setLaunchStudy(activitiesArrayList.get(k).isLaunchStudy());
          activitiesWS.setStudyLifeTime(activitiesArrayList.get(k).isStudyLifeTime());
          activitiesWS.setSchedulingType(activitiesArrayList.get(k).getSchedulingType());
          if (activitiesArrayList
                  .get(k)
                  .getFrequency()
                  .getType()
                  .equalsIgnoreCase(SurveyScheduler.FREQUENCY_TYPE_ONE_TIME)
              && activitiesArrayList.get(k).getAnchorDate() != null) {
            SchedulingAnchorDate schedulingAnchorDate = new SchedulingAnchorDate();
            schedulingAnchorDate.setSourceType(
                activitiesArrayList.get(k).getAnchorDate().getSourceType());
            if (activitiesArrayList.get(k).getAnchorDate().getStart() != null) {
              SchedulingAnchorDateStart schedulingAnchorDateStart = new SchedulingAnchorDateStart();
              schedulingAnchorDateStart.setAnchorDays(
                  activitiesArrayList.get(k).getAnchorDate().getStart().getAnchorDays());
              schedulingAnchorDateStart.setDateOfMonth(
                  activitiesArrayList.get(k).getAnchorDate().getStart().getDateOfMonth());
              schedulingAnchorDateStart.setDayOfWeek(
                  activitiesArrayList.get(k).getAnchorDate().getStart().getDayOfWeek());
              schedulingAnchorDateStart.setTime(
                  activitiesArrayList.get(k).getAnchorDate().getStart().getTime());
              schedulingAnchorDate.setStart(schedulingAnchorDateStart);
            }

            if (activitiesArrayList.get(k).getAnchorDate().getEnd() != null) {
              SchedulingAnchorDateEnd schedulingAnchorDateEnd = new SchedulingAnchorDateEnd();
              schedulingAnchorDateEnd.setAnchorDays(
                  activitiesArrayList.get(k).getAnchorDate().getEnd().getAnchorDays());
              schedulingAnchorDateEnd.setRepeatInterval(
                  activitiesArrayList.get(k).getAnchorDate().getEnd().getRepeatInterval());
              schedulingAnchorDateEnd.setTime(
                  activitiesArrayList.get(k).getAnchorDate().getEnd().getTime());
              schedulingAnchorDate.setEnd(schedulingAnchorDateEnd);
            }
            activitiesWS.setAnchorDate(schedulingAnchorDate);
          }

          activitiesArrayList1.add(activitiesWS);
        } else {
          activitiesArrayList1.add(activitiesArrayList.get(k));
        }
      }

      status.clear();
      // Checking the size is zero
      if (currentStatus.size() == 0) {
        currentStatus.add(STATUS_CURRENT);
      }
      if (upcomingStatus.size() == 0) {
        upcomingStatus.add(STATUS_UPCOMING);
      }
      if (completedStatus.size() == 0) {
        completedStatus.add(STATUS_COMPLETED);
      }
      status.addAll(currentStatus);
      status.addAll(upcomingStatus);
      status.addAll(completedStatus);

      currentRunStatusForActivities.clear();

      // Checking the Empty values
      if (currentActivityStatus.isEmpty()) {
        currentActivityStatus.add(new ActivityStatus());
      }
      if (upcomingActivityStatus.isEmpty()) {
        upcomingActivityStatus.add(new ActivityStatus());
      }
      if (completedActivityStatus.isEmpty()) {
        completedActivityStatus.add(new ActivityStatus());
      }

      Collections.sort(
          currentactivityList,
          new Comparator<ActivitiesWS>() {
            @Override
            public int compare(ActivitiesWS studyList, ActivitiesWS t1) {
              return studyList.getTitle().compareTo(t1.getTitle());
            }
          });

      Collections.sort(
          upcomingactivityList,
          new Comparator<ActivitiesWS>() {
            @Override
            public int compare(ActivitiesWS studyList, ActivitiesWS t1) {
              return studyList.getTitle().compareTo(t1.getTitle());
            }
          });

      Collections.sort(
          completedactivityList,
          new Comparator<ActivitiesWS>() {
            @Override
            public int compare(ActivitiesWS studyList, ActivitiesWS t1) {
              return studyList.getTitle().compareTo(t1.getTitle());
            }
          });

      currentRunStatusForActivities.addAll(currentActivityStatus);
      currentRunStatusForActivities.addAll(upcomingActivityStatus);
      currentRunStatusForActivities.addAll(completedActivityStatus);

      StudyList studyList =
          dbServiceSubscriber.getStudiesDetails(((SurveyActivity) context).getStudyId(), realm);
      boolean paused;
      if (studyList.getStatus().equalsIgnoreCase(StudyFragment.PAUSED)) {
        paused = true;
      } else {
        paused = false;
      }
      SurveyScheduler survayScheduler = new SurveyScheduler(dbServiceSubscriber, realm);
      StudyData studyPreferences = dbServiceSubscriber.getStudyPreference(realm);
      Date joiningDate =
          survayScheduler.getJoiningDateOfStudy(
              studyPreferences, ((SurveyActivity) context).getStudyId());
      title = studyList.getTitle();
      Filter filter = getFilterList();
      studyVideoAdapter =
          new SurveyActivitiesListAdapter(
              context,
              filter.getActivitiesArrayList1(),
              filter.getStatus(),
              filter.getCurrentRunStatusForActivities(),
              SurveyActivitiesFragment.this,
              paused,
              joiningDate);

      activityListDataDB = null;

      dbServiceSubscriber.closeRealmObj(realm);
      return activitiesArrayList1;
    }