public DemoCalendarActivityBean(
      DemoCalendarActivity activity, TimeZone tz, DemoCalendarModelWrapper model) {
    _tz = tz;
    _activity = activity;
    _model = model;

    _allDay = (CalendarActivity.TimeType.ALLDAY.equals(_activity.getTimeType()));

    if (CalendarActivity.TimeType.DURATION.equals(_activity.getTimeType())) {
      long duration = _activity.getDuration(_activity.getStartDate(tz), tz);
      _durHours = Integer.valueOf((int) (duration / _SIXTY_MINUTES_IN_MILLIS));
      _durMinutes =
          Integer.valueOf(
              (int) ((duration - _durHours * _SIXTY_MINUTES_IN_MILLIS) / _SIXTY_SECONDS_IN_MILLIS));
    }
  }
  /**
   * Gets the total duration of the TimeType.DURATION activity by summing up durations reported
   * against individual dates between activity start and end date (exclusive)
   *
   * @param activity
   * @param tz
   * @return
   */
  private long _getTotalActivityDuration(CalendarActivity activity, TimeZone tz) {
    if (!CalendarActivity.TimeType.DURATION.equals(activity.getTimeType())) return 0L;

    long totalDuration = 0L;

    Calendar activeCal = Calendar.getInstance(tz);
    activeCal.setTime(activity.getStartDate(tz));

    Calendar endCal = Calendar.getInstance(tz);
    endCal.setTime(activity.getEndDate(tz));

    do {
      totalDuration += Math.max(0, activity.getDuration(activeCal.getTime(), tz));

      // increment the calendar
      activeCal.add(Calendar.DAY_OF_YEAR, 1);
    } while (activeCal.before(endCal));

    return totalDuration;
  }
 public boolean isDuration() {
   return CalendarActivity.TimeType.DURATION.equals(_activity.getTimeType());
 }