/* * This file is part of jHaushalt. * jHaushalt is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * jHaushalt is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with jHaushalt; if not, see <http://www.gnu.org/licenses/>. * (C)opyright 2002-2010 Dr. Lars H. Hahn */ package jhaushalt.domain.zeitraum; public abstract class Zeitraum { /** * Liefert den ersten Tag des Zeitraums. * @return erster Tag des Zeitraums */ public abstract Datum getStartDatum(); /** * Liefert den letzten Tag des Zeitraums. * @return letzter Tag des Zeitraums */ public abstract Datum getEndDatum(); /** * Liefert den auf diesen Zeitraum folgenden Zeitraum mit * gleicher Länge. * @return nächster Zeitraum */ public abstract Zeitraum folgeZeitraum(); /** * Liefert die Anzahl der Tage des Zeitraums. * @return Anzahl der Tage */ public final int getAnzahlTage() { return (int) getEndDatum().sub(getStartDatum()); } /** * Liefert eine textuelle Beschreibung des Zeitraums. * @return Textbeschreibung des Zeitraums */ @Override public abstract String toString(); /** * Liefert den String der zum Speichern des Zeitraums verwendet wird. * In der Regel entspricht dies 'toString()'. * @return String zum Speichern * @see Zeitraum#toString() */ public String getDatenString() { return toString(); } public final boolean equals(final Zeitraum zeitraum) { if (zeitraum == null) { return false; } if (getStartDatum().compareTo(zeitraum.getStartDatum()) != 0) { return false; } if (getEndDatum().compareTo(zeitraum.getEndDatum()) != 0) { return false; } return true; } @Override public final boolean equals(final Object zeitraum) { return equals((Zeitraum) zeitraum); } @Override public int hashCode() { assert false : "hashCode not designed"; return 0; } }