Class OutputValueSwitch

    • Constructor Detail

      • OutputValueSwitch

        public OutputValueSwitch()
        Creates a switch that will analyze the first column of output rows to determine which RowWriterProcessor to use for each output row
      • OutputValueSwitch

        public OutputValueSwitch​(int columnIndex)
        Creates a switch that will analyze a column of output rows to determine which RowWriterProcessor to use.
        Parameters:
        columnIndex - the column index whose value will be used to determine which RowWriterProcessor to use for each output row.
      • OutputValueSwitch

        public OutputValueSwitch​(java.lang.String headerName)
        Creates a switch that will analyze a column of output rows to determine which RowWriterProcessor to use. When no column index is defined, the switch will use the first column of any input rows sent for writing.
        Parameters:
        headerName - the column name whose value will be used to determine which RowWriterProcessor to use for each output row.
      • OutputValueSwitch

        public OutputValueSwitch​(java.lang.String headerName,
                                 int columnIndex)
        Creates a switch that will analyze a column of output rows to determine which RowWriterProcessor to use.
        Parameters:
        headerName - the column name whose value will be used to determine which RowWriterProcessor to use for each output row.
        columnIndex - the position of an input column to use to perform the switch when no headers are available.
    • Method Detail

      • getValidatedIndex

        private int getValidatedIndex​(int columnIndex)
      • getValidatedHeaderName

        private java.lang.String getValidatedHeaderName​(java.lang.String headerName)
      • setComparator

        public void setComparator​(java.util.Comparator<?> comparator)
        Configures the switch to use a custom Comparator to compare values in the column to analyze which is given in the constructor of this class.
        Parameters:
        comparator - the comparator to use for matching values in the output column with the values provided in addSwitchForValue(Object, RowWriterProcessor)
      • setDefaultSwitch

        public void setDefaultSwitch​(RowWriterProcessor<java.lang.Object[]> rowProcessor,
                                     java.lang.String... headersToUse)
        Defines a default RowWriterProcessor implementation to use when no matching value is found in the output row.
        Parameters:
        rowProcessor - the default row writer processor implementation
        headersToUse - the (optional) sequence of headers to assign to the given row writer processor
      • setDefaultSwitch

        public void setDefaultSwitch​(RowWriterProcessor<java.lang.Object[]> rowProcessor,
                                     int... indexesToUse)
        Defines a default RowWriterProcessor implementation to use when no matching value is found in the output row.
        Parameters:
        rowProcessor - the default row writer processor implementation
        indexesToUse - the (optional) sequence of column indexes to assign to the given row writer processor
      • addSwitchForValue

        public void addSwitchForValue​(java.lang.Object value,
                                      RowWriterProcessor<java.lang.Object[]> rowProcessor,
                                      java.lang.String... headersToUse)
        Associates a RowWriterProcessor implementation with an expected value to be matched in the column provided in the constructor of this class.
        Parameters:
        value - the value to match against the column of incoming output rows and trigger the usage of the given row writer processor implementation.
        rowProcessor - the row writer processor implementation to use when the given value matches with the contents of the column provided in the constructor of this class.
        headersToUse - the (optional) sequence of headers to assign to the given row writer processor
      • addSwitchForValue

        public void addSwitchForValue​(java.lang.Object value,
                                      RowWriterProcessor<java.lang.Object[]> rowProcessor)
        Associates a RowWriterProcessor implementation with an expected value to be matched in the column provided in the constructor of this class.
        Parameters:
        value - the value to match against the column of incoming output rows and trigger the usage of the given row writer processor implementation.
        rowProcessor - the row writer processor implementation to use when the given value matches with the contents of the column provided in the constructor of this class.
      • addSwitchForValue

        public void addSwitchForValue​(java.lang.Object value,
                                      RowWriterProcessor<java.lang.Object[]> rowProcessor,
                                      int... indexesToUse)
        Associates a RowWriterProcessor implementation with an expected value to be matched in the column provided in the constructor of this class.
        Parameters:
        value - the value to match against the column of incoming output rows and trigger the usage of the given row writer processor implementation.
        rowProcessor - the row writer processor implementation to use when the given value matches with the contents of the column provided in the constructor of this class.
        indexesToUse - the (optional) sequence of column indexes to assign to the given row writer processor
      • addSwitchForType

        public <T> void addSwitchForType​(java.lang.Class<T> beanType,
                                         java.lang.String... headersToUse)
        Associates a RowWriterProcessor implementation with an expected value to be matched in the column provided in the constructor of this class.
        Type Parameters:
        T - the type of annotated java beans whose instances will be used to trigger the usage of a different format.
        Parameters:
        beanType - the type of annotated java beans whose instances will be used to trigger the usage of a different format.
        headersToUse - the (optional) sequence of headers to assign to the given row writer processor
      • addSwitchForType

        public <T> void addSwitchForType​(java.lang.Class<T> beanType,
                                         int... indexesToUse)
        Associates a RowWriterProcessor implementation with an expected value to be matched in the column provided in the constructor of this class.
        Type Parameters:
        T - the type of annotated java beans whose instances will be used to trigger the usage of a different format.
        Parameters:
        beanType - the type of annotated java beans whose instances will be used to trigger the usage of a different format.
        indexesToUse - the (optional) sequence of column indexes to assign to the given row writer processor
      • addSwitchForType

        public <T> void addSwitchForType​(java.lang.Class<T> beanType)
        Associates a RowWriterProcessor implementation with an expected value to be matched in the column provided in the constructor of this class.
        Type Parameters:
        T - the type of annotated java beans whose instances will be used to trigger the usage of a different format.
        Parameters:
        beanType - the type of annotated java beans whose instances will be used to trigger the usage of a different format.
      • getValue

        private <V> V getValue​(java.util.Map<?,​V> map,
                               int index)
      • getHeadersFromSwitch

        private NormalizedString[] getHeadersFromSwitch​(java.lang.Object value)
      • getHeaders

        public NormalizedString[] getHeaders​(java.lang.Object input)
        Description copied from class: RowWriterProcessorSwitch
        Returns the sequence of headers to use for processing an input record.
        Specified by:
        getHeaders in class RowWriterProcessorSwitch
        Parameters:
        input - the record data
        Returns:
        the sequence of headers to use when processing the given record.
      • getHeaders

        public NormalizedString[] getHeaders​(java.util.Map headerMapping,
                                             java.util.Map mapInput)
        Description copied from class: RowWriterProcessorSwitch
        Returns the sequence of headers to use for processing an input record represented by a map A map of headers can be optionally provided to assign a name to the keys of the input map. This is useful when the input map has keys will generate unwanted header names.
        Specified by:
        getHeaders in class RowWriterProcessorSwitch
        Parameters:
        headerMapping - an optional map associating keys of the rowData map with expected header names
        mapInput - the record data
        Returns:
        the sequence of headers to use when processing the given input map.
      • getColumnIndex

        public int getColumnIndex()
        Returns the column index whose values will be used to switching from a row processor to another.
        Returns:
        the column index targeted by this switch.
      • getSwitchValues

        private java.util.List<java.lang.Object> getSwitchValues()