public void addToWatchSet(DataMap dataMap) {

    ArrayList<DataMap> entries = dataMap.getDataMapArrayList("entries");
    if (entries != null) {
      for (DataMap entry : entries) {
        double sgv = entry.getDouble("sgvDouble");
        double high = entry.getDouble("high");
        double low = entry.getDouble("low");
        double timestamp = entry.getDouble("timestamp");

        final int size = bgDataList.size();
        if (size > 0) {
          if (bgDataList.get(size - 1).timestamp == timestamp) continue; // Ignore duplicates.
        }

        bgDataList.add(new BgWatchData(sgv, high, low, timestamp));
      }
    } else {
      double sgv = dataMap.getDouble("sgvDouble");
      double high = dataMap.getDouble("high");
      double low = dataMap.getDouble("low");
      double timestamp = dataMap.getDouble("timestamp");

      final int size = bgDataList.size();
      if (size > 0) {
        if (bgDataList.get(size - 1).timestamp == timestamp) return; // Ignore duplicates.
      }

      bgDataList.add(new BgWatchData(sgv, high, low, timestamp));
    }

    for (int i = 0; i < bgDataList.size(); i++) {
      if (bgDataList.get(i).timestamp < (new Date().getTime() - (1000 * 60 * 60 * 5))) {
        bgDataList.remove(i); // Get rid of anything more than 5 hours old
        break;
      }
    }
  }