/* Zeitrechnung - a class library to determine calendar events Copyright (c) 1984-2023 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 de.uhilger.zeitrechnung.kalender.ChinesischerKalender; import de.uhilger.zeitrechnung.kalender.HebraeischerKalender; import de.uhilger.zeitrechnung.kalender.ISOKalender; import java.util.ArrayList; import java.util.List; /** * Ereignisse, fuer die keine eigene Klasse lohnt, weil * deren Rechenweg nur jeweils einmal verwendet wird. * *

* Manche der Ereignisse in dieser Klasse unterscheiden sich hauptsaechlich * durch ihre Verschiebe-Regeln. Sobald ein Mechanismus zur Verschiebung * erstellt ist, koennen diese hier entfallen. *

* * @author Ulrich Hilger */ public class EinzelEreignis extends EreignisBasis { /** Typnummer fuer Schavuot */ public static final int EE_SCHAVUOT = 1; /** Typnummer fuer Purim */ public static final int EE_PURIM = 2; /** Typnummer fuer Ta Anit Esther */ public static final int EE_TA_ANIT_ESTHER = 3; /** Typnummer fuer Jom Ha Zikaron */ public static final int EE_JOM_HA_ZIKARON = 4; public static final int EE_CHINESISCHES_NEUJAHR = 5; public static final int EE_QINGMING = 6; /** * Den Typ des Ereignisses ermitteln * * @return Ereignis.TYP_EINZEL */ @Override public int getTyp() { return Ereignis.TYP_EINZEL; } /** * 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 */ @Override public List getZeitpunkte(long isoJahr) { Definition def = getDefinition(); int typ = (int) def.getp1(); ISOKalender g = new ISOKalender(); List daten = new ArrayList(); long tage; switch(typ) { case EE_SCHAVUOT: tage = new HebraeischerKalender().passah(isoJahr); daten.add(g.vonTagen(tage + 50)); break; case EE_PURIM: tage = new HebraeischerKalender().purim(isoJahr); daten.add(g.vonTagen(tage)); break; case EE_TA_ANIT_ESTHER: tage = new HebraeischerKalender().taAnitEsther(isoJahr); daten.add(g.vonTagen(tage)); break; case EE_JOM_HA_ZIKARON: tage = new HebraeischerKalender().yomHaZikkaron(isoJahr); daten.add(g.vonTagen(tage)); break; case EE_CHINESISCHES_NEUJAHR: daten.add(g.vonTagen(new ChinesischerKalender().neujahr(isoJahr))); break; case EE_QINGMING: daten.add(g.vonTagen(new ChinesischerKalender().qingMing(isoJahr))); break; } return daten; } }