/* Zeitrechnung - a class library to determine calendar events Copyright (c) 1984-2022 Ulrich Hilger, http://uhilger.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program 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 Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package de.uhilger.zeitrechnung.ereignis; import de.uhilger.zeitrechnung.Datum; import de.uhilger.zeitrechnung.Definition; import java.util.List; /** * Die Schnittstelle Ereignis modelliert Kalenderereignisse in Form von * Ereignis-Typen und bis zu vier Ganzzahl-Parametern, die je nach * Ereignis-Typ den Zeitpunkt beschreiben, an dem ein Ereignis stattfindet. * * Die Bedeutung und Verwendung der Parameter ist fuer jeden Ereignis-Typ * in der Klassenbeschreibung des jeweiligen Ereignis-Typs enthalten. * * @author Ulrich Hilger */ public interface Ereignis { /* Typnummer fuer DatumEreignis */ public static final int TYP_DATUM = 1; /* Typnummer TagWocheMonatEreignis */ public static final int TYP_TAG_WOCHE_MONAT = 2; /** Typnummer fuer TagDatumEreignis */ public static final int TYP_TAG_DATUM = 3; /** Typnummer fuer OsterEreignis */ public static final int TYP_OSTERN = 4; /** Typnummer fuer JahreszeitEreignis */ public static final int TYP_JAHRESZEIT = 5; /** Typnummer fuer HebraeischesEreignis */ public static final int TYP_HEBRAEISCH = 6; /** Typnummer fuer EinzelEreignis */ public static final int TYP_EINZEL = 7; /** Typnummer fuer MuslimischesEreignis */ public static final int TYP_MUSLIMISCH = 8; /** Typnummer fuer JulianischesEreignis */ public static final int TYP_JULIANISCH = 9; /** Typnummer fuer ChinesischesEreignis */ public static final int TYP_CHINESISCH = 10; public static final int GREGORIANISCHER_KALENDER = 1; public static final int JULIANISCHER_KALENDER = 2; /** * Den Typ des Ereignisses ermitteln * * @return Ereignis.TYP_DATUM oder Ereignis.TYP_OSTERN oder * Ereignis.TYP_WOCHENTAG_DATUM usw. */ public int getTyp(); /** * Die Definition des Ereignisses ermitteln * @return das Definitionsobjekt fuer dieses Ereignis */ public Definition getDefinition(); /** * Die Definition dieses Ereignisses angeben * @param definition das Definitionsobjekt dieses Ereignisses */ public void setDefinition(Definition definition); /** * Die Tage eines Jahres im gregorianischen Kalendersystem * ermitteln, an denen das Ereignis stattfindet. * * @param isoJahr das Jahr im gregorianischen Kalender, * fuer das ermittelt werden soll, an welchen Tagen das Ereignis stattfindet * @return die Liste aus Datum-Objekten, die die Tage im gregorianischen * Kalender bezeichnet, an denen das Ereignis stattfindet */ public List getZeitpunkte(long isoJahr); }