Ejemplo n.º 1
0
  public long getTime() {
    CompactCalendar minimum = null, maximum = null;
    long totalTimeMilliSeconds = 0;
    List<P> positions = getPositions();
    P previous = null;
    for (P next : positions) {
      if (previous != null) {
        Long time = previous.calculateTime(next);
        if (time != null && time > 0) totalTimeMilliSeconds += time;
      }

      CompactCalendar calendar = next.getTime();
      if (calendar == null) continue;
      if (minimum == null || calendar.before(minimum)) minimum = calendar;
      if (maximum == null || calendar.after(maximum)) maximum = calendar;

      previous = next;
    }

    long maxMinusMin = minimum != null ? maximum.getTimeInMillis() - minimum.getTimeInMillis() : 0;
    return max(maxMinusMin, totalTimeMilliSeconds);
  }