package de.uhilger.zeitrechnung.ereignis; import de.uhilger.zeitrechnung.Datum; import de.uhilger.zeitrechnung.Definition; import de.uhilger.zeitrechnung.kalender.ISOKalender; import de.uhilger.zeitrechnung.kalender.JulianischerKalender; import java.util.ArrayList; import java.util.List; /** * Bestimmung der Zeitpunkte von Ereignissen im julianischen Kalendersystem * *

* Die Ereignis-Definition lautet:
* JulianischesEreignis.getDefinition.setp1(Monat des julianischen * Kalenders);
* JulianischesEreignis.getDefinition.setp2(Tag im Monat des julianischen * Kalenders);
* * @author Ulrich Hilger */ public class JulianischesEreignis extends EreignisBasis { /** * Den Typ des Ereignisses ermitteln * * @return Ereignis.TYP_JULIANISCH */ @Override public int getTyp() { return TYP_JULIANISCH; } /** * 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) { ISOKalender g = new ISOKalender(); long start = g.zuTagen(isoJahr, Definition.JANUAR, 1); long end = g.zuTagen(isoJahr, Definition.DEZEMBER, 31); JulianischerKalender j = new JulianischerKalender(); Datum jStart = j.vonTagen(start); long jStartJahr = jStart.getJahr(); Datum jEnd = j.vonTagen(end); long jEndJahr = jEnd.getJahr(); long anzahlJahre = (jEndJahr - jStartJahr) + (long) 1; ArrayList list = new ArrayList(); for (long y = 0; y < anzahlJahre; y++) { Datum jDatum = new Datum(isoJahr + y, (int) definition.getp1(), (int) definition.getp2()); long tage = j.zuTagen(jDatum); if(tage >= start && tage <= end) { list.add(g.vonTagen(tage)); } } return list; } }