Class Task

java.lang.Object
de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
de.bsvrz.ars.ars.mgmt.tasks.Task
Direct Known Subclasses:
RepeatingTask, RestorePersDirTsk

public abstract class Task
extends AbstractTask
Abstrakte Basisklasse für die abstrakten Task-Basisklassen SingleTask und MultiTask.

Ein Task ist ein Thread, eine bestimmte Aktion ausführt. Mit AbstractTask.terminateTask() kann diese Aufgabe abgebrochen werden. Während der Ausführung kann der Task mit AbstractTask.shouldTerminate() prüfen, ob er terminiert wurde und dann die Aufgabe ggf. neu starten.

  • Field Summary

    Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask

    _debug, _shouldTerminate, archMgr, didTree, persMgr
  • Constructor Summary

    Constructors
    Constructor Description
    Task​(ArchiveManager archiveMgr)
    Erstellt einen neuen Task
  • Method Summary

    Modifier and Type Method Description
    void addTaskStepListener​(TaskStepListener tsl)
    Zu Testzwecken kann hiermit ein Listener eingefuegt werden, der am Ende eines jedem Schleifendurchlaufs aufgerufen wird.
    protected void cleanUp()
    Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde.
    protected void execute()
    Diese Methode muss implementiert werden und definiert die Aktion, die dieser Task ausführt.
    java.lang.String getName()
    Gibt den Namen zurück
    java.lang.Thread.State getState()
    Gibt den Zustand den Threads zurück
    boolean isAlive()
    Gibt true zurück, wenn der Task aktuell läuft
    boolean isTerminated()
    Gibt true zurück, wenn der Task schon gelaufen ist und komplett terminiert wurde
    void join()
    Wartet auf das Beenden des Tasks nach der Terminierung.
    void removeTaskStepListener​(TaskStepListener tsl)
    Entfernt den Listener.
    void setName​(java.lang.String name)
    Setzt den Namen, der auch den Namen des Threads definiert und in Debug-Ausgaben benutzt wird.
    void start()
    Startet den Thread, der den Task ausführt
    protected void taskStepDone()
    Benachrichtigt darüber, dass ein Schleifendurchlauf abgearbeitet wurde.

    Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask

    getArchMgr, getObjectsFromDav, shouldTerminate, suspendTaskIfNecessary, terminateTask

    Methods inherited from class java.lang.Object

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

    • Task

      public Task​(ArchiveManager archiveMgr)
      Erstellt einen neuen Task
      Parameters:
      archiveMgr - Archiv-Manager (Kann für Testfälle und ähnliches null sein, allerdings kann es dann passieren, das bestimmte Funktionen nicht funktionieren.)
  • Method Details

    • getState

      public final java.lang.Thread.State getState()
      Gibt den Zustand den Threads zurück
      Returns:
      Zustand
    • start

      public void start()
      Startet den Thread, der den Task ausführt
      Specified by:
      start in class AbstractTask
      See Also:
      Thread.start()
    • execute

      protected void execute()
      Diese Methode muss implementiert werden und definiert die Aktion, die dieser Task ausführt.

      Der Implementierende sollte am ende super.execute() ausführen.

    • cleanUp

      protected void cleanUp()
      Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde. Dieser Code wird im selben Thread ausgeführt, wie der eigentliche Task

      Tut standardmäßig nichts, kann überschrieben werden um Daten aufzuräumen, Abmeldungen durchzuführen usw.

    • addTaskStepListener

      public void addTaskStepListener​(TaskStepListener tsl)
      Zu Testzwecken kann hiermit ein Listener eingefuegt werden, der am Ende eines jedem Schleifendurchlaufs aufgerufen wird. Auf diese Weise sind z.B. die Tasks einfacher zu testen. Wenn ein Task abgebrochen wird, kann nicht garantiert werden, dass für die letzte Schleife der TaskStepListener aufgerufen wird.
      Parameters:
      tsl - Callback-Interface
    • removeTaskStepListener

      public void removeTaskStepListener​(TaskStepListener tsl)
      Entfernt den Listener.
      Parameters:
      tsl - Callback-Interface
    • taskStepDone

      protected void taskStepDone()
      Benachrichtigt darüber, dass ein Schleifendurchlauf abgearbeitet wurde.
    • getName

      public final java.lang.String getName()
      Gibt den Namen zurück
      Specified by:
      getName in class AbstractTask
      Returns:
      den Namen
    • setName

      public final void setName​(java.lang.String name)
      Setzt den Namen, der auch den Namen des Threads definiert und in Debug-Ausgaben benutzt wird.
      Specified by:
      setName in class AbstractTask
      Parameters:
      name - neuer Name (nicht null)
    • join

      public void join() throws java.lang.InterruptedException
      Wartet auf das Beenden des Tasks nach der Terminierung. Beispielcode:
      
       task.terminateTask(); // Task soll bei der nächsten Möglichkeit terminieren (asynchroner Aufruf)
       task.join(); // Auf das terminieren synchron warten
       
      Specified by:
      join in class AbstractTask
      Throws:
      java.lang.InterruptedException - bei Unterbrechung
      See Also:
      Thread.join()
    • isAlive

      public boolean isAlive()
      Gibt true zurück, wenn der Task aktuell läuft
      Specified by:
      isAlive in class AbstractTask
      Returns:
      true, wenn der Task aktuell läuft, sonst false
    • isTerminated

      public boolean isTerminated()
      Gibt true zurück, wenn der Task schon gelaufen ist und komplett terminiert wurde
      Specified by:
      isTerminated in class AbstractTask
      Returns:
      true, wenn der Task schon gelaufen ist und komplett terminiert wurde, sonst false