QuoteStrategies.java

package de.siegmar.fastcsv.writer;

/**
 * Provides some common {@link QuoteStrategy} implementations.
 */
public final class QuoteStrategies {

    /**
     * Enclose any field with quotes regardless of its content (even empty and {@code null} fields).
     */
    public static final QuoteStrategy ALWAYS = new QuoteStrategy() {
        @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 quoteNonEmpty(final int lineNo, final int fieldIdx, final String value) {
            return true;
        }
    };

    /**
     * Enclose any field with quotes if it has content (is not empty or {@code null}).
     */
    public static final QuoteStrategy NON_EMPTY = new QuoteStrategy() {
        @Override
        public boolean quoteNonEmpty(final int lineNo, final int fieldIdx, final String value) {
            return true;
        }
    };

    /**
     * Enclose empty but not @{code null} fields to differentiate them.
     * This is required for PostgreSQL CSV imports, for example.
     */
    public static final QuoteStrategy EMPTY = new QuoteStrategy() {
        @Override
        public boolean quoteEmpty(final int lineNo, final int fieldIdx) {
            return true;
        }
    };

    private QuoteStrategies() {
        // utility class
    }

}