Interface PersistenceDirectoryManager

All Superinterfaces:
DataGapManager
All Known Implementing Classes:
SingletonPersistenceDirectoryManager, TimeBasedPersistenceDirectoryManager

public interface PersistenceDirectoryManager extends DataGapManager
Verwaltung von mehreren (zeitlich getrennten) Persistenzverzeichnissen
  • Method Details

    • updatePersistenceDirectories

      void updatePersistenceDirectories(long archTime) throws IOException, InterruptedException, PersistenceException
      Aktualisiert das aktive Persistenzverzeichnis basierend auf der aktuellen Archivzeit
      Parameters:
      archTime - aktuelle Archivzeit (Millis seit Epoch)
      Throws:
      IOException - IO-Fehler
      InterruptedException - Unterbrochen beim Einrichten des neuen Persistenzverzeichnisses
      PersistenceException - Allgemeiner Persistenzfehler
    • getActivePersistenceDirectory

      @Nullable ActivePersistenceDirectory getActivePersistenceDirectory()
      Gibt das Persistenzverzeichnis zurück, in das aktuell archiviert wird. Kann null zurückgeben, z. B. während der Initialisierung oder während noch nichts archiviert wurde.
      Returns:
      Aktives Persistenzverzeichnis
    • getPersistenceDirectories

      List<? extends PersistenceDirectory> getPersistenceDirectories(int simVariant, SequenceSpecification sequenceSpecification)
      Ermittelt alle Persistenzverzeichnisse, die zur angegebenen Zeitspezifikation die zugehörigen Archivdaten enthält.

      Achtung: Da bei Archivanfragen ggf. ein initialer Zustand und ein Nachfolgedatensatz (Gültigkeitsdauer des letzten Datensatzes) ermittelt werden muss, muss ein Aufrufer ggf. noch zusätzlich einen vorherigen oder nachfolgenden Container aus einem anderen Verzeichnis eigenständig ermitteln!

      Parameters:
      simVariant - Simulationsvariante
      sequenceSpecification - Zeitspezifikation
      Returns:
      Collection mit Persistenzverzeichnissen, die zurückgegebene Liste ist immutable.
    • getSimulationPersistenceDirectory

      @Nullable ActivePersistenceDirectory getSimulationPersistenceDirectory(int simVariant)
      Gibt das Persistenzverzeichnis zurück, das von einer speziellen Simulation verwendet wird
      Parameters:
      simVariant - Simulationsvariante (> 0)
      Returns:
      zugehöriges Persistenzverzeichnis oder null (wenn keines existiert).
    • getRootPath

      @NotNull @Contract(pure=true) Path getRootPath()
      Gibt das Wurzelverzeichnis der Persistenz zurück, unter dem die weiteren Persistenzverzeichnisse (je Zeitbereich) angelegt werden.
      Returns:
      Wurzelverzeichnis, nicht null
    • initialize

      Initialisiert die Verzeichnisverwaltung und lädt z. B. die vorhandenen Verzeichnisse ein
      Throws:
      IOException - Dateisystem-Lesefehler
      InterruptedException - Unterbrochen
      PersistenceException - Persistenz fehler
      DirectoryIsLockedException - Persistenzverzeichnis ist bereits gelockt (isActive-Datei existiert)
    • shutDown

      void shutDown()
      Terminiert die Verzeichnisverwaltung, markiert die Verzeichnisse nicht mehr als benutzt und löscht alle Lock-Dateien.
    • createSimulationDirectory

      ActivePersistenceDirectory createSimulationDirectory(int simVariant)
      Erstellt für die angegebene Simulationsvariante das Persistenzverzeichnis. Sollte bereits ein Verzeichnis existieren, wird es zurückgegeben.
      Parameters:
      simVariant - Simulationsvariante (größer 0)
      Returns:
      Zugehöriges Persistenzverzeichnis
    • deleteSimulationDirectory

      void deleteSimulationDirectory(ActivePersistenceDirectory directory)
      Löscht ein Verzeichnis einer Simulation
      Parameters:
      directory - Persistenzverzeichnis der Simulation
    • getGapFilePath

      @NotNull @Contract(pure=true) Path getGapFilePath(IdDataIdentification dataIdentification)
      Gibt den Pfad und Dateinamen einer Lückendatei für das Nachfordern zurück. In dieser Datei werden die bereits erhaltenen Datenlücken vermerkt, also wo erfolglos nachgefordert wurde, damit diese nicht sinnloserweise neu angefragt werden.
      Parameters:
      dataIdentification - Datenidentifikation
      Returns:
      Ein Dateipfad