QuoteStrategies.java

package de.siegmar.fastcsv.writer;

/// Provides some common [QuoteStrategy] implementations.
public enum QuoteStrategies implements QuoteStrategy {

    /// Quote fields only if quoting is required.
    REQUIRED,

    /// Quote all fields, including those passed as an empty string or `null`.
    ALWAYS {
        @Override
        public boolean quoteNull(final int lineNo, final int fieldIdx) {
            return true;
        }

        @Override
        public boolean quoteEmpty(final int lineNo, final int fieldIdx) {
            return true;
        }

        @Override
        public boolean quoteValue(final int lineNo, final int fieldIdx, final String value) {
            return true;
        }
    },

    /// Quote all fields with non-empty field content.
    NON_EMPTY {
        @Override
        public boolean quoteValue(final int lineNo, final int fieldIdx, final String value) {
            return true;
        }
    },

    /// Quote fields passed as an empty string, but not those passed as `null`, to tell them apart.
    /// This is required for PostgreSQL CSV imports, for example.
    EMPTY {
        @Override
        public boolean quoteEmpty(final int lineNo, final int fieldIdx) {
            return true;
        }
    }

}