Class TimeDomain<T extends TimeRange<T>>

java.lang.Object
com.google.common.collect.DiscreteDomain<T>
de.bsvrz.ars.ars.persistence.directories.mgmt.range.TimeDomain<T>
Type Parameters:
T - Typ der einzelnen Zeitintervalle, z. B. Week
Direct Known Subclasses:
WeekDomain

public abstract class TimeDomain<T extends TimeRange<T>> extends com.google.common.collect.DiscreteDomain<T>
Basisklasse für einen diskreten Typ für Zeitbereiche (z. B. Wochen) für die Wochenverzeichnisse.

Diese Klasse ermittelt zu einem Zeitstempel den zugehörigen Zeitbereich und konvertiert diesen in eine Ordnerstruktur bzw. erlaubt es umgekehrt, basierend auf einer gegebenen Ordnerstruktur das zugehörige Zeitintervall (also z. B.die Woche) zu ermitteln.

  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    getIntervals(com.google.common.collect.Range<Instant> timeRange)
    Ermittelt zu einem absoluten Zeitbereich (gegeben durch 2 Instant-Objekte) die Liste mit Intervallen, in diesem Bereich.
    abstract int
    Gibt die Maximaltiefe der Ordnerstruktur zurück, die diese TimeDomain verwendet.
    abstract Path
    getPath(T timeRange)
    Gibt zu einem gegebenen Zeitintervall den Pfad zurück, indem Daten dieses Zeitintervalls gespeichert werden sollen.
    abstract T
    ofEpochMillis(long epochMillis)
    Gibt zu einem Zeitpunkt, das Intervall zurück, das diesen Zeitpunkt enthält.
    abstract T
    ofPath(Path relativePath)
    Gibt zu einer relativen Ordnerstruktur das zugehörige Zeitintervall zurück.

    Methods inherited from class com.google.common.collect.DiscreteDomain

    bigIntegers, distance, integers, longs, maxValue, minValue, next, previous

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • TimeDomain

      public TimeDomain()
  • Method Details

    • getIntervals

      public List<T> getIntervals(@NotNull com.google.common.collect.Range<Instant> timeRange)
      Ermittelt zu einem absoluten Zeitbereich (gegeben durch 2 Instant-Objekte) die Liste mit Intervallen, in diesem Bereich. Die zurückgegebene Liste ist unveränderlich.
      Parameters:
      timeRange - Zeitbereich
      Returns:
      Intervalle
    • ofEpochMillis

      @Contract(pure=true) @NotNull public abstract T ofEpochMillis(long epochMillis)
      Gibt zu einem Zeitpunkt, das Intervall zurück, das diesen Zeitpunkt enthält.
      Parameters:
      epochMillis - Zeitpunkt in Epoch-Millis
      Returns:
      zu einem Zeitpunkt, das Intervall
    • ofPath

      @Contract(pure=true) @Nullable public abstract T ofPath(Path relativePath)
      Gibt zu einer relativen Ordnerstruktur das zugehörige Zeitintervall zurück.

      Beispielsweise könnte ofPath(Path.of("2021", "2021-01-01")); die Woche oder den Monat zurückgeben, der am 01. 01. 2021 anliegt.

      Handelt es sich um keine bekannte Ordnerstruktur, kann null zurückgegeben werden.

      Parameters:
      relativePath - Pfad, der relativ sein muss
      Returns:
      zu einem Zeitpunkt, das Intervall
    • getPath

      @Contract(pure=true) @NotNull public abstract Path getPath(T timeRange)
      Gibt zu einem gegebenen Zeitintervall den Pfad zurück, indem Daten dieses Zeitintervalls gespeichert werden sollen. Dieser Pfad muss zu jedem möglichen Zeitintervall eindeutig sein, sonst könnte die umgekehrte Operation ofPath(Path) nicht funktionieren.
      Parameters:
      timeRange - Zeitbereich
      Returns:
      Pfad
    • getMaxDepth

      public abstract int getMaxDepth()
      Gibt die Maximaltiefe der Ordnerstruktur zurück, die diese TimeDomain verwendet. Wenn z. B. Daten in Jahresverzeichnissen und darunter in Wochenverzeichnissen gespeichert werden sollen, mull 2 zurückgegeben werden. Innerhalb dieser Tiefe sucht das Archivsystem nach gültigen Persistenzverzeichnissen.
      Returns:
      Maximaltiefe