Class CsvEncoder
- java.lang.Object
-
- com.fasterxml.jackson.dataformat.csv.impl.CsvEncoder
-
public class CsvEncoder extends java.lang.ObjectHelper class that handles actual low-level construction of CSV output, based only on indexes given without worrying about reordering, or binding from logical properties.
-
-
Field Summary
Fields Modifier and Type Field Description protected BufferedValue[]_bufferedAnd if output comes in shuffled order we will need to do bit of ordering.protected boolean_bufferRecyclableFlag that indicates whether the_outputBufferis recyclable (and needs to be returned to recycler once we are done) or not.protected boolean_cfgAlwaysQuoteEmptyStringsprotected boolean_cfgAlwaysQuoteStringsprotected char_cfgColumnSeparatorprotected char_cfgControlCharEscapeCharprotected int_cfgEscapeCharacterprotected boolean_cfgEscapeControlCharWithEscapeCharprotected boolean_cfgEscapeQuoteCharWithEscapeCharprotected boolean_cfgIncludeMissingTailprotected char[]_cfgLineSeparatorprotected int_cfgLineSeparatorLengthprotected int_cfgMaxQuoteCheckCharsprotected int_cfgMinSafeCharLowest-valued character that is safe to output without using quotes around value, NOT including possible escape character.protected char[]_cfgNullValueprotected boolean_cfgOptimalQuotingMarker flag used to determine if to do optimal (aka "strict") quoting checks or not (looser conservative check)protected int_cfgQuoteCharacterprotected char_cfgQuoteCharEscapeCharprotected int_charsWrittenLet's keep track of how many bytes have been output, may prove useful when debugging.protected int_columnCountprotected int_csvFeaturesprotected com.fasterxml.jackson.core.io.IOContext_ioContextprotected int_lastBufferedIndex of the last buffered valueprotected int_nextColumnToWriteIndex of column we expect to write nextprotected java.io.Writer_outUnderlyingWriterused for output.protected char[]_outputBufferIntermediate buffer in which contents are buffered before being written using_out.protected int_outputEndOffset to index after the last valid index in_outputBuffer.protected int[]_outputEscapesCurrently active set of output escape code definitions (whether and how to escape or not).protected int_outputTailPointer to the next available char position in_outputBufferprotected static char[]HEX_CHARSprotected static intMAX_QUOTE_CHECKprotected BufferedValue[]NO_BUFFEREDprotected static intSHORT_WRITE
-
Constructor Summary
Constructors Constructor Description CsvEncoder(com.fasterxml.jackson.core.io.IOContext ctxt, int csvFeatures, java.io.Writer out, CsvSchema schema)CsvEncoder(CsvEncoder base, CsvSchema newSchema)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void_append(char[] ch)protected void_buffer(int index, BufferedValue v)protected void_flushBuffer()protected boolean_mayNeedQuotes(java.lang.String value, int length)Helper method that determines whether given String is likely to require quoting; check tries to optimize for speed.protected boolean_needsQuotingLoose(java.lang.String value)NOTE: final since checking is not expected to be changed here; override calling method (_mayNeedQuotes) instead, if necessary.protected boolean_needsQuotingLoose(java.lang.String value, int esc)protected boolean_needsQuotingStrict(java.lang.String value)protected boolean_needsQuotingStrict(java.lang.String value, int esc)void_releaseBuffers()void_writeQuoted(java.lang.String text)protected void_writeQuoted(java.lang.String text, char q, int i)void_writeQuotedAndEscaped(java.lang.String text, char esc)protected void_writeQuotedAndEscaped(java.lang.String text, char q, char esc, int i)protected voidappendColumnSeparator()protected voidappendNull()protected voidappendRawValue(java.lang.String value)protected voidappendValue(boolean value)protected voidappendValue(double value)protected voidappendValue(float value)protected voidappendValue(int value)protected voidappendValue(long value)protected voidappendValue(java.lang.String value)voidclose(boolean autoClose, boolean flushStream)voidendRow()voidflush(boolean flushStream)intgetOutputBuffered()NOTE: while value does indeed indicate amount that has been written in the buffer, there may be more intermediate data that is buffered as values but not yet in buffer.java.lang.ObjectgetOutputTarget()intnextColumnIndex()CsvEncoderoverrideFormatFeatures(int feat)CsvEncodersetOutputEscapes(int[] esc)CsvEncoderwithSchema(CsvSchema schema)voidwrite(int columnIndex, boolean value)voidwrite(int columnIndex, char[] ch, int offset, int len)voidwrite(int columnIndex, double value)voidwrite(int columnIndex, float value)voidwrite(int columnIndex, int value)voidwrite(int columnIndex, long value)voidwrite(int columnIndex, java.lang.String value)voidwriteColumnName(java.lang.String name)voidwriteNonEscaped(int columnIndex, java.lang.String rawValue)voidwriteNull(int columnIndex)voidwriteRaw(char c)voidwriteRaw(char[] text, int offset, int len)voidwriteRaw(java.lang.String text)voidwriteRaw(java.lang.String text, int start, int len)
-
-
-
Field Detail
-
HEX_CHARS
protected static final char[] HEX_CHARS
-
SHORT_WRITE
protected static final int SHORT_WRITE
- See Also:
- Constant Field Values
-
MAX_QUOTE_CHECK
protected static final int MAX_QUOTE_CHECK
- See Also:
- Constant Field Values
-
NO_BUFFERED
protected final BufferedValue[] NO_BUFFERED
-
_outputEscapes
protected int[] _outputEscapes
Currently active set of output escape code definitions (whether and how to escape or not).
-
_ioContext
protected final com.fasterxml.jackson.core.io.IOContext _ioContext
-
_out
protected final java.io.Writer _out
UnderlyingWriterused for output.
-
_cfgColumnSeparator
protected final char _cfgColumnSeparator
-
_cfgQuoteCharacter
protected final int _cfgQuoteCharacter
-
_cfgEscapeCharacter
protected final int _cfgEscapeCharacter
- Since:
- 2.7
-
_cfgLineSeparator
protected final char[] _cfgLineSeparator
-
_cfgNullValue
protected final char[] _cfgNullValue
- Since:
- 2.5
-
_cfgLineSeparatorLength
protected final int _cfgLineSeparatorLength
-
_cfgMaxQuoteCheckChars
protected int _cfgMaxQuoteCheckChars
-
_cfgMinSafeChar
protected final int _cfgMinSafeChar
Lowest-valued character that is safe to output without using quotes around value, NOT including possible escape character.
-
_csvFeatures
protected int _csvFeatures
-
_cfgOptimalQuoting
protected boolean _cfgOptimalQuoting
Marker flag used to determine if to do optimal (aka "strict") quoting checks or not (looser conservative check)- Since:
- 2.4
-
_cfgIncludeMissingTail
protected boolean _cfgIncludeMissingTail
- Since:
- 2.4
-
_cfgAlwaysQuoteStrings
protected boolean _cfgAlwaysQuoteStrings
- Since:
- 2.5
-
_cfgAlwaysQuoteEmptyStrings
protected boolean _cfgAlwaysQuoteEmptyStrings
-
_cfgEscapeQuoteCharWithEscapeChar
protected boolean _cfgEscapeQuoteCharWithEscapeChar
-
_cfgEscapeControlCharWithEscapeChar
protected boolean _cfgEscapeControlCharWithEscapeChar
- Since:
- 2.9.9
-
_cfgQuoteCharEscapeChar
protected final char _cfgQuoteCharEscapeChar
-
_cfgControlCharEscapeChar
protected final char _cfgControlCharEscapeChar
- Since:
- 2.9.9
-
_columnCount
protected int _columnCount
- Since:
- 2.4
-
_nextColumnToWrite
protected int _nextColumnToWrite
Index of column we expect to write next
-
_buffered
protected BufferedValue[] _buffered
And if output comes in shuffled order we will need to do bit of ordering.
-
_lastBuffered
protected int _lastBuffered
Index of the last buffered value
-
_outputBuffer
protected char[] _outputBuffer
Intermediate buffer in which contents are buffered before being written using_out.
-
_bufferRecyclable
protected boolean _bufferRecyclable
Flag that indicates whether the_outputBufferis recyclable (and needs to be returned to recycler once we are done) or not.
-
_outputTail
protected int _outputTail
Pointer to the next available char position in_outputBuffer
-
_outputEnd
protected final int _outputEnd
Offset to index after the last valid index in_outputBuffer. Typically same as length of the buffer.
-
_charsWritten
protected int _charsWritten
Let's keep track of how many bytes have been output, may prove useful when debugging. This does not include bytes buffered in the output buffer, just bytes that have been written using underlying stream writer.
-
-
Constructor Detail
-
CsvEncoder
public CsvEncoder(com.fasterxml.jackson.core.io.IOContext ctxt, int csvFeatures, java.io.Writer out, CsvSchema schema)
-
CsvEncoder
public CsvEncoder(CsvEncoder base, CsvSchema newSchema)
-
-
Method Detail
-
withSchema
public CsvEncoder withSchema(CsvSchema schema)
-
overrideFormatFeatures
public CsvEncoder overrideFormatFeatures(int feat)
-
setOutputEscapes
public CsvEncoder setOutputEscapes(int[] esc)
-
getOutputTarget
public java.lang.Object getOutputTarget()
-
getOutputBuffered
public int getOutputBuffered()
NOTE: while value does indeed indicate amount that has been written in the buffer, there may be more intermediate data that is buffered as values but not yet in buffer.
-
nextColumnIndex
public int nextColumnIndex()
-
write
public final void write(int columnIndex, java.lang.String value) throws java.io.IOException- Throws:
java.io.IOException
-
write
public final void write(int columnIndex, char[] ch, int offset, int len) throws java.io.IOException- Throws:
java.io.IOException
-
write
public final void write(int columnIndex, int value) throws java.io.IOException- Throws:
java.io.IOException
-
write
public final void write(int columnIndex, long value) throws java.io.IOException- Throws:
java.io.IOException
-
write
public final void write(int columnIndex, float value) throws java.io.IOException- Throws:
java.io.IOException
-
write
public final void write(int columnIndex, double value) throws java.io.IOException- Throws:
java.io.IOException
-
write
public final void write(int columnIndex, boolean value) throws java.io.IOException- Throws:
java.io.IOException
-
writeNonEscaped
public final void writeNonEscaped(int columnIndex, java.lang.String rawValue) throws java.io.IOException- Throws:
java.io.IOException- Since:
- 2.5
-
writeNull
public final void writeNull(int columnIndex) throws java.io.IOException- Throws:
java.io.IOException
-
writeColumnName
public final void writeColumnName(java.lang.String name) throws java.io.IOException- Throws:
java.io.IOException
-
endRow
public void endRow() throws java.io.IOException- Throws:
java.io.IOException
-
appendValue
protected void appendValue(java.lang.String value) throws java.io.IOException- Throws:
java.io.IOException
-
appendRawValue
protected void appendRawValue(java.lang.String value) throws java.io.IOException- Throws:
java.io.IOException
-
appendValue
protected void appendValue(int value) throws java.io.IOException- Throws:
java.io.IOException
-
appendValue
protected void appendValue(long value) throws java.io.IOException- Throws:
java.io.IOException
-
appendValue
protected void appendValue(float value) throws java.io.IOException- Throws:
java.io.IOException
-
appendValue
protected void appendValue(double value) throws java.io.IOException- Throws:
java.io.IOException
-
appendValue
protected void appendValue(boolean value) throws java.io.IOException- Throws:
java.io.IOException
-
appendNull
protected void appendNull() throws java.io.IOException- Throws:
java.io.IOException
-
_append
protected void _append(char[] ch) throws java.io.IOException- Throws:
java.io.IOException
-
appendColumnSeparator
protected void appendColumnSeparator() throws java.io.IOException- Throws:
java.io.IOException
-
writeRaw
public void writeRaw(java.lang.String text) throws java.io.IOException- Throws:
java.io.IOException
-
writeRaw
public void writeRaw(java.lang.String text, int start, int len) throws java.io.IOException- Throws:
java.io.IOException
-
writeRaw
public void writeRaw(char[] text, int offset, int len) throws java.io.IOException- Throws:
java.io.IOException
-
writeRaw
public void writeRaw(char c) throws java.io.IOException- Throws:
java.io.IOException
-
_writeQuoted
public void _writeQuoted(java.lang.String text) throws java.io.IOException- Throws:
java.io.IOException
-
_writeQuoted
protected void _writeQuoted(java.lang.String text, char q, int i) throws java.io.IOException- Throws:
java.io.IOException
-
_writeQuotedAndEscaped
public void _writeQuotedAndEscaped(java.lang.String text, char esc) throws java.io.IOException- Throws:
java.io.IOException
-
_writeQuotedAndEscaped
protected void _writeQuotedAndEscaped(java.lang.String text, char q, char esc, int i) throws java.io.IOException- Throws:
java.io.IOException
-
flush
public void flush(boolean flushStream) throws java.io.IOException- Throws:
java.io.IOException
-
close
public void close(boolean autoClose, boolean flushStream) throws java.io.IOException- Throws:
java.io.IOException
-
_mayNeedQuotes
protected boolean _mayNeedQuotes(java.lang.String value, int length)Helper method that determines whether given String is likely to require quoting; check tries to optimize for speed.
-
_needsQuotingLoose
protected final boolean _needsQuotingLoose(java.lang.String value)
NOTE: final since checking is not expected to be changed here; override calling method (
_mayNeedQuotes) instead, if necessary.- Since:
- 2.4
-
_needsQuotingLoose
protected final boolean _needsQuotingLoose(java.lang.String value, int esc)
-
_needsQuotingStrict
protected boolean _needsQuotingStrict(java.lang.String value)
- Since:
- 2.4
-
_needsQuotingStrict
protected boolean _needsQuotingStrict(java.lang.String value, int esc)- Since:
- 2.7
-
_buffer
protected void _buffer(int index, BufferedValue v)
-
_flushBuffer
protected void _flushBuffer() throws java.io.IOException- Throws:
java.io.IOException
-
_releaseBuffers
public void _releaseBuffers()
-
-