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
|
*
|
* <p>
|
* Die Ereignis-Definition lautet:<br>
|
* JulianischesEreignis.getDefinition.setp1(Monat des julianischen
|
* Kalenders);<br>
|
* JulianischesEreignis.getDefinition.setp2(Tag im Monat des julianischen
|
* Kalenders);<br>
|
*
|
* @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<Datum> 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++) {
|
long tage = j.zuTagen(jStartJahr + y, (int) definition.getp1(), (int) definition.getp2());
|
if(tage >= start && tage <= end) {
|
list.add(g.vonTagen(tage));
|
}
|
}
|
return list;
|
}
|
}
|