Class OfflineTaskGroup

java.lang.Object
offlineProcessing.OfflineTaskGroup
All Implemented Interfaces:
PamSettings, SettingsNameProvider
Direct Known Subclasses:
EventTaskGroup, TethysTaskGroup

public class OfflineTaskGroup extends Object implements PamSettings
Author:
Doug Gillespie Handles a series of offline tasks which all use a common data block so that data can be loaded, a whole series of tasks completed and the data then saved in a single operation.

This will be the primary interface to OfflineTasks - even if there is only one task it will be in a group of one !

  • Field Details Link icon

  • Constructor Details Link icon

    • OfflineTaskGroup Link icon

      public OfflineTaskGroup(PamControlledUnit pamControlledUnit, String settingsName)
      PamControlledunit required in constructor since some bookkeeping will be going on in the background which will need the unit type and name.
      Parameters:
      pamControlledUnit - host controlled unit.
      settingsName - Name to be used in PamSettings for storing some basic information (which tasks are selected)
  • Method Details Link icon

    • setSummaryLists Link icon

      public void setSummaryLists()
      Setup summary lists of required and affected datablocks based on which tasks are actually going to run .
    • runTasks Link icon

      public boolean runTasks()
      Run all the tasks.
      Parameters:
      offlineClassifierParams -
      Returns:
    • killTasks Link icon

      public void killTasks()
    • addTasks Link icon

      public int addTasks(List<OfflineTask> tasks)
      Add a list of offline tasks. Checks that tasks are not already included in the task list and doesn't add them if they already exist.
      Parameters:
      tasks - list of tasks.
      Returns:
      number added.
    • haveTask Link icon

      public boolean haveTask(OfflineTask task)
      See if a task already exists.
      Parameters:
      task - offline tasks.
      Returns:
      true if it exists
    • haveTaskClass Link icon

      public boolean haveTaskClass(OfflineTask task)
      See if we already have a task of the same class.
      Parameters:
      task - task to check
      Returns:
      true if a task of the same class already exists.
    • addTask Link icon

      public boolean addTask(OfflineTask task)
      Parameters:
      task - task to add to the group
    • getNTasks Link icon

      public int getNTasks()
      Returns:
      the number of tasks in the group
    • getTask Link icon

      public OfflineTask getTask(int iTask)
      Parameters:
      iTask - the task number
      Returns:
      the task.
    • getProcessTime Link icon

      public int getProcessTime()
      Returns:
      the processTime
    • getPrimaryDataBlock Link icon

      public PamDataBlock getPrimaryDataBlock()
      Returns:
      the primaryDataBlock
    • setPrimaryDataBlock Link icon

      public void setPrimaryDataBlock(PamDataBlock primaryDataBlock)
      Parameters:
      primaryDataBlock - the primaryDataBlock to set
    • getTaskMonitor Link icon

      public TaskMonitor getTaskMonitor()
      Returns:
      the taskMonitor
    • setTaskMonitor Link icon

      public void setTaskMonitor(TaskMonitor taskMonitor)
      Parameters:
      taskMonitor - the taskMonitor to set
    • runBackgroundTasks Link icon

      public void runBackgroundTasks(OfflineTaskGroup.TaskGroupWorker taskGroupWorker)
      Move all of the functions out of the TaskGroupWorker class so that they can be overridden / modified in specialist versions of OfflineTaskGroup
      Parameters:
      taskGroupWorker -
    • processAllData Link icon

      public void processAllData(OfflineTaskGroup.TaskGroupWorker taskGroupWorker, ArrayList<long[]> timeChunks)
      Process all data for a list of time chunks. This is robust to the list not being in chronological order.
      Parameters:
      taskGroupWorker -
      timeChunks - - the time chunks.
    • processAllData Link icon

      public void processAllData(OfflineTaskGroup.TaskGroupWorker taskGroupWorker, long startTime, long endTime)
      Process data between two times
      Parameters:
      taskGroupWorker -
      startTime - - the start time in millis
      endTime - - the end time in millis.
    • shouldProcess Link icon

      public boolean shouldProcess(OfflineDataMapPoint mapPoint)
      See if it's worth loading this map point. This will currently always return true unless there is a superDetectionFilter, in which case it will attempt to work out if there are any sub detections that might want processing.
      Parameters:
      mapPoint -
      Returns:
    • processLoadedData Link icon

      public void processLoadedData(OfflineTaskGroup.TaskGroupWorker taskGroupWorker)
    • prepareTasks Link icon

      public void prepareTasks()
      Called once at start of all processing.
    • processData Link icon

      public void processData(OfflineTaskGroup.TaskGroupWorker taskGroupWorker, int globalProgress, OfflineDataMapPoint mapPoint, long processStartTime, long processEndTime)
      Called to process data currently in memory. i.e. get's called once when processing loaded data, multiple times when processing all data.
      Parameters:
      globalProgress -
      mapPoint -
      processStartTime -
      processEndTime -
    • shouldProcess Link icon

      public boolean shouldProcess(PamDataUnit dataUnit)
    • isInTimeChunk Link icon

      public boolean isInTimeChunk(PamDataUnit dataUnit, ArrayList<long[]> timeChunks)
      Check whether a data unit is within a list of time chunks within params. Returns true if the PROCESS_TME_CHUNKS option is not the current data analysis choice.
      Parameters:
      dataUnit - - the data unit to check
      timeChunks - - a list of time chunks with each long[] a start and end time in millis
      Returns:
      true if the data unit is within any of the time chunks or data choice is not PROCESS_TME_CHUNKS.
    • commitDatabase Link icon

      public void commitDatabase()
    • loadSecondaryData Link icon

      public void loadSecondaryData(long procDataStart, long procDataEnd)
    • completeTasks Link icon

      public void completeTasks()
    • newMonitorData Link icon

      public void newMonitorData(TaskMonitorData monData)
    • logTaskStatus Link icon

      public void logTaskStatus(TaskMonitorData monitorData)
    • tasksDone Link icon

      public void tasksDone()
      some bookkeeping - write information about task completion to the database.
    • getSettingsReference Link icon

      public Serializable getSettingsReference()
      Specified by:
      getSettingsReference in interface PamSettings
      Returns:
      The serialisable object that will be stored
    • getSettingsVersion Link icon

      public long getSettingsVersion()
      Specified by:
      getSettingsVersion in interface PamSettings
      Returns:
      An integer version number for the settings
    • getUnitName Link icon

      public String getUnitName()
      Specified by:
      getUnitName in interface SettingsNameProvider
      Returns:
      A Name specific to this instance of the particular class, e.g. Sperm whale detector, Beaked whale detector, etc.
    • getUnitType Link icon

      public String getUnitType()
      Specified by:
      getUnitType in interface PamSettings
      Returns:
      A Name specific to the type, e.g. Click detector
    • restoreSettings Link icon

      public boolean restoreSettings(PamControlledUnitSettings pamControlledUnitSettings)
      Specified by:
      restoreSettings in interface PamSettings
      Parameters:
      pamControlledUnitSettings -
      Returns:
      true if successful The object performs final checks (if needed) and then casts the settings data pamcontrolledunitSettings.settings into the correct type and uses as required
    • getTaskGroupParams Link icon

      public TaskGroupParams getTaskGroupParams()
      Returns:
      the taskGroupParams
    • getDataTimeLimits Link icon

      public DataTimeLimits getDataTimeLimits()
      Returns:
      the dataTimeLimits
    • setDataTimeLimits Link icon

      public void setDataTimeLimits(DataTimeLimits dataTimeLimits)
      Parameters:
      dataTimeLimits - the dataTimeLimits to set
    • isTaskCancelled Link icon

      public boolean isTaskCancelled()
      Check whether the task has been cancelled. Sometime used if processing a data unit takes a long time and should be cancelled
      Returns:
      true if task has been cancelled.
    • setSuperDetectionFilter Link icon

      public void setSuperDetectionFilter(OfflineSuperDetFilter superDetectionFilter)
      Set a super detection filter (null if no super detection system available)
      Parameters:
      superDetectionFilter - Super detection filter.
    • getSuperDetectionFilter Link icon

      public OfflineSuperDetFilter getSuperDetectionFilter()
      Returns:
      the superDetectionFilter
    • clearTasks Link icon

      public void clearTasks()
      Clear all task from the task group. This also clears affected and required datablocks.
    • getCompletionStatus Link icon

      public TaskStatus getCompletionStatus()
      Returns:
      the completionStatus
    • setCompletionStatus Link icon

      public void setCompletionStatus(TaskStatus completionStatus)
      Parameters:
      completionStatus - the completionStatus to set