/**
   * Vergleicht zwei Zeitspannen bezüglich Überschneidungsfreiheit
   *
   * @param vergleich Vergleichszeitspanne
   * @return Beide Zeitspannen sind überschneidungsfrei
   */
  public boolean istUeberschneidungsfrei(Zeitspanne vergleich) {
    boolean back = true;

    if (startZeit.compareTo(vergleich.getStartZeit()) < 0) {
      if (endeZeit.compareTo(vergleich.getStartZeit()) > 0) {
        back = false;
      }
    } else if (startZeit.compareTo(vergleich.getStartZeit()) > 0) {
      if (startZeit.compareTo(vergleich.getEndeZeit()) < 0) {
        back = false;
      }
    } else if (startZeit.compareTo(vergleich.getStartZeit()) == 0) {
      back = false;
    }

    return back;
  }
  /** {@inheritDoc} */
  public boolean equals(Object obj) {
    boolean back = false;

    if (obj instanceof Zeitspanne) {
      Zeitspanne pruefling = (Zeitspanne) obj;
      if (startZeit.compareTo(pruefling.getStartZeit()) == 0) {
        if (endeZeit == null) {
          if (pruefling.getEndeZeit() == null) {
            back = true;
          }
        } else if (endeZeit.compareTo(pruefling.getEndeZeit()) == 0) {
          back = true;
        }
      }
    }

    return back;
  }
  /**
   * Berechnet die Überschneidungszeit zweier Zeitspannen.
   *
   * @param vergleich Vergleichszeitspanne
   * @return Minuten
   */
  public int berechneUebereschneidungsMinuten(Zeitspanne vergleich) {
    int back = 0;

    if (!istUeberschneidungsfrei(vergleich)) {
      if (startZeit.compareTo(vergleich.getStartZeit()) < 0) {
        if (endeZeit.compareTo(vergleich.getEndeZeit()) < 0) {
          back = new Zeitspanne(vergleich.getStartZeit(), endeZeit).berechneMinutenDifferenz();
        } else {
          back = vergleich.berechneMinutenDifferenz();
        }
      } else {
        if (endeZeit.compareTo(vergleich.getEndeZeit()) < 0) {
          back = berechneMinutenDifferenz();
        } else {
          back = new Zeitspanne(startZeit, vergleich.getEndeZeit()).berechneMinutenDifferenz();
        }
      }
    }

    return back;
  }