Class TimeBasedPersistenceDirectoryManager<T extends TimeRange<T>>
java.lang.Object
de.bsvrz.ars.ars.persistence.directories.mgmt.TimeBasedPersistenceDirectoryManager<T>
- Type Parameters:
T- Typ des gewünschten Zeitabschnitts, z. B.Week
- All Implemented Interfaces:
PersistenceDirectoryManager,DataGapManager
public class TimeBasedPersistenceDirectoryManager<T extends TimeRange<T>>
extends Object
implements PersistenceDirectoryManager
Implementierung des PersistenceDirectoryManager, die je Woche (oder anderer
TimeDomain) ein eigenes
PersistenceDirectory anlegt. Simulationen werden davon getrennt verwaltet.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceAktion fürexecuteOnSubDirectories(PathAction). -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringName des Ordners, der die Lückendateien für das Nachfordern enthält. -
Constructor Summary
ConstructorsConstructorDescriptionTimeBasedPersistenceDirectoryManager(ContainerCreator containerCreator, Path rootPath, TimeDomain<T> domain) Erstellt eine neue Instanz -
Method Summary
Modifier and TypeMethodDescriptionbooleanaddPersistenceDirectory(T directoryTimeRange) Integriert ein Verzeichnis in den aktiven ZugriffcreateSimulationDirectory(int simVariant) Erstellt für die angegebene Simulationsvariante das Persistenzverzeichnis.voidLöscht ein Verzeichnis einer SimulationvoidFührt einen rekursiven Verzeichnisdurchlauf aus und führt für jedes gefundene Wochenverzeichnis den angegebenen Befehl ausGibt das Persistenzverzeichnis zurück, in das aktuell archiviert wird.getGapFilePath(IdDataIdentification dataIdentification) Gibt den Pfad und Dateinamen einer Lückendatei für das Nachfordern zurück.Gibt die Woche zu einem Dateisystem-Pfad zurück, welcher ein Wochenverzeichnis darstelltList<? extends PersistenceDirectory>getPersistenceDirectories(int simVariant, SequenceSpecification sequenceSpecification) Ermittelt alle Persistenzverzeichnisse, die zur angegebenen Zeitspezifikation die zugehörigen Archivdaten enthält.getPersistenceDirectory(T directoryTimeRange) Gibt zu einer Woche das Persistenzverzeichnis zurückGibt das Wurzelverzeichnis der Persistenz zurück, unter dem die weiteren Persistenzverzeichnisse (je Zeitbereich) angelegt werden.getSimulationPersistenceDirectory(int simVariant) Gibt das Persistenzverzeichnis zurück, das von einer speziellen Simulation verwendet wirdvoidInitialisiert die Verzeichnisverwaltung und lädt z.booleanisRangeUnavailable(long fromArchiveTime, long toArchiveTime) Prüft, ob sich Teile des Persistenzverzeichnisses zwischen 2 Datensätzen nicht mehr im direkten Zugriff befinden, also ausgelagert oder gelöscht wurden.booleanremovePersistenceDirectory(T directoryTimeRange) Wirft ein Persistenzverzeichnis aus (entfernt es aus dem aktiven Zugriff)voidshutDown()Terminiert die Verzeichnisverwaltung, markiert die Verzeichnisse nicht mehr als benutzt und löscht alle Lock-Dateien.voidupdatePersistenceDirectories(long archTime) Aktualisiert das aktive Persistenzverzeichnis basierend auf der aktuellen Archivzeit
-
Field Details
-
GAP_FILE_FOLDER_NAME
Name des Ordners, der die Lückendateien für das Nachfordern enthält.- See Also:
-
-
Constructor Details
-
TimeBasedPersistenceDirectoryManager
public TimeBasedPersistenceDirectoryManager(ContainerCreator containerCreator, Path rootPath, TimeDomain<T> domain) Erstellt eine neue Instanz- Parameters:
containerCreator- Persistenz-VerwaltungrootPath- Wurzelverzeichnis, unter dem die Wochenverzeichnisse angelegt werden sollendomain- Domain, die Pfadnamen in Zeitbereiche umwandelt, z. B.WeekDomain.
-
-
Method Details
-
initialize
public void initialize() throws IOException, InterruptedException, PersistenceException, DirectoryIsLockedExceptionDescription copied from interface:PersistenceDirectoryManagerInitialisiert die Verzeichnisverwaltung und lädt z. B. die vorhandenen Verzeichnisse ein- Specified by:
initializein interfacePersistenceDirectoryManager- Throws:
IOException- Dateisystem-LesefehlerInterruptedException- UnterbrochenPersistenceException- Persistenz fehlerDirectoryIsLockedException- Persistenzverzeichnis ist bereits gelockt (isActive-Datei existiert)
-
updatePersistenceDirectories
Description copied from interface:PersistenceDirectoryManagerAktualisiert das aktive Persistenzverzeichnis basierend auf der aktuellen Archivzeit- Specified by:
updatePersistenceDirectoriesin interfacePersistenceDirectoryManager- Parameters:
archTime- aktuelle Archivzeit (Millis seit Epoch)- Throws:
IOException- IO-Fehler
-
executeOnSubDirectories
public void executeOnSubDirectories(TimeBasedPersistenceDirectoryManager.PathAction pathAction) throws PersistenceException, IOException, DirectoryIsLockedException Führt einen rekursiven Verzeichnisdurchlauf aus und führt für jedes gefundene Wochenverzeichnis den angegebenen Befehl aus- Parameters:
pathAction- Auszuführende Aktion- Throws:
PersistenceException- Fehler bei AktionIOException- Fehler beim VerzeichnisdurchlaufDirectoryIsLockedException
-
getDomain
-
getId
Gibt die Woche zu einem Dateisystem-Pfad zurück, welcher ein Wochenverzeichnis darstellt- Parameters:
it- Dateisystem-Pfad- Returns:
- Woche oder null, falls die Woche nicht bestimmbar ist.
-
getActivePersistenceDirectory
Description copied from interface:PersistenceDirectoryManagerGibt 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.- Specified by:
getActivePersistenceDirectoryin interfacePersistenceDirectoryManager- Returns:
- Aktives Persistenzverzeichnis
-
getPersistenceDirectories
public List<? extends PersistenceDirectory> getPersistenceDirectories(int simVariant, SequenceSpecification sequenceSpecification) Description copied from interface:PersistenceDirectoryManagerErmittelt 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!
- Specified by:
getPersistenceDirectoriesin interfacePersistenceDirectoryManager- Parameters:
simVariant- SimulationsvariantesequenceSpecification- Zeitspezifikation- Returns:
- Collection mit Persistenzverzeichnissen, die zurückgegebene Liste ist immutable.
-
getSimulationPersistenceDirectory
Description copied from interface:PersistenceDirectoryManagerGibt das Persistenzverzeichnis zurück, das von einer speziellen Simulation verwendet wird- Specified by:
getSimulationPersistenceDirectoryin interfacePersistenceDirectoryManager- Parameters:
simVariant- Simulationsvariante (> 0)- Returns:
- zugehöriges Persistenzverzeichnis oder null (wenn keines existiert).
-
createSimulationDirectory
Description copied from interface:PersistenceDirectoryManagerErstellt für die angegebene Simulationsvariante das Persistenzverzeichnis. Sollte bereits ein Verzeichnis existieren, wird es zurückgegeben.- Specified by:
createSimulationDirectoryin interfacePersistenceDirectoryManager- Parameters:
simVariant- Simulationsvariante (größer 0)- Returns:
- Zugehöriges Persistenzverzeichnis
-
getRootPath
Description copied from interface:PersistenceDirectoryManagerGibt das Wurzelverzeichnis der Persistenz zurück, unter dem die weiteren Persistenzverzeichnisse (je Zeitbereich) angelegt werden.- Specified by:
getRootPathin interfacePersistenceDirectoryManager- Returns:
- Wurzelverzeichnis, nicht null
-
shutDown
public void shutDown()Description copied from interface:PersistenceDirectoryManagerTerminiert die Verzeichnisverwaltung, markiert die Verzeichnisse nicht mehr als benutzt und löscht alle Lock-Dateien.- Specified by:
shutDownin interfacePersistenceDirectoryManager
-
deleteSimulationDirectory
Description copied from interface:PersistenceDirectoryManagerLöscht ein Verzeichnis einer Simulation- Specified by:
deleteSimulationDirectoryin interfacePersistenceDirectoryManager- Parameters:
directory- Persistenzverzeichnis der Simulation
-
getGapFilePath
Description copied from interface:PersistenceDirectoryManagerGibt 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.- Specified by:
getGapFilePathin interfacePersistenceDirectoryManager- Parameters:
dataIdentification- Datenidentifikation- Returns:
- Ein Dateipfad
-
getPersistenceDirectory
Gibt zu einer Woche das Persistenzverzeichnis zurück- Parameters:
directoryTimeRange- Woche- Returns:
- Persistenzverzeichnis
-
removePersistenceDirectory
Wirft ein Persistenzverzeichnis aus (entfernt es aus dem aktiven Zugriff)- Parameters:
directoryTimeRange- Woche, die ausgeworfen werden soll- Returns:
- true: erfolgreich, false: Verzeichnis war nicht vorhanden oder Operation wurde unterbrochen
-
addPersistenceDirectory
Integriert ein Verzeichnis in den aktiven Zugriff- Parameters:
directoryTimeRange- Woche- Returns:
- true: Verzeichnis wurde integriert, false: Verzeichnis konnte nicht integriert werden oder war bereits im Zugriff
-