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