Class StatefulBeanToCsv<T>

  • Type Parameters:
    T - Type of the bean to be written

    public class StatefulBeanToCsv<T>
    extends java.lang.Object
    This class writes beans out in CSV format to a Writer, keeping state information and making an intelligent guess at the mapping strategy to be applied.

    This class implements multi-threading on writing more than one bean, so there should be no need to use it across threads in an application. As such, it is not thread-safe.

    Since:
    3.9
    See Also:
    OpencsvUtils.determineMappingStrategy(java.lang.Class, java.util.Locale, java.lang.String)
    • Constructor Summary

      Constructors 
      Constructor Description
      StatefulBeanToCsv​(char escapechar, java.lang.String lineEnd, MappingStrategy<T> mappingStrategy, char quotechar, char separator, CsvExceptionHandler exceptionHandler, java.io.Writer writer, boolean applyQuotesToAll, org.apache.commons.collections4.MultiValuedMap<java.lang.Class<?>,​java.lang.reflect.Field> ignoredFields, java.lang.String profile)
      Constructor used when supplying a Writer instead of a CsvWriter class.
      StatefulBeanToCsv​(MappingStrategy<T> mappingStrategy, CsvExceptionHandler exceptionHandler, boolean applyQuotesToAll, ICSVWriter csvWriter, org.apache.commons.collections4.MultiValuedMap<java.lang.Class<?>,​java.lang.reflect.Field> ignoredFields, java.lang.String profile)
      Constructor used to allow building of a StatefulBeanToCsv with a user-supplied ICSVWriter class.
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      private void beforeFirstWrite​(T bean)
      Custodial tasks that must be performed before beans are written to a CSV destination for the first time.
      java.util.List<CsvException> getCapturedExceptions()
      Any exceptions captured during writing of beans to a CSV destination can be retrieved through this method.
      boolean isThrowExceptions()
      Deprecated.
      There is simply no need for this method.
      void setErrorLocale​(java.util.Locale errorLocale)
      Sets the locale for all error messages.
      void setOrderedResults​(boolean orderedResults)
      Sets whether or not results must be written in the same order in which they appear in the list of beans provided as input.
      private void submitAllLines​(java.util.Iterator<T> beans)  
      void write​(java.util.Iterator<T> iBeans)
      Writes an iterator of beans out to the Writer provided to the constructor.
      void write​(java.util.List<T> beans)
      Writes a list of beans out to the Writer provided to the constructor.
      void write​(java.util.stream.Stream<T> beans)
      Writes a stream of beans out to the Writer provided to the constructor.
      void write​(T bean)
      Writes a bean out to the Writer provided to the constructor.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • lineNumber

        private int lineNumber
        The beans being written are counted in the order they are written.
      • separator

        private final char separator
      • quotechar

        private final char quotechar
      • escapechar

        private final char escapechar
      • lineEnd

        private final java.lang.String lineEnd
      • headerWritten

        private boolean headerWritten
      • writer

        private final java.io.Writer writer
      • capturedExceptions

        private java.util.List<CsvException> capturedExceptions
      • orderedResults

        private boolean orderedResults
      • errorLocale

        private java.util.Locale errorLocale
      • applyQuotesToAll

        private final boolean applyQuotesToAll
      • ignoredFields

        private final org.apache.commons.collections4.MultiValuedMap<java.lang.Class<?>,​java.lang.reflect.Field> ignoredFields
      • profile

        private final java.lang.String profile
    • Constructor Detail

      • StatefulBeanToCsv

        StatefulBeanToCsv​(char escapechar,
                          java.lang.String lineEnd,
                          MappingStrategy<T> mappingStrategy,
                          char quotechar,
                          char separator,
                          CsvExceptionHandler exceptionHandler,
                          java.io.Writer writer,
                          boolean applyQuotesToAll,
                          org.apache.commons.collections4.MultiValuedMap<java.lang.Class<?>,​java.lang.reflect.Field> ignoredFields,
                          java.lang.String profile)
        Constructor used when supplying a Writer instead of a CsvWriter class. It is defined as package protected to ensure that StatefulBeanToCsvBuilder is always used.
        Parameters:
        escapechar - The escape character to use when writing a CSV file
        lineEnd - The line ending to use when writing a CSV file
        mappingStrategy - The mapping strategy to use when writing a CSV file
        quotechar - The quote character to use when writing a CSV file
        separator - The field separator to use when writing a CSV file
        exceptionHandler - Determines the exception handling behavior
        writer - A Writer for writing the beans as a CSV to
        applyQuotesToAll - Whether all output fields should be quoted
        ignoredFields - The fields to ignore during processing. May be null.
        profile - The profile to use when configuring how to interpret bean fields
      • StatefulBeanToCsv

        public StatefulBeanToCsv​(MappingStrategy<T> mappingStrategy,
                                 CsvExceptionHandler exceptionHandler,
                                 boolean applyQuotesToAll,
                                 ICSVWriter csvWriter,
                                 org.apache.commons.collections4.MultiValuedMap<java.lang.Class<?>,​java.lang.reflect.Field> ignoredFields,
                                 java.lang.String profile)
        Constructor used to allow building of a StatefulBeanToCsv with a user-supplied ICSVWriter class.
        Parameters:
        mappingStrategy - The mapping strategy to use when writing a CSV file
        exceptionHandler - Determines the exception handling behavior
        applyQuotesToAll - Whether all output fields should be quoted
        csvWriter - An user-supplied ICSVWriter for writing beans to a CSV output
        ignoredFields - The fields to ignore during processing. May be null.
        profile - The profile to use when configuring how to interpret bean fields
    • Method Detail

      • beforeFirstWrite

        private void beforeFirstWrite​(T bean)
                               throws CsvRequiredFieldEmptyException
        Custodial tasks that must be performed before beans are written to a CSV destination for the first time.
        Parameters:
        bean - Any bean to be written. Used to determine the mapping strategy automatically. The bean itself is not written to the output by this method.
        Throws:
        CsvRequiredFieldEmptyException - If a required header is missing while attempting to write. Since every other header is hard-wired through the bean fields and their associated annotations, this can only happen with multi-valued fields.
      • submitAllLines

        private void submitAllLines​(java.util.Iterator<T> beans)
                             throws java.lang.InterruptedException
        Throws:
        java.lang.InterruptedException
      • setOrderedResults

        public void setOrderedResults​(boolean orderedResults)
        Sets whether or not results must be written in the same order in which they appear in the list of beans provided as input. The default is that order is preserved. If your data do not need to be ordered, you can get a slight performance boost by setting orderedResults to false. The lack of ordering then also applies to any captured exceptions, if you have chosen not to have exceptions thrown.
        Parameters:
        orderedResults - Whether or not the lines written are in the same order they appeared in the input
        Since:
        4.0
      • isThrowExceptions

        @Deprecated
        public boolean isThrowExceptions()
        Deprecated.
        There is simply no need for this method.
        Returns:
        Whether or not exceptions are thrown. If they are not thrown, they are captured and returned later via getCapturedExceptions().
      • getCapturedExceptions

        public java.util.List<CsvException> getCapturedExceptions()
        Any exceptions captured during writing of beans to a CSV destination can be retrieved through this method.

        Reads from the list are destructive! Calling this method will clear the list of captured exceptions. However, calling write(java.util.List) or write(java.lang.Object) multiple times with no intervening call to this method will not clear the list of captured exceptions, but rather add to it if further exceptions are thrown.

        Returns:
        A list of exceptions that would have been thrown during any and all read operations since the last call to this method
      • setErrorLocale

        public void setErrorLocale​(java.util.Locale errorLocale)
        Sets the locale for all error messages.
        Parameters:
        errorLocale - Locale for error messages. If null, the default locale is used.
        Since:
        4.0