Class FileEventSource

java.lang.Object
de.aristaflow.adept2.core.eventmanager.common.AbstractEventSource<FileEvent>
de.aristaflow.adept2.core.eventmanager.fileevents.FileEventSource
All Implemented Interfaces:
EventSource<FileEvent>, PollingFileSource, PollingSource<FileEvent>, Runnable
Direct Known Subclasses:
FileEventActivitySource

public class FileEventSource extends AbstractEventSource<FileEvent> implements PollingFileSource
A source for events based on files in a specific folder (configured). This folder is checked regularly and any file (or directory) found is notified as file event to the corresponding registered event handlers.
  • Field Details

    • pollTime

      protected Long pollTime
      The time in milliseconds this event source polls its data source.
    • startPoint

      protected Long startPoint
      The start point (in milliseconds) this event should start polling.
    • searchPath

      protected URL searchPath
      The path to the directory which causes an event when a new file is inserted.
    • filterName

      protected String filterName
      Regex for filtering on the file name or null if not set.
    • namePattern

      protected Pattern namePattern
      Pattern for filtering on the file name or null if not set.
    • skipDirectories

      protected boolean skipDirectories
      Whether directories should be skipped.
    • skipFiles

      protected boolean skipFiles
      Whether files should be skipped.
    • skipLocked

      protected boolean skipLocked
      Whether locked files should be skipped.
    • filterOptions

      protected String filterOptions
      The filter options represented as string.
    • lockSuffix

      protected String lockSuffix
      The suffix that is used by the handler to lock files. Keep in sync with the corresponding event handler marking files by creating lock files so that the locked files will be skipped.
    • lockFileEvent

      protected boolean lockFileEvent
      Whether the lock file should also be part of the event.
    • isLockFile

      protected boolean isLockFile
      Whether the event occurs on the lock file or not.
    • eventManagerURIs

      protected final URI[] eventManagerURIs
      The event manager URIs to provide to the created events.
  • Constructor Details

  • Method Details

    • setConfiguration

      protected void setConfiguration(Configuration conf, boolean completed) throws ConfigurationException
      Sets the internal fields according to the values of the designated configuration. Note that this method is called from the constructor and therefore this object may not be fully initialised!
      Parameters:
      conf - The configuration from which to get the configuration values.
      completed - Whether the configuration is complete after this setting and therefore the values should be verified.
      Throws:
      ConfigurationException - If there are problems with the configuration, for instance the configuration does not provide required values, a ConfigurationException may be thrown.
    • verifyConfigurationValues

      protected void verifyConfigurationValues() throws ConfigurationException
      This method verifies the configuration values that have been set yet. If a configuration value is missing or inappropriate, a ConfigurationException will be thrown.
      Throws:
      ConfigurationException - If there are problems with the configuration, for instance the configuration does not provide required values, a ConfigurationException may be thrown.
    • setConfiguration

      public void setConfiguration(Configuration conf, String id) throws ConfigurationException
      Description copied from interface: EventSource
      Sets the (additional) configuration of this event source and its ID. The configuration is additional with respect to the configuration provided by the plugin load mechanism, if the event source is loaded as plugin.
      It is ensured that this method will be called before Runnable.run().
      Specified by:
      setConfiguration in interface EventSource<FileEvent>
      Overrides:
      setConfiguration in class AbstractEventSource<FileEvent>
      Parameters:
      conf - The configuration of this event source. This adheres (and overwrites) the configuration provided by the plugin loading, if this event source has been loaded as plugin. Whether this is allowed to be null depends on the implementation of the event source.
      id - The ID of this event source. This must not be null nor the empty string.
      Throws:
      ConfigurationException - If there are problems with the designated configuration (configuration is null although this is not allowed, a required configuration value is missing, ...), a ConfigurationException will be thrown.
    • getPollTime

      public long getPollTime()
      Description copied from interface: PollingSource
      Gets the time in milliseconds this event source polls, more precisely, the time span between two polls. If this is 0 or negative, no polling will apply. However, PollingSource.init() and PollingSource.terminate() will be called.
      Specified by:
      getPollTime in interface PollingSource<FileEvent>
      Returns:
      The time in milliseconds this event source polls (> 0).
    • getStartTime

      public long getStartTime()
      Description copied from interface: PollingSource
      Gets the absolute time in milliseconds since midnight, January 1, 1970 UTC when this polling source should start polling. This is used for calculating the first poll time by adding the time span defined in PollingSource.getPollTime().
      Specified by:
      getStartTime in interface PollingSource<FileEvent>
      Returns:
      The absolute time in milliseconds since midnight, January 1, 1970 UTC when this polling source should start polling.
    • checkForAndHandleEvent

      public void checkForAndHandleEvent()
      Description copied from class: AbstractEventSource
      Checks for an event and handles it (usually by using AbstractEventSource.forwardEvent(Event, boolean, boolean)).
      Specified by:
      checkForAndHandleEvent in class AbstractEventSource<FileEvent>
    • terminate

      public void terminate()
      Description copied from interface: PollingSource
      Terminates this polling source. This is called once after polling has terminated and this source is removed.
      Note that this may be called any time, even when creating or handling an event. So take care to synchronise the implementation appropriately!
      Specified by:
      terminate in interface PollingSource<FileEvent>
    • createFileEvent

      protected FileEvent createFileEvent(Path path) throws IOException
      Creates a FileEvent for the designated path.
      Parameters:
      path - The path for which to create a FileEvent.
      Returns:
      The FileEvent created for the designated path.
      Throws:
      IOException - If retrieving the basic file attributes of the designated path fails, an IOException will be thrown.
    • createLockFileEvent

      protected LockFileEvent createLockFileEvent(Path path, Path lockPath) throws IOException
      Creates a FileEvent for the designated file and its lock file.
      Parameters:
      path - The path for which to create a LockFileEvent.
      lockPath - The path for the corresponding lock file.
      Returns:
      The FileEvent created for the designated path and lock file.
      Throws:
      IOException - If retrieving the basic file attributes of the designated path fails, an IOException will be thrown.
    • nextHandler

      protected boolean nextHandler(FileEvent event, boolean consumed, boolean concurrent)
      Description copied from class: AbstractEventSource
      This method is called right before an event is offered to the next handler. In case of concurrent handling, this method will only be called once for all concurrent handling but this will be indicated by the corresponding parameter.
      Specified by:
      nextHandler in class AbstractEventSource<FileEvent>
      Parameters:
      event - The event which is about to be handled by the next registered handler.
      consumed - Whether the event has been consumed yet.
      concurrent - Whether the next event handling is concurrent and thus the event will be offered to several event handler concurrently.
      Returns:
      Whether the event handling may continue. In case of serious problems preventing further event handling, return false here.