Bestimmung der Zeitpunkte von Ereignissen
ulrich
2023-03-23 d20d989f5495492f1258c8313db7c19b429111a3
commit | author | age
66d68b 1 /*
U 2   Zeitrechnung - a class library to determine calendar events
3   Copyright (c) 1984-2023 Ulrich Hilger, http://uhilger.de
4
5   This program is free software: you can redistribute it and/or modify
6   it under the terms of the GNU Affero General Public License as published by
7   the Free Software Foundation, either version 3 of the License, or
8   (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU Affero General Public License for more details.
14
15   You should have received a copy of the GNU Affero General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18 package de.uhilger.zeitrechnung.ereignis;
19
20 import de.uhilger.zeitrechnung.Datum;
21 import de.uhilger.zeitrechnung.Definition;
d20d98 22 import de.uhilger.zeitrechnung.kalender.ChinesischerKalender;
66d68b 23 import de.uhilger.zeitrechnung.kalender.HebraeischerKalender;
U 24 import de.uhilger.zeitrechnung.kalender.ISOKalender;
25 import java.util.ArrayList;
26 import java.util.List;
27
28 /**
29  * Ereignisse, fuer die keine eigene Klasse lohnt, weil 
30  * deren Rechenweg nur jeweils einmal verwendet wird.
31  * 
32  * <p>
33  * Manche der Ereignisse in dieser Klasse unterscheiden sich hauptsaechlich 
34  * durch ihre Verschiebe-Regeln. Sobald ein Mechanismus zur Verschiebung 
35  * erstellt ist, koennen diese hier entfallen.
36  * </p>
37  * 
38  * @author Ulrich Hilger
39  */
40 public class EinzelEreignis extends EreignisBasis {
41   
42   /** Typnummer fuer Schavuot */
43   public static final int EE_SCHAVUOT = 1;
44   
45   /** Typnummer fuer Purim */
46   public static final int EE_PURIM = 2;
47   
48   /** Typnummer fuer Ta Anit Esther */
49   public static final int EE_TA_ANIT_ESTHER = 3;
50   
51   /** Typnummer fuer Jom Ha Zikaron */
52   public static final int EE_JOM_HA_ZIKARON = 4;
d20d98 53   
U 54   public static final int EE_CHINESISCHES_NEUJAHR = 5;
55   
56   public static final int EE_QINGMING = 6;
66d68b 57
U 58   /**
59    * Den Typ des Ereignisses ermitteln
60    * 
61    * @return Ereignis.TYP_EINZEL
62    */
63   @Override
64   public int getTyp() {
65     return Ereignis.TYP_EINZEL;
66   }
67
68   /**
69    * Die Tage eines Jahres im gregorianischen Kalendersystem 
70    * ermitteln, an denen das Ereignis stattfindet.
71    * 
72    * @param isoJahr das Jahr im gregorianischen Kalender, 
73    * fuer das ermittelt werden soll, an welchen Tagen das Ereignis stattfindet
74    * @return die Liste aus Datum-Objekten, die die Tage im gregorianischen 
75    * Kalender bezeichnet, an denen das Ereignis stattfindet
76    */
77   @Override
78   public List<Datum> getZeitpunkte(long isoJahr) {
79     Definition def = getDefinition();
80     int typ = (int) def.getp1();
81     ISOKalender g = new ISOKalender();
82     List daten = new ArrayList();
83     long tage;
84     switch(typ) {
85       case EE_SCHAVUOT:
d20d98 86         tage = new HebraeischerKalender().passah(isoJahr);
66d68b 87         daten.add(g.vonTagen(tage + 50));
U 88         break;
89       case EE_PURIM:
d20d98 90         tage = new HebraeischerKalender().purim(isoJahr);
66d68b 91         daten.add(g.vonTagen(tage));
U 92         break;
93       case EE_TA_ANIT_ESTHER:
d20d98 94         tage = new HebraeischerKalender().taAnitEsther(isoJahr);
66d68b 95         daten.add(g.vonTagen(tage));
U 96         break;
97       case EE_JOM_HA_ZIKARON:
d20d98 98         tage = new HebraeischerKalender().yomHaZikkaron(isoJahr);
66d68b 99         daten.add(g.vonTagen(tage));
U 100         break;
d20d98 101       case EE_CHINESISCHES_NEUJAHR:
U 102         daten.add(g.vonTagen(new ChinesischerKalender().neujahr(isoJahr)));
103         break;
104       case EE_QINGMING:
105         daten.add(g.vonTagen(new ChinesischerKalender().qingMing(isoJahr)));        
106         break;
66d68b 107     }
U 108     return daten;
109   }    
110 }