java.lang.Object
java.lang.Record
de.bsvrz.ars.ars.persistence.directories.mgmt.range.Week
Record Components:
internalWeekNumber - laufende Wochennummer seit dem 01.01.2017. Die Woche, die am 01.01.2017 startet, bekommt die Nummer 0, die Woche die am 08.01.2017 startet die 1, usw. negative Zahlen sind für Wochen vor 2017 möglich.
All Implemented Interfaces:
TimeRange<Week>, Comparable<Week>

public record Week(long internalWeekNumber) extends Record implements TimeRange<Week>
Diese Klasse repräsentiert eine beliebige laufende Kalenderwoche. Intern werden die Anzahl Wochen seit der Woche gezählt, die am 01.01.2017 um 0:00 UTC startet. Dies ist ein Sonntag. Im Sinne dieses Programms starten Wochen immer Sonntags, da so der Umschaltzeitpunkt von einer Woche auf die nächste auf das "ruhige" Wochenende gelegt werden kann.

Das Jahr 2017 wurde willkürlich gewählt, da es an einem Sonntag beginnt.

UTC und Sonntag sind fest einprogrammiert, um Probleme zu umgehen, die sich durch sich ändernde Systemeinstellungen oder Zeitzoneneinstellungen usw. ergeben könnten.

  • Constructor Details

    • Week

      public Week(long internalWeekNumber)
      Erstellt eine neue Woche.
      Parameters:
      internalWeekNumber - laufende Wochennummer
  • Method Details

    • compareTo

      public int compareTo(Week o)
      Specified by:
      compareTo in interface Comparable<Week>
    • getFirstDay

      public LocalDate getFirstDay()
    • getLastDay

      public LocalDate getLastDay()
    • getDayRange

      public com.google.common.collect.Range<LocalDate> getDayRange()
      Description copied from interface: TimeRange
      Konvertiert den Zeitbereich in einen Bereich von Tagen.
      Specified by:
      getDayRange in interface TimeRange<Week>
      Returns:
      Zeitbereich asl Epoch Millis
    • getFirstEpochMillis

      public long getFirstEpochMillis()
    • getLastEpochMillis

      public long getLastEpochMillis()
    • getEpochMillisRange

      public com.google.common.collect.Range<Long> getEpochMillisRange()
      Description copied from interface: TimeRange
      Konvertiert den Zeitbereich in eine Long-Range, die Epoch-Millisekunden repräsentiert.
      Specified by:
      getEpochMillisRange in interface TimeRange<Week>
      Returns:
      Zeitbereich asl Epoch Millis
    • next

      public Week next()
      Description copied from interface: TimeRange
      Gibt das nachfolgende Verzeichnis zurück
      Specified by:
      next in interface TimeRange<Week>
      Returns:
      nachfolgendes Verzeichnis
    • previous

      public Week previous()
      Description copied from interface: TimeRange
      Gibt das zeitlich davorliegende Verzeichnis zurück
      Specified by:
      previous in interface TimeRange<Week>
      Returns:
      zeitlich direkt vorher liegendes Verzeichnis
    • stepsUntil

      public long stepsUntil(Week other)
      Description copied from interface: TimeRange
      Gibt den Abstand zwischen diesem Zeitbereich und dem angegebenen Zeitbereich zurück.

      Falls other gleich this ist, wird 0 zurückgegeben.

      Falls other gleich this.next() ist, wird 1 zurückgegeben.

      Falls other gleich this.next().next() ist, wird 2 zurückgegeben.

      Falls other gleich this.previous() ist, wird -1 zurückgegeben.

      und So weiter, d. h. diese Methode other - this wenn man annimmt, dass die Zeitbereiche in Richtung Zukunft laufend durchnummeriert werden.

      Specified by:
      stepsUntil in interface TimeRange<Week>
      Parameters:
      other - Anderer Zeitbereich
      Returns:
      Anzahl "Schritte" zwischen this und other
    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='.
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • internalWeekNumber

      public long internalWeekNumber()
      Returns the value of the internalWeekNumber record component.
      Returns:
      the value of the internalWeekNumber record component