コード例 #1
0
        public EinmaligerTermin(XmlNode derKnoten)
            : base(derKnoten)
        {
            int jahr, monat, tag;

            try
            {
                jahr = HilfsKonstrukte.KonvertiereZuInt(
                    derKnoten.SelectSingleNode("./jahr").FirstChild.Value,
                    "Jahr");
                monat = HilfsKonstrukte.KonvertiereZuInt(
                    derKnoten.SelectSingleNode("./monat").FirstChild.Value,
                    "Monat");
                tag = HilfsKonstrukte.KonvertiereZuInt(
                    derKnoten.SelectSingleNode("./tag").FirstChild.Value,
                    "Tag");
            }
            catch (KeineZahlException)
            {
                throw new EintragParseException("Xml could not be parsed correctly");
            }
            //Termine an 29.2. in nicht Schaltenjahren sollten nicht auf den 28. korrigiert werden, sondern als nicht valide gelten
            //tag = HilfsKonstrukte.Korrigiere29zu28inNichtSchaltjahrFebruar(jahr, monat, tag);
            try
            {
                HilfsKonstrukte.PruefeObValidesDatum(jahr, monat, tag);
            }
            catch (FalscherBereichException)
            {
                throw new EintragParseException("Xml could not be parsed correctly");
            }
            _datum = new DateTime(jahr, monat, tag);
        }
コード例 #2
0
        public int StartWochenTag()
        {
            //15.10.1582 (Korrekturtag) war Fr
            //-> 1.1.1583 Sa=5
            int wochenTag = 5;

            for (int i = HilfsKonstrukte.MIN_JAHR; i < _jahr; ++i)
            {
                wochenTag += HilfsKonstrukte.TAGE_IM_JAHR + (HilfsKonstrukte.IstSchaltjahr(i) ? 1 : 0);
                wochenTag %= 7;
            }
            return(wochenTag);
        }
コード例 #3
0
        public override void gibAus()
        {
            oeffneStream();     //Textdatei erzeigen
            //     html(_modus);       //HTML Datei anlegen
            int monat, tag;
            int wochentagDesErstenImMonat = 0; //Mo = 0, ...

            gibZeileAus("Kalender fuer das Jahr " + _jahr.Jahreszahl());
            gibZeileAus();
            string wochentage = String.Join(" ", HilfsKonstrukte.wochenTagNamenKurz);

            wochentagDesErstenImMonat = _jahr.StartWochenTag();
            for (monat = 0; monat < 12; monat++) //Schleife für die Erstellung der Monate: 0=Jan bis 11=Dez
            {
                gibZeileAus("      " + HilfsKonstrukte.monatsNamen[monat]);
                gibZeileAus(wochentage);

                if (monat > 0)
                {
                    wochentagDesErstenImMonat += HilfsKonstrukte.TageImMonat(monat, _jahr.Jahreszahl()) % 7;
                    wochentagDesErstenImMonat %= 7;
                }

                //Die Woche beginnt immer Montags, nur der 1. eines Monats
                //kann auf verschiedene Wochentage fallen.
                int ausgabePosition = wochentagDesErstenImMonat;

                string zeile = "".PadLeft(ausgabePosition * 3);
                for (tag = 1; tag <= HilfsKonstrukte.TageImMonat(monat + 1, _jahr.Jahreszahl()); tag++) //solange Zähler kleiner gleich Wert aus Array Tage
                {
                    zeile += tag.ToString().PadRight(3);
                    ausgabePosition++;

                    //wenn hinterste Position erreicht Zeihlenumbruch einfügen und Bildschirm-Positionszähler zurücksetzen
                    if (ausgabePosition > 6)
                    {
                        gibZeileAus(zeile);
                        ausgabePosition = 0;
                        zeile           = "";
                    }
                }
                if (zeile.Length > 0) //wenn mehr als 0 Zeichen vorhanden sind ganze Zeile ausgeben
                {
                    gibZeileAus(zeile);
                }
                //freie Zeilen zwischen den Monaten auf dem Bildschirm
                gibZeileAus();
            } //ende for Schleife Monat
            schliesseStream();
        }
