All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.svws_nrw.davapi.util.icalendar.recurrence.ByDay Maven / Gradle / Ivy

Go to download

Diese Bibliothek enthält die Java-Server-Definition der CalDAV und CardDAV-Schnittstelle für die Schulverwaltungssoftware in NRW

There is a newer version: 1.0.1
Show newest version
package de.svws_nrw.davapi.util.icalendar.recurrence;

import java.util.Objects;

/**
 * Diese Klasse repräsentiert die ByDay-Regel eines wiederholten Ereignisses.
 * 
* Vgl. * RFC * 5545
* The BYDAY rule part specifies a COMMA-separated list of days of the week; SU indicates Sunday; MO indicates Monday; TU indicates Tuesday; WE indicates Wednesday; TH indicates Thursday; FR indicates Friday; and SA indicates Saturday. Each BYDAY value can also be preceded by a positive (+n) or negative (-n) integer. If present, this indicates the nth occurrence of a specific day within the MONTHLY or YEARLY "RRULE". * */ public final class ByDay implements Comparable { /** * das führende Integer. Wenn ungleich 0 gibt es den nten Tag innerhalb einer * RRULE mit Frequenz {@link Frequency#MONTHLY} oder {@link Frequency#YEARLY} * an. Bei Negativem Wert wird der nt-letzte Tag, also von hinten gezählt * angegeben. So gibt -1MO den letzten Montag in einer Regel wieder, '+3TU' den * 3. Dienstag, etc. */ private int ordinal; /** Der Wochentag in dem es in dieser Regel geht. */ private WeekDay weekDay; /** * Konstruktor für das ByDay Property mit der Ordnung (vgl. * {@link #getOrdinal()} und dem Wochentag. * * @param ordinal der Filter für den Wochentag * @param weekDay der Wochentag */ public ByDay(final int ordinal, final WeekDay weekDay) { this.ordinal = ordinal; this.weekDay = weekDay; } /** * Konstruktor für den Wochentag ohne Filter * * @param weekDay der Wochentag */ public ByDay(final WeekDay weekDay) { this.weekDay = weekDay; } /** * Getter für das Ordinal (Ordnung/Reihenfolge). Wenn ungleich 0 gibt es den * nten Tag innerhalb einer RRULE mit Frequenz {@link Frequency#MONTHLY} oder * {@link Frequency#YEARLY} an. Bei Negativem Wert wird der nt-letzte Tag, also * von hinten gezählt angegeben. So gibt -1MO den letzten Montag in einer Regel * wieder, '+3TU' den 3. Dienstag, etc. * * @return the ordinal */ public int getOrdinal() { return ordinal; } /** * das Ordinal (Filter). Wenn ungleich 0 gibt es den nten Tag innerhalb einer * RRULE mit Frequenz {@link Frequency#MONTHLY} oder {@link Frequency#YEARLY} * an. Bei Negativem Wert wird der nt-letzte Tag, also von hinten gezählt * angegeben. So gibt -1MO den letzten Montag in einer Regel wieder, '+3TU' den * 3. Dienstag, etc. * * @param ordinal the ordinal to set */ public void setOrdinal(final int ordinal) { this.ordinal = ordinal; } /** * @return the weekDay */ public WeekDay getWeekDay() { return weekDay; } /** * @param weekDay the weekDay to set */ public void setWeekDay(final WeekDay weekDay) { this.weekDay = weekDay; } @Override public String toString() { if (this.ordinal != 0) { return String.format("%d%s", this.ordinal, this.weekDay.getStringRep()); } return this.weekDay.getStringRep(); } @Override public int compareTo(final ByDay o) { int compare = this.weekDay.compareTo(o.weekDay); if (compare == 0) { compare = Integer.compare(this.ordinal, o.ordinal); } return compare; } @Override public int hashCode() { return Objects.hash(ordinal, weekDay); } @Override public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final ByDay other = (ByDay) obj; return ordinal == other.ordinal && weekDay == other.weekDay; } /** * Konvertiert einen String in ein ByDay Objekt * * @param s der String * @return das durch den String repräsentierte ByDay-Objekt */ public static ByDay fromString(final String s) { final ByDay result = new ByDay(WeekDay.fromStringRep(s.substring(s.length() - 2))); if (s.length() > 2) { final int ordinal = Integer.parseInt(s.substring(0, s.length() - 2)); result.setOrdinal(ordinal); } return result; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy