private void refreshchartdata()

in Android/app/src/main/java/com/harvard/studyappmodule/ChartActivity.java [1194:1445]


  private void refreshchartdata(
      String tag,
      Date startTime,
      Date endtime,
      final LineChart chart,
      RealmResults<StepRecordCustom> stepRecordCustomList,
      List<String> filteredXValues,
      List<Entry> entryList,
      RealmResults<ActivityRun> activityRuns,
      final String barColor,
      final String activityId) {
    chart.clear();
    entryList.clear();
    filteredXValues.clear();
    if (!tag.equalsIgnoreCase("hours_of_day")) {
      if (tag.equalsIgnoreCase("days_of_week")) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE");
        for (int k = 0; k < day.length; k++) {
          for (int j = 0, size = stepRecordCustomList.size(); j < size; j++) {
            if (stepRecordCustomList.get(j).getCompleted().before(endtime)
                && stepRecordCustomList.get(j).getCompleted().after(startTime)) {
              JSONObject jsonObject;
              String answer = "";
              String data = "";
              try {
                jsonObject = new JSONObject(stepRecordCustomList.get(j).result);
                String[] id = stepRecordCustomList.get(j).activityID.split("_STUDYID_");
                ActivitiesWS activityObj = dbServiceSubscriber.getActivityObj(id[1], id[0], realm);
                if (activityObj.getType().equalsIgnoreCase("task")) {
                  JSONObject answerjson = new JSONObject(jsonObject.getString("answer"));
                  answer = answerjson.getString("duration");
                  answer = Double.toString(Integer.parseInt(answer) / 60f);
                  data = "min \nfor\n" + answerjson.getString("value") + " kicks";
                } else {
                  answer = jsonObject.getString("answer");
                  data = "";
                }
              } catch (JSONException e) {
                Logger.log(e);
              }
              String s = simpleDateFormat.format(stepRecordCustomList.get(j).getCompleted());

              if (s.equalsIgnoreCase(day[k])) {
                entryList.add(new Entry(Float.parseFloat(answer), k, data));
              }
            }
          }
          filteredXValues.add(day[k]);
        }
      } else if (tag.equalsIgnoreCase("days_of_month")) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("d");
        int month = startTime.getMonth();
        int year = startTime.getYear();
        for (int k = 1; k <= numberOfDaysInMonth(month, year); k++) {
          for (int j = 0, size = stepRecordCustomList.size(); j < size; j++) {
            if (stepRecordCustomList.get(j).getCompleted().before(endtime)
                && stepRecordCustomList.get(j).getCompleted().after(startTime)) {
              JSONObject jsonObject;
              String answer = "";
              String data = "";
              try {
                jsonObject = new JSONObject(stepRecordCustomList.get(j).result);
                String[] id = stepRecordCustomList.get(j).activityID.split("_STUDYID_");
                ActivitiesWS activityObj = dbServiceSubscriber.getActivityObj(id[1], id[0], realm);
                if (activityObj.getType().equalsIgnoreCase("task")) {
                  JSONObject answerjson = new JSONObject(jsonObject.getString("answer"));
                  answer = answerjson.getString("duration");
                  answer = Double.toString(Integer.parseInt(answer) / 60f);
                  data = "min \nfor\n" + answerjson.getString("value") + " kicks";
                } else {
                  answer = jsonObject.getString("answer");
                  data = "";
                }
              } catch (JSONException e) {
                Logger.log(e);
              }

              String s = simpleDateFormat.format(stepRecordCustomList.get(j).getCompleted());
              if (s.equalsIgnoreCase("" + k)) {
                entryList.add(new Entry(Float.parseFloat(answer), k - 1, data));
              }
            }
          }
          if (k % 5 == 0) {
            filteredXValues.add("" + k);
          } else {
            filteredXValues.add("");
          }
        }
      } else if (tag.equalsIgnoreCase("weeks_of_month")) {
        Calendar cal = Calendar.getInstance();
        cal.setFirstDayOfWeek(Calendar.SUNDAY);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM");
        for (int k = 1; k <= numberOfWeeksInMonth(simpleDateFormat.format(startTime)); k++) {
          for (int j = 0, size = stepRecordCustomList.size(); j < size; j++) {
            if (stepRecordCustomList.get(j).getCompleted().before(endtime)
                && stepRecordCustomList.get(j).getCompleted().after(startTime)) {
              JSONObject jsonObject;
              String answer = "";
              String data = "";
              try {
                jsonObject = new JSONObject(stepRecordCustomList.get(j).result);
                String[] id = stepRecordCustomList.get(j).activityID.split("_STUDYID_");
                ActivitiesWS activityObj = dbServiceSubscriber.getActivityObj(id[1], id[0], realm);
                if (activityObj.getType().equalsIgnoreCase("task")) {
                  JSONObject answerjson = new JSONObject(jsonObject.getString("answer"));
                  answer = answerjson.getString("duration");
                  answer = Double.toString(Integer.parseInt(answer) / 60f);
                  data = "min \nfor\n" + answerjson.getString("value") + " kicks";
                } else {
                  answer = jsonObject.getString("answer");
                  data = "";
                }
              } catch (JSONException e) {
                Logger.log(e);
              }
              cal.setTime(stepRecordCustomList.get(j).getCompleted());
              int week = cal.get(Calendar.WEEK_OF_MONTH);
              if (k == week) {
                entryList.add(new Entry(Float.parseFloat(answer), k - 1, data));
              }
            }
          }
          filteredXValues.add("W" + k);
        }
      } else if (tag.equalsIgnoreCase("months_of_year")) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM");
        for (int k = 0; k < month.length; k++) {
          for (int j = 0, size = stepRecordCustomList.size(); j < size; j++) {
            if (stepRecordCustomList.get(j).getCompleted().before(endtime)
                && stepRecordCustomList.get(j).getCompleted().after(startTime)) {
              JSONObject jsonObject;
              String answer = "";
              String data = "";
              try {
                jsonObject = new JSONObject(stepRecordCustomList.get(j).result);
                String[] id = stepRecordCustomList.get(j).activityID.split("_STUDYID_");
                ActivitiesWS activityObj = dbServiceSubscriber.getActivityObj(id[1], id[0], realm);
                if (activityObj.getType().equalsIgnoreCase("task")) {
                  JSONObject answerjson = new JSONObject(jsonObject.getString("answer"));
                  answer = answerjson.getString("duration");
                  answer = Double.toString(Integer.parseInt(answer) / 60f);
                  data = "min \nfor\n" + answerjson.getString("value") + " kicks";
                } else {
                  answer = jsonObject.getString("answer");
                  data = "";
                }
              } catch (JSONException e) {
                Logger.log(e);
              }
              String s = simpleDateFormat.format(stepRecordCustomList.get(j).getCompleted());
              if (s.equalsIgnoreCase(monthfull[k])) {
                entryList.add(new Entry(Float.parseFloat(answer), k, data));
              }
            }
          }
          filteredXValues.add(month[k]);
        }
      }
    } else if (tag.equalsIgnoreCase("hours_of_day")) {
      activityRuns =
          dbServiceSubscriber.getAllActivityRunforDate(
              activityId, getIntent().getStringExtra("studyId"), startTime, realm);
      for (int k = 0; k < activityRuns.size(); k++) {
        for (int l = 0; l < stepRecordCustomList.size(); l++) {
          if (stepRecordCustomList.get(l).getCompleted().before(endtime)
              && stepRecordCustomList.get(l).getCompleted().after(startTime)) {
            if (stepRecordCustomList.get(l).taskId.contains("_")) {
              String[] taskId = stepRecordCustomList.get(l).taskId.split("_STUDYID_");
              String runId =
                  taskId[1].substring(taskId[1].lastIndexOf("_") + 1, taskId[1].length());

              JSONObject jsonObject;
              String answer = "";
              String data = "";
              try {
                jsonObject = new JSONObject(stepRecordCustomList.get(l).result);
                String[] id = stepRecordCustomList.get(l).activityID.split("_STUDYID_");
                ActivitiesWS activityObj = dbServiceSubscriber.getActivityObj(id[1], id[0], realm);
                if (activityObj.getType().equalsIgnoreCase("task")) {
                  JSONObject answerjson = new JSONObject(jsonObject.getString("answer"));
                  answer = answerjson.getString("duration");
                  answer = Double.toString(Integer.parseInt(answer) / 60f);
                  data = "min \nfor\n" + answerjson.getString("value") + " kicks";
                } else {
                  answer = jsonObject.getString("answer");
                  data = "";
                }
                if (answer == null || answer.equalsIgnoreCase("")) {
                  answer = "0";
                }
              } catch (JSONException e) {
                Logger.log(e);
                if (answer.equalsIgnoreCase("")) {
                  answer = "0";
                }
              }

              if (runId.equalsIgnoreCase("" + activityRuns.get(k).getRunId())) {
                entryList.add(new Entry(Float.parseFloat(answer), k, data));
              }
            }
          }
        }
        filteredXValues.add("" + (k + 1));
      }
    } else {
      activityRuns =
          dbServiceSubscriber.getAllActivityRunFromDB(
              getIntent().getStringExtra("studyId"), activityId, realm);
      for (int k = 0; k < activityRuns.size(); k++) {
        for (int l = 0; l < stepRecordCustomList.size(); l++) {
          if (stepRecordCustomList.get(l).getCompleted().before(endtime)
              && stepRecordCustomList.get(l).getCompleted().after(startTime)) {
            if (stepRecordCustomList.get(l).taskId.contains("_")) {
              String[] taskId = stepRecordCustomList.get(l).taskId.split("_STUDYID_");
              String runId =
                  taskId[1].substring(taskId[1].lastIndexOf("_") + 1, taskId[1].length());

              JSONObject jsonObject;
              String answer = "";
              String data = "";
              try {
                jsonObject = new JSONObject(stepRecordCustomList.get(l).result);
                String[] id = stepRecordCustomList.get(l).activityID.split("_STUDYID_");
                ActivitiesWS activityObj = dbServiceSubscriber.getActivityObj(id[1], id[0], realm);
                if (activityObj.getType().equalsIgnoreCase("task")) {
                  JSONObject answerjson = new JSONObject(jsonObject.getString("answer"));
                  answer = answerjson.getString("duration");
                  answer = Double.toString(Integer.parseInt(answer) / 60f);
                  data = "min \nfor\n" + answerjson.getString("value") + " kicks";
                } else {
                  answer = jsonObject.getString("answer");
                  data = "";
                }
              } catch (JSONException e) {
                Logger.log(e);
              }

              if (runId.equalsIgnoreCase("" + activityRuns.get(k).getRunId())) {
                entryList.add(new Entry(Float.parseFloat(answer), k, data));
              }
            }
          }
        }
        filteredXValues.add("" + (k + 1));
      }
    }

    // Update chart w/ our data
    TempGraphHelper.updateLineChart(chart, 0, entryList, filteredXValues, barColor);
  }