Class FileConnector<CO,CI>

java.lang.Object
de.iip_ecosphere.platform.connectors.AbstractConnector<byte[],byte[],CO,CI>
de.iip_ecosphere.platform.connectors.AbstractChannelConnector<byte[],byte[],CO,CI>
de.oktoflow.platform.connectors.file.FileConnector<CO,CI>
Type Parameters:
CO - the output type to the IIP-Ecosphere platform
CI - the input type from the IIP-Ecosphere platform
All Implemented Interfaces:
de.iip_ecosphere.platform.connectors.Connector<byte[],byte[],CO,CI>, de.iip_ecosphere.platform.connectors.events.EventHandlingConnector, de.iip_ecosphere.platform.connectors.model.AbstractModelAccess.NotificationChangedListener

@MachineConnector(hasModel=false, supportsEvents=true, supportsHierarchicalQNames=false, supportsModelCalls=false, supportsModelProperties=false, supportsModelStructs=false, specificSettings={}, supportsDataTimeDifference=true) @MachineConnectorSupportedQueries(de.iip_ecosphere.platform.connectors.events.ConnectorTriggerQuery.class) public class FileConnector<CO,CI> extends de.iip_ecosphere.platform.connectors.AbstractChannelConnector<byte[],byte[],CO,CI>
Implements the generic file connector. Intended to use with appropriate data serializers or wrapped InputParser/OutputFormatter considered by code generation, e.g., to realize a JSON or CSV data connector. Do not rename, this class is referenced in META-INF/services.
Author:
Holger Eichelberger, SSE
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    The descriptor of this connector (see META-INF/services).

    Nested classes/interfaces inherited from class de.iip_ecosphere.platform.connectors.AbstractConnector

    de.iip_ecosphere.platform.connectors.AbstractConnector.BasicAdapterProvider
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private boolean
     
    private int
     
    private static final de.iip_ecosphere.platform.support.logging.Logger
     
    static final String
     
    private int
     
     
    static final String
     
    static final String
     
    private boolean
     
    private boolean
     
    private int
     
    private String
     
    private List<File>
     
    private int
     
    static final String
     
    static final String
     
    static final String
     
    static final String
     
    private boolean
     
    private File
     

    Fields inherited from class de.iip_ecosphere.platform.connectors.AbstractConnector

    DEFAULT_CHANNEL
  • Constructor Summary

    Constructors
    Constructor
    Description
    FileConnector(de.iip_ecosphere.platform.connectors.ChannelAdapterSelector<byte[],byte[],CO,CI> selector, de.iip_ecosphere.platform.connectors.types.ChannelProtocolAdapter<byte[],byte[],CO,CI>... adapter)
    Creates a connector instance.
    FileConnector(de.iip_ecosphere.platform.connectors.types.ChannelProtocolAdapter<byte[],byte[],CO,CI>... adapter)
    Creates a connector instance.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    connectImpl(de.iip_ecosphere.platform.connectors.ConnectorParameter params)
     
    protected void
     
    void
     
     
    protected void
    error(String message, Throwable th)
     
     
    getWriteFileNameFilter(boolean considerThread)
    Returns a file name filter for files being written if SETTING_WRITE_FILES is a directory.
    protected void
    notifyDataTimeDifference(int difference)
     
    open(File file)
    Tries to open file or, as fallback, as a resource.
    protected byte[]
     
    private void
    Reads the data from all files line-by-line.
     
    void
    trigger(de.iip_ecosphere.platform.connectors.events.ConnectorTriggerQuery query)
     
    protected void
    writeImpl(byte[] data, String channel)
     

    Methods inherited from class de.iip_ecosphere.platform.connectors.AbstractChannelConnector

    getOutputChannels, getSelector, initSelector, request, write, writeImpl

    Methods inherited from class de.iip_ecosphere.platform.connectors.AbstractConnector

    checkCache, configureAdapter, configureModelAccess, connect, createTlsContext, disconnect, doPolling, enableNotifications, enablePolling, getCachingStrategy, getCachingStrategyCls, getConnectorInputType, getConnectorOutputType, getConnectorParameter, getInitCachingStrategyCls, getInstanceIdentification, getProtocolInputType, getProtocolOutputType, getStorageValue, initializeModelAccess, installPollTask, isPolling, notificationsChanged, notifyReconfigured, received, received, request, setDataTimeDifference, setDataTimeDifferenceProvider, setInstanceIdentification, setReceptionCallback, setStorageValue, trigger, uninstallPollTask, useTls

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface de.iip_ecosphere.platform.connectors.Connector

    createSharedSpace, disconnectSafe, enableSharedSpace, setReceptionCallbackSafe
  • Field Details

    • NAME

      public static final String NAME
      See Also:
    • SETTING_READ_FILES

      public static final String SETTING_READ_FILES
      See Also:
    • SETTING_WRITE_FILES

      public static final String SETTING_WRITE_FILES
      See Also:
    • SETTING_DATA_TIMEDIFF

      public static final String SETTING_DATA_TIMEDIFF
      See Also:
    • SETTING_SKIP_FIRST_LINE

      public static final String SETTING_SKIP_FIRST_LINE
      See Also:
    • OUT_NAME_PREFIX

      public static final String OUT_NAME_PREFIX
      See Also:
    • OUT_NAME_SUFFIX

      public static final String OUT_NAME_SUFFIX
      See Also:
    • LOGGER

      private static final de.iip_ecosphere.platform.support.logging.Logger LOGGER
    • readFiles

      private List<File> readFiles
    • writeFiles

      private File writeFiles
    • connected

      private boolean connected
    • out

      private Map<String,PrintStream> out
    • outFailed

      private boolean outFailed
    • pollResult

      private String pollResult
    • polling

      private boolean polling
    • requestTimeout

      private int requestTimeout
    • pollingFrequency

      private int pollingFrequency
    • fixedDataInterval

      private int fixedDataInterval
    • nextDataInterval

      private int nextDataInterval
    • skipFirstLine

      private boolean skipFirstLine
  • Constructor Details

    • FileConnector

      @SafeVarargs public FileConnector(de.iip_ecosphere.platform.connectors.types.ChannelProtocolAdapter<byte[],byte[],CO,CI>... adapter)
      Creates a connector instance.
      Parameters:
      adapter - the protocol adapter(s)
      Throws:
      IllegalArgumentException - if adapter is null or empty or adapters are null
    • FileConnector

      @SafeVarargs public FileConnector(de.iip_ecosphere.platform.connectors.ChannelAdapterSelector<byte[],byte[],CO,CI> selector, de.iip_ecosphere.platform.connectors.types.ChannelProtocolAdapter<byte[],byte[],CO,CI>... adapter)
      Creates a connector instance.
      Parameters:
      selector - the adapter selector (null leads to a default selector for the first adapter)
      adapter - the protocol adapter(s)
      Throws:
      IllegalArgumentException - if adapter is null or empty or adapters are null
  • Method Details

    • connectImpl

      protected void connectImpl(de.iip_ecosphere.platform.connectors.ConnectorParameter params) throws IOException
      Specified by:
      connectImpl in class de.iip_ecosphere.platform.connectors.AbstractConnector<byte[],byte[],CO,CI>
      Throws:
      IOException
    • open

      private BufferedReader open(File file) throws IOException
      Tries to open file or, as fallback, as a resource.
      Parameters:
      file - the file to open
      Returns:
      the opened stream
      Throws:
      IOException - if opening file finally fails
    • readData

      private void readData()
      Reads the data from all files line-by-line.
    • notifyDataTimeDifference

      protected void notifyDataTimeDifference(int difference)
      Overrides:
      notifyDataTimeDifference in class de.iip_ecosphere.platform.connectors.AbstractConnector<byte[],byte[],CO,CI>
    • disconnectImpl

      protected void disconnectImpl() throws IOException
      Specified by:
      disconnectImpl in class de.iip_ecosphere.platform.connectors.AbstractConnector<byte[],byte[],CO,CI>
      Throws:
      IOException
    • dispose

      public void dispose()
      Specified by:
      dispose in interface de.iip_ecosphere.platform.connectors.Connector<byte[],byte[],CO,CI>
      Overrides:
      dispose in class de.iip_ecosphere.platform.connectors.AbstractConnector<byte[],byte[],CO,CI>
    • getName

      public String getName()
    • writeImpl

      protected void writeImpl(byte[] data, String channel) throws IOException
      Specified by:
      writeImpl in class de.iip_ecosphere.platform.connectors.AbstractChannelConnector<byte[],byte[],CO,CI>
      Throws:
      IOException
    • read

      protected byte[] read() throws IOException
      Specified by:
      read in class de.iip_ecosphere.platform.connectors.AbstractConnector<byte[],byte[],CO,CI>
      Throws:
      IOException
    • error

      protected void error(String message, Throwable th)
      Specified by:
      error in class de.iip_ecosphere.platform.connectors.AbstractConnector<byte[],byte[],CO,CI>
    • supportedEncryption

      public String supportedEncryption()
    • enabledEncryption

      public String enabledEncryption()
    • getWriteFileNameFilter

      public static FilenameFilter getWriteFileNameFilter(boolean considerThread)
      Returns a file name filter for files being written if SETTING_WRITE_FILES is a directory.
      Returns:
      the file name filter instance
    • trigger

      public void trigger(de.iip_ecosphere.platform.connectors.events.ConnectorTriggerQuery query)
      Specified by:
      trigger in interface de.iip_ecosphere.platform.connectors.events.EventHandlingConnector
      Overrides:
      trigger in class de.iip_ecosphere.platform.connectors.AbstractConnector<byte[],byte[],CO,CI>