Klasse SingletonPersistenceDirectoryManager

java.lang.Object
de.bsvrz.ars.ars.persistence.directories.mgmt.SingletonPersistenceDirectoryManager
Alle implementierten Schnittstellen:
PersistenceDirectoryManager, DataGapManager

public class SingletonPersistenceDirectoryManager extends Object implements PersistenceDirectoryManager
Implementierung von PersistenceDirectoryManager, die ein einzelnes Persistenz-(unter-)verzeichnis verwaltet. Nur Simulationen werden in extra-Verzeichnisse ausgelagert, was nicht dem Verhalten des Alten Archivsystems vor Version 5 entspricht. Dort waren Simulationen zusammen mit den normalen Daten im selben Verzeichnis.
  • Konstruktordetails

    • SingletonPersistenceDirectoryManager

      public SingletonPersistenceDirectoryManager(ContainerCreator containerCreator, Path rootPath)
      Erstellt einen neuen SingletonPersistenceDirectoryManager.
      Parameter:
      containerCreator - Interface der persistenzschicht, z. B. ein PersistenceManager.
      rootPath - Wurzelverzeichnis
  • Methodendetails

    • updatePersistenceDirectories

      public void updatePersistenceDirectories(long archTime)
      Beschreibung aus Schnittstelle kopiert: PersistenceDirectoryManager
      Aktualisiert das aktive Persistenzverzeichnis basierend auf der aktuellen Archivzeit
      Angegeben von:
      updatePersistenceDirectories in Schnittstelle PersistenceDirectoryManager
      Parameter:
      archTime - aktuelle Archivzeit (Millis seit Epoch)
    • getActivePersistenceDirectory

      @Nullable public ActivePersistenceDirectory getActivePersistenceDirectory()
      Beschreibung aus Schnittstelle kopiert: PersistenceDirectoryManager
      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.
      Angegeben von:
      getActivePersistenceDirectory in Schnittstelle PersistenceDirectoryManager
      Gibt zurück:
      Aktives Persistenzverzeichnis
    • getPersistenceDirectories

      public List<? extends PersistenceDirectory> getPersistenceDirectories(int simVariant, SequenceSpecification sequenceSpecification)
      Beschreibung aus Schnittstelle kopiert: PersistenceDirectoryManager
      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!

      Angegeben von:
      getPersistenceDirectories in Schnittstelle PersistenceDirectoryManager
      Parameter:
      simVariant - Simulationsvariante
      sequenceSpecification - Zeitspezifikation
      Gibt zurück:
      Collection mit Persistenzverzeichnissen, die zurückgegebene Liste ist immutable.
    • getRootPath

      @NotNull public Path getRootPath()
      Beschreibung aus Schnittstelle kopiert: PersistenceDirectoryManager
      Gibt das Wurzelverzeichnis der Persistenz zurück, unter dem die weiteren Persistenzverzeichnisse (je Zeitbereich) angelegt werden.
      Angegeben von:
      getRootPath in Schnittstelle PersistenceDirectoryManager
      Gibt zurück:
      Wurzelverzeichnis, nicht null
    • initialize

      public void initialize() throws IOException, DirectoryIsLockedException
      Beschreibung aus Schnittstelle kopiert: PersistenceDirectoryManager
      Initialisiert die Verzeichnisverwaltung und lädt z. B. die vorhandenen Verzeichnisse ein
      Angegeben von:
      initialize in Schnittstelle PersistenceDirectoryManager
      Löst aus:
      IOException - Dateisystem-Lesefehler
      DirectoryIsLockedException - Persistenzverzeichnis ist bereits gelockt (isActive-Datei existiert)
    • getSimulationPersistenceDirectory

      @Nullable public ActivePersistenceDirectory getSimulationPersistenceDirectory(int simVariant)
      Beschreibung aus Schnittstelle kopiert: PersistenceDirectoryManager
      Gibt das Persistenzverzeichnis zurück, das von einer speziellen Simulation verwendet wird
      Angegeben von:
      getSimulationPersistenceDirectory in Schnittstelle PersistenceDirectoryManager
      Parameter:
      simVariant - Simulationsvariante (> 0)
      Gibt zurück:
      zugehöriges Persistenzverzeichnis oder null (wenn keines existiert).
    • createSimulationDirectory

      public ActivePersistenceDirectory createSimulationDirectory(int simVariant)
      Beschreibung aus Schnittstelle kopiert: PersistenceDirectoryManager
      Erstellt für die angegebene Simulationsvariante das Persistenzverzeichnis. Sollte bereits ein Verzeichnis existieren, wird es zurückgegeben.
      Angegeben von:
      createSimulationDirectory in Schnittstelle PersistenceDirectoryManager
      Parameter:
      simVariant - Simulationsvariante (größer 0)
      Gibt zurück:
      Zugehöriges Persistenzverzeichnis
    • shutDown

      public void shutDown()
      Beschreibung aus Schnittstelle kopiert: PersistenceDirectoryManager
      Terminiert die Verzeichnisverwaltung, markiert die Verzeichnisse nicht mehr als benutzt und löscht alle Lock-Dateien.
      Angegeben von:
      shutDown in Schnittstelle PersistenceDirectoryManager
    • deleteSimulationDirectory

      public void deleteSimulationDirectory(ActivePersistenceDirectory directory)
      Beschreibung aus Schnittstelle kopiert: PersistenceDirectoryManager
      Löscht ein Verzeichnis einer Simulation
      Angegeben von:
      deleteSimulationDirectory in Schnittstelle PersistenceDirectoryManager
      Parameter:
      directory - Persistenzverzeichnis der Simulation
    • getGapFilePath

      @NotNull public Path getGapFilePath(IdDataIdentification dataIdentification)
      Beschreibung aus Schnittstelle kopiert: PersistenceDirectoryManager
      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.
      Angegeben von:
      getGapFilePath in Schnittstelle PersistenceDirectoryManager
      Parameter:
      dataIdentification - Datenidentifikation
      Gibt zurück:
      Ein Dateipfad
    • isRangeUnavailable

      public boolean isRangeUnavailable(long fromArchiveTime, long toArchiveTime)
      Beschreibung aus Schnittstelle kopiert: DataGapManager
      Prüft, ob sich Teile des Persistenzverzeichnisses zwischen 2 Datensätzen nicht mehr im direkten Zugriff befinden, also ausgelagert oder gelöscht wurden. Es wird davon ausgegangen, dass die Zeitstempel selbst zu Daten gehören, die gelesen wurden und also noch im Zugriff sind.
      Angegeben von:
      isRangeUnavailable in Schnittstelle DataGapManager
      Parameter:
      fromArchiveTime - Start-Archivzeit in Epoch-Millis
      toArchiveTime - End-Archivzeit in Epoch-Millis
      Gibt zurück:
      true, falls der Bereich nicht vollständig verfügbar ist