From 2f6b9a6d698d70893d6d56ba0736910c14d44214 Mon Sep 17 00:00:00 2001 From: ulrich <undisclosed> Date: Sun, 19 Mar 2023 18:56:46 +0000 Subject: [PATCH] Erweiterungen zu chr.-orthodoxen Ereignissen (in Arbeit) --- src/de/uhilger/zeitrechnung/ereignis/JulianischesEreignis.java | 48 +++++++++++++++-------- src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java | 41 ++++++++++++++------ src/de/uhilger/zeitrechnung/ereignis/EreignisBasis.java | 3 + src/de/uhilger/zeitrechnung/ereignis/Ereignis.java | 3 + src/de/uhilger/zeitrechnung/Definition.java | 10 ++-- 5 files changed, 70 insertions(+), 35 deletions(-) diff --git a/src/de/uhilger/zeitrechnung/Definition.java b/src/de/uhilger/zeitrechnung/Definition.java index 90fde2b..f5457d4 100644 --- a/src/de/uhilger/zeitrechnung/Definition.java +++ b/src/de/uhilger/zeitrechnung/Definition.java @@ -59,11 +59,11 @@ private String name; private int typ; - private long p1; - private long p2; - private long p3; - private long p4; - private long p5; + private long p1 = Long.MAX_VALUE; + private long p2 = Long.MAX_VALUE; + private long p3 = Long.MAX_VALUE; + private long p4 = Long.MAX_VALUE; + private long p5 = Long.MAX_VALUE; public String getName() { return name; diff --git a/src/de/uhilger/zeitrechnung/ereignis/Ereignis.java b/src/de/uhilger/zeitrechnung/ereignis/Ereignis.java index 38ce2ee..bfa923d 100644 --- a/src/de/uhilger/zeitrechnung/ereignis/Ereignis.java +++ b/src/de/uhilger/zeitrechnung/ereignis/Ereignis.java @@ -60,6 +60,9 @@ /** Typnummer fuer JulianischesEreignis */ public static final int TYP_JULIANISCH = 9; + public static final int GREGORIANISCHER_KALENDER = 1; + public static final int JULIANISCHER_KALENDER = 2; + /** * Den Typ des Ereignisses ermitteln * diff --git a/src/de/uhilger/zeitrechnung/ereignis/EreignisBasis.java b/src/de/uhilger/zeitrechnung/ereignis/EreignisBasis.java index 878db0f..d99eb11 100644 --- a/src/de/uhilger/zeitrechnung/ereignis/EreignisBasis.java +++ b/src/de/uhilger/zeitrechnung/ereignis/EreignisBasis.java @@ -31,7 +31,8 @@ DatumEreignis.class.getName(), TagWocheMonatEreignis.class.getName(), TagDatumEreignis.class.getName(), OsterEreignis.class.getName(), JahreszeitEreignis.class.getName(), HebraeischesEreignis.class.getName(), - EinzelEreignis.class.getName(), MuslimischesEreignis.class.getName() + EinzelEreignis.class.getName(), MuslimischesEreignis.class.getName(), + JulianischesEreignis.class.getName() }; /** diff --git a/src/de/uhilger/zeitrechnung/ereignis/JulianischesEreignis.java b/src/de/uhilger/zeitrechnung/ereignis/JulianischesEreignis.java index 245a221..df7691c 100644 --- a/src/de/uhilger/zeitrechnung/ereignis/JulianischesEreignis.java +++ b/src/de/uhilger/zeitrechnung/ereignis/JulianischesEreignis.java @@ -1,6 +1,7 @@ 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; @@ -8,19 +9,21 @@ /** * 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> - * + * 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 @@ -29,22 +32,33 @@ } /** - * 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 + * 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) { - Datum jDatum = new Datum(isoJahr, (int) definition.getp1(), (int) definition.getp2()); - JulianischerKalender j = new JulianischerKalender(); - long tage = j.zuTagen(jDatum); 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(); - list.add(g.vonTagen(tage)); + for (long y = 0; y < anzahlJahre; y++) { + Datum jDatum = new Datum(isoJahr, (int) definition.getp1(), (int) definition.getp2()); + //JulianischerKalender j = new JulianischerKalender(); + long tage = j.zuTagen(jDatum); + //ISOKalender g = new ISOKalender(); + list.add(g.vonTagen(tage)); + } return list; - } + } } \ No newline at end of file diff --git a/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java b/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java index b7a2a6a..93f8e1d 100644 --- a/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java +++ b/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java @@ -23,8 +23,11 @@ import de.uhilger.zeitrechnung.kalender.ISOKalender; import de.uhilger.zeitrechnung.kalender.JulianischerKalender; import de.uhilger.zeitrechnung.kalender.Wandler; +import de.uhilger.zeitrechnung.kalender.Zeitrechnung; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; /** * Wochentag vor oder nach einem Datum, zB Totensonntag (fuenter Sonntag @@ -74,22 +77,36 @@ */ @Override public List<Datum> getZeitpunkte(long isoJahr) { + ISOKalender g = new ISOKalender(); Definition def = getDefinition(); long monat = def.getp2(); long tag = def.getp3(); long kalender = def.getp5(); - Wandler w; - if(1 == kalender) { - w = new ISOKalender(); - } else { - w = new JulianischerKalender(); - } - long basisDatum = w.zuTagen(isoJahr, (int) monat, (int) tag); - long generischesDatum = ((BasisKalender) w).nterTag((int) def.getp4(), (int) def.getp1(), basisDatum); - Datum d = w.vonTagen(generischesDatum); - //Datum d = w.getDatum(); ArrayList list = new ArrayList(); - list.add(d); + if(GREGORIANISCHER_KALENDER == kalender || Long.MAX_VALUE == kalender) { + long basisDatum = g.zuTagen(isoJahr, (int) monat, (int) tag); + long generischesDatum = g.nterTag((int) def.getp4(), (int) def.getp1(), basisDatum); + Datum d = g.vonTagen(generischesDatum); + list.add(d); + list.add(d); + } else { + 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; + for (long y = 0; y < anzahlJahre; y++) { + long tage = j.zuTagen(jStartJahr + y, (int) def.getp2(), (int) def.getp3()); + long generischesDatum = g.nterTag((int) def.getp4(), (int) def.getp1(), tage); + if (generischesDatum >= start && generischesDatum <= end) { + Datum d = g.vonTagen(generischesDatum); + list.add(d); + } + } + } return list; } -} \ No newline at end of file +} -- Gitblit v1.9.3