コード例 #4
0
 public Geburtstag(XmlNode derKnoten)
     : base(derKnoten)
 {
     try
     {
         if (derKnoten.SelectSingleNode("./jahr") != null)
         {
             _geburtsjahr = HilfsKonstrukte.KonvertiereZuInt(
                 derKnoten.SelectSingleNode("./jahr").FirstChild.Value,
                 "Jahr");
         }
     }
     catch (KeineZahlException)
     {
         throw new EintragParseException("Xml could not be parsed correctly");
     }
 }
コード例 #5
0
        public KalenderJahr(int dasJahr)
        {
            _jahr   = dasJahr;
            _monate = new List <Monat>();
            _wochen = new List <Woche>();
            _tage   = new List <Tag>();
            int tageImJahr = HilfsKonstrukte.TAGE_IM_JAHR;

            if (IstSchaltjahr())
            {
                ++tageImJahr;
            }
            int   wochenTag    = StartWochenTag();
            int   wochenNummer = StartWochenNummer();
            int   monat        = 0;
            int   tagImMonat   = 0;
            Woche woche        = new Woche(wochenNummer);

            for (int i = 0; i < tageImJahr; ++i)
            {
                if (tagImMonat == 0)
                {
                    _monate.Add(new Monat(monat));
                }
                if (wochenTag == 0 && i != 0)
                {
                    wochenNummer++;
                    woche = new Woche(wochenNummer);
                    _wochen.Add(woche);
                }
                Tag meinTag = new Tag(tagImMonat + 1, wochenTag, i + 1);
                meinTag.SetzeWoche(ref woche);
                _tage.Add(meinTag);
                _monate[monat].FuegeTagAn(ref meinTag);
                wochenTag = (++wochenTag) % HilfsKonstrukte.TAGE_PRO_WOCHE;
                tagImMonat++;
                if (tagImMonat == HilfsKonstrukte.TageImMonat(monat + 1, _jahr))
                {
                    monat++;
                    tagImMonat = 0;
                }
            }
        }
コード例 #6
0
 public RelativesEreignisNterWochentagImMonat(XmlNode derKnoten)
     : base(derKnoten)
 {
     try
     {
         _n = HilfsKonstrukte.KonvertiereZuInt(
             derKnoten.SelectSingleNode("./n").FirstChild.Value,
             "n");
         HilfsKonstrukte.PruefeBereich(_n, 1, 5);
     }
     catch (KeineZahlException)
     {
         throw new EintragParseException("Xml could not be parsed correctly");
     }
     catch (FalscherBereichException)
     {
         throw new EintragParseException("Xml could not be parsed correctly");
     }
 }
コード例 #7
0
 public RelativerEintrag(XmlNode derKnoten)
     : base(derKnoten)
 {
     try
     {
         _monat = HilfsKonstrukte.KonvertiereZuInt(
             derKnoten.SelectSingleNode("./monat").FirstChild.Value,
             "Monat");
         _wochentag = HilfsKonstrukte.KonvertiereZuInt(
             derKnoten.SelectSingleNode("./wochentag").FirstChild.Value,
             "Wochentag");
         HilfsKonstrukte.PruefeBereich(_monat, 1, 12);
         HilfsKonstrukte.PruefeBereich(_wochentag, 0, HilfsKonstrukte.TAGE_PRO_WOCHE - 1);
     }
     catch (KeineZahlException)
     {
         throw new EintragParseException("Xml could not be parsed correctly");
     }
     catch (FalscherBereichException)
     {
         throw new EintragParseException("Xml could not be parsed correctly");
     }
 }
コード例 #8
0
 public JaehrlichesEreignisAnFestemTag(XmlNode derKnoten)
     : base(derKnoten)
 {
     try
     {
         _monat = HilfsKonstrukte.KonvertiereZuInt(
             derKnoten.SelectSingleNode("./monat").FirstChild.Value,
             "Monat");
         _tag = HilfsKonstrukte.KonvertiereZuInt(
             derKnoten.SelectSingleNode("./tag").FirstChild.Value,
             "Tag");
         int dummySchaltjahr = 2012;
         HilfsKonstrukte.PruefeObValidesDatum(dummySchaltjahr, _monat, _tag);
     }
     catch (KeineZahlException)
     {
         throw new EintragParseException("Xml could not be parsed correctly");
     }
     catch (FalscherBereichException)
     {
         throw new EintragParseException("Xml could not be parsed correctly");
     }
 }
コード例 #9
0
        public override void gibAus()
        {
            oeffneStream();

            int monat, tag;
            int wochentagDesErstenImMonat = 0; //Mo = 0, ...

            gibZeileAus("Kalender fuer das Jahr " + _jahr.Jahreszahl());
            gibZeileAus();
            string wochentage = String.Join(" ", HilfsKonstrukte.wochenTagNamenKurz);

            wochentagDesErstenImMonat = _jahr.StartWochenTag();
            for (monat = 0; monat < 12; monat++) //Schleife für die Erstellung der Monate: 0=Jan bis 11=Dez
            {
                preparedStrings[monat] = new List <string>();
                preparedStrings[monat].Add("      " + HilfsKonstrukte.monatsNamen[monat]);
                preparedStrings[monat].Add(wochentage);

                if (monat > 0)
                {
                    wochentagDesErstenImMonat += HilfsKonstrukte.TageImMonat(monat, _jahr.Jahreszahl()) % 7;
                    wochentagDesErstenImMonat %= 7;
                }

                //Die Woche beginnt immer Montags, nur der 1. eines Monats
                //kann auf verschiedene Wochentage fallen.
                int ausgabePosition = wochentagDesErstenImMonat;

                string zeile = "".PadLeft(ausgabePosition * 3);
                for (tag = 1; tag <= HilfsKonstrukte.TageImMonat(monat + 1, _jahr.Jahreszahl()); tag++) //solange Zähler kleiner gleich Wert aus Array Tage
                {
                    zeile += tag.ToString().PadRight(3);
                    ausgabePosition++;

                    //wenn hinterste Position erreicht Zeihlenumbruch einfügen und Bildschirm-Positionszähler zurücksetzen
                    if (ausgabePosition > 6)
                    {
                        preparedStrings[monat].Add(zeile);
                        ausgabePosition = 0;
                        zeile           = "";
                    }
                }
                if (zeile.Length > 0) //wenn mehr als 0 Zeichen vorhanden sind ganze Zeile ausgeben
                {
                    preparedStrings[monat].Add(zeile);
                }
                //freie Zeilen zwischen den Monaten auf dem Bildschirm
                while (preparedStrings[monat].Count < 9)
                {
                    preparedStrings[monat].Add("");
                }
            } //ende for Schleife Monat

            for (monat = 0; monat < 6; monat++)
            {
                for (int i = 0, l = preparedStrings[monat].Count; i < l; ++i)
                {
                    gibZeileAus(preparedStrings[monat][i].PadRight(SPALTEN_BREITE)
                                + preparedStrings[monat + 6][i]);
                }
            }
            schliesseStream();
        }
コード例 #10
0
 public bool IstSchaltjahr()
 {
     return(HilfsKonstrukte.IstSchaltjahr(_jahr));
 }
コード例 #11
0
        public override void TrageEinIn(KalenderJahr dasJahr)
        {
            int korrigierterTag = HilfsKonstrukte.Korrigiere29zu28inNichtSchaltjahrFebruar(dasJahr.Jahreszahl(), _monat, _tag);

            dasJahr.GibMonate()[_monat - 1].GibTage()[korrigierterTag - 1].TrageEin(this, GibEintragText(dasJahr));
        }