Package org.refcodes.tabular
Class CsvRecordsWriter<T>
- java.lang.Object
-
- org.refcodes.tabular.CsvRecordsWriter<T>
-
- Type Parameters:
T
- The type of theRecord
instances being used.
- All Implemented Interfaces:
java.lang.AutoCloseable
,org.refcodes.mixin.DelimiterAccessor
,org.refcodes.mixin.DelimiterAccessor.DelimiterBuilder<T>
,org.refcodes.mixin.DelimiterAccessor.DelimiterMutator
,org.refcodes.mixin.DelimiterAccessor.DelimiterProperty
,org.refcodes.mixin.TrimAccessor
,org.refcodes.mixin.TrimAccessor.TrimBuilder<T>
,org.refcodes.mixin.TrimAccessor.TrimMutator
,org.refcodes.mixin.TrimAccessor.TrimProperty
,HeaderAccessor<T>
,RecordsWriter<T>
,org.refcodes.textual.CsvEscapeModeAccessor
,org.refcodes.textual.CsvEscapeModeAccessor.CsvEscapeModeBuilder<T>
,org.refcodes.textual.CsvEscapeModeAccessor.CsvEscapeModeMutator
,org.refcodes.textual.CsvEscapeModeAccessor.CsvEscapeModeProperty
,org.refcodes.textual.CsvMixin
- Direct Known Subclasses:
CsvStringRecordsWriter
public class CsvRecordsWriter<T> extends java.lang.Object implements org.refcodes.textual.CsvMixin, RecordsWriter<T>
TheCsvRecordsWriter
writes CSV-Data.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.refcodes.textual.CsvEscapeModeAccessor
org.refcodes.textual.CsvEscapeModeAccessor.CsvEscapeModeBuilder<B extends org.refcodes.textual.CsvEscapeModeAccessor.CsvEscapeModeBuilder<?>>, org.refcodes.textual.CsvEscapeModeAccessor.CsvEscapeModeMutator, org.refcodes.textual.CsvEscapeModeAccessor.CsvEscapeModeProperty
-
Nested classes/interfaces inherited from interface org.refcodes.mixin.DelimiterAccessor
org.refcodes.mixin.DelimiterAccessor.DelimiterBuilder<B extends org.refcodes.mixin.DelimiterAccessor.DelimiterBuilder<B>>, org.refcodes.mixin.DelimiterAccessor.DelimiterMutator, org.refcodes.mixin.DelimiterAccessor.DelimiterProperty
-
Nested classes/interfaces inherited from interface org.refcodes.tabular.HeaderAccessor
HeaderAccessor.HeaderBuilder<T extends HeaderAccessor.HeaderBuilder<?>>, HeaderAccessor.HeaderMutator<T>, HeaderAccessor.HeaderProperty<T>
-
-
Field Summary
Fields Modifier and Type Field Description protected org.refcodes.textual.CsvBuilder
_csvBuilder
protected Header<T>
_header
protected java.io.PrintStream
_outputStream
-
Constructor Summary
Constructors Modifier Constructor Description CsvRecordsWriter(java.io.File aFile)
Constructs aCsvRecordsWriter
.CsvRecordsWriter(java.io.File aFile, char aCsvDelimiter)
Constructs aCsvRecordsWriter
.CsvRecordsWriter(java.io.OutputStream aOutputStream)
Constructs aCsvRecordsWriter
.CsvRecordsWriter(java.io.PrintStream aPrintStream)
Constructs aCsvRecordsWriter
.CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.File aFile)
Constructs aCsvRecordsWriter
with the given header for logging.CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.File aFile, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.OutputStream aOutputStream)
Constructs aCsvRecordsWriter
with the given header for logging.CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.OutputStream aOutputStream, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.PrintStream aPrintStream)
Constructs aCsvRecordsWriter
with the given header for logging.CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.PrintStream aOutputStream, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.CsvRecordsWriter(Header<T> aHeader, java.io.File aFile)
Constructs aCsvRecordsWriter
with the given header for logging.CsvRecordsWriter(Header<T> aHeader, java.io.File aFile, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.CsvRecordsWriter(Header<T> aHeader, java.io.OutputStream aOutputStream)
Constructs aCsvRecordsWriter
with the given header for logging.CsvRecordsWriter(Header<T> aHeader, java.io.OutputStream aOutputStream, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.CsvRecordsWriter(Header<T> aHeader, java.io.PrintStream aPrintStream)
Constructs aCsvRecordsWriter
with the given header for logging.CsvRecordsWriter(Header<T> aHeader, java.io.PrintStream aPrintStream, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.protected
CsvRecordsWriter(Header<T> aHeader, ColumnFactory<T> aColumnFactory, java.io.PrintStream aOutputStream, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clearCommentPrefixes()
void
close()
java.lang.String[]
getCommentPrefixes()
org.refcodes.textual.CsvEscapeMode
getCsvEscapeMode()
char
getDelimiter()
Header<T>
getHeader()
Retrieves theHeader
property.boolean
isTrim()
void
parseHeader(java.lang.String... aHeader)
Parses and sets theHeader
from the providedString
.void
setCommentPrefixes(java.lang.String... aCommentPrefixes)
void
setCsvEscapeMode(org.refcodes.textual.CsvEscapeMode aCsvEscapeMode)
void
setDelimiter(char aCsvDelimiter)
void
setTrim(boolean isTrim)
org.refcodes.textual.CsvMixin
withCommentPrefixes(java.lang.String... aCommentPrefixes)
CsvRecordsWriter<T>
withCsvEscapeMode(org.refcodes.textual.CsvEscapeMode aCsvEscapeMode)
CsvRecordsWriter<T>
withDelimiter(char aCsvDelimiter)
CsvRecordsWriter<T>
withTrim(boolean isTrimRecords)
void
writeComment(java.lang.String aComment)
Writes a comment by using the fist defined comment prefix as ofgetCommentPrefixes()
suffixed with a space (" ") followed by the comment (as of theCsvMixin.toComment(String)
).void
writeHeader()
Writes the CSV header to the (standard) output (be it a Stream or a File).void
writeHeader(java.lang.String... aHeader)
Parses and sets theHeader
from the providedString
arguments and writes the CSV header to the (standard) output (be it a Stream or a File).void
writeHeader(Header<T> aHeader)
Sets and writes the providedHeader
to the (standard) output (be it a Stream or a File). .void
writeNext(java.lang.Object... aRecord)
Directly logs the providedString
instances to the (standard) output.void
writeNext(Record<T> aRecord)
Directly logs the providedString
instances to the (standard) output.
-
-
-
Constructor Detail
-
CsvRecordsWriter
public CsvRecordsWriter(Header<T> aHeader, java.io.File aFile) throws java.io.FileNotFoundException
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aHeader
- The header used for logging in the correct format.aFile
- TheFile
to be used for printing.- Throws:
java.io.FileNotFoundException
- If the given file object does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file.
-
CsvRecordsWriter
public CsvRecordsWriter(Header<T> aHeader, java.io.File aFile, char aCsvDelimiter) throws java.io.FileNotFoundException
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aHeader
- The header used for logging in the correct format.aFile
- TheFile
to be used for printing.aCsvDelimiter
- The separator to be used when separating the CSV values in the log output.- Throws:
java.io.FileNotFoundException
- If the given file object does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file.
-
CsvRecordsWriter
public CsvRecordsWriter(java.io.File aFile) throws java.io.FileNotFoundException
Constructs aCsvRecordsWriter
.- Parameters:
aFile
- TheFile
to be used for printing output.- Throws:
java.io.FileNotFoundException
- If the given file object does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file.
-
CsvRecordsWriter
public CsvRecordsWriter(java.io.File aFile, char aCsvDelimiter) throws java.io.FileNotFoundException
Constructs aCsvRecordsWriter
.- Parameters:
aFile
- TheFile
to be used for printing output. aCsvDelimiter The separator to be used when separating the CSV values in the log output.aCsvDelimiter
- The separator to be used when separating the CSV values in the log output.- Throws:
java.io.FileNotFoundException
- If the given file object does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file.
-
CsvRecordsWriter
public CsvRecordsWriter(Header<T> aHeader, java.io.OutputStream aOutputStream)
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aHeader
- The header used for logging in the correct format.aOutputStream
- TheOutputStream
to be used for printing.
-
CsvRecordsWriter
public CsvRecordsWriter(Header<T> aHeader, java.io.OutputStream aOutputStream, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aHeader
- The header used for logging in the correct format.aOutputStream
- TheOutputStream
to be used for printing.aCsvDelimiter
- The separator to be used when separating the CSV values in the log output.
-
CsvRecordsWriter
public CsvRecordsWriter(java.io.OutputStream aOutputStream)
Constructs aCsvRecordsWriter
.- Parameters:
aOutputStream
- TheOutputStream
to be used for printing output.
-
CsvRecordsWriter
public CsvRecordsWriter(java.io.PrintStream aPrintStream)
Constructs aCsvRecordsWriter
.- Parameters:
aPrintStream
- ThePrintStream
to be used for printing.
-
CsvRecordsWriter
public CsvRecordsWriter(Header<T> aHeader, java.io.PrintStream aPrintStream)
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aHeader
- The header used for logging in the correct format.aPrintStream
- ThePrintStream
to be used for printing.
-
CsvRecordsWriter
public CsvRecordsWriter(Header<T> aHeader, java.io.PrintStream aPrintStream, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aHeader
- The header used for logging in the correct format.aPrintStream
- ThePrintStream
to be used for printing.aCsvDelimiter
- The separator to be used when separating the CSV values in the log output.
-
CsvRecordsWriter
public CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.File aFile) throws java.io.FileNotFoundException
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aColumnFactory
- The header used for logging in the correct format.aFile
- TheFile
to be used for printing.- Throws:
java.io.FileNotFoundException
- If the given file object does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file.
-
CsvRecordsWriter
public CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.File aFile, char aCsvDelimiter) throws java.io.FileNotFoundException
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aColumnFactory
- The header used for logging in the correct format.aFile
- TheFile
to be used for printing.aCsvDelimiter
- The separator to be used when separating the CSV values in the log output.- Throws:
java.io.FileNotFoundException
- If the given file object does not denote an existing, writable regular file and a new regular file of that name cannot be created, or if some other error occurs while opening or creating the file.
-
CsvRecordsWriter
public CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.OutputStream aOutputStream)
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aColumnFactory
- The header used for logging in the correct format.aOutputStream
- TheOutputStream
to be used for printing.
-
CsvRecordsWriter
public CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.OutputStream aOutputStream, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aColumnFactory
- The header used for logging in the correct format.aOutputStream
- TheOutputStream
to be used for printing.aCsvDelimiter
- The separator to be used when separating the CSV values in the log output.
-
CsvRecordsWriter
public CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.PrintStream aPrintStream)
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aColumnFactory
- The header used for logging in the correct format.aPrintStream
- ThePrintStream
to be used for printing.
-
CsvRecordsWriter
public CsvRecordsWriter(ColumnFactory<T> aColumnFactory, java.io.PrintStream aOutputStream, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aColumnFactory
- AColumnFactory
to be used to generateColumn
instances from the top line of the CSF file, required for parsing the CSV lines and converting them toRecord
instances.aOutputStream
- ThePrintStream
to be used for printing output.aCsvDelimiter
- The separator to be used when separating the CSV values in the log output.
-
CsvRecordsWriter
protected CsvRecordsWriter(Header<T> aHeader, ColumnFactory<T> aColumnFactory, java.io.PrintStream aOutputStream, char aCsvDelimiter)
Constructs aCsvRecordsWriter
with the given header for logging.- Parameters:
aHeader
- The header used for logging in the correct format.aColumnFactory
- AColumnFactory
to be used to generateColumn
instances from the top line of the CSF file, required for parsing the CSV lines and converting them toRecord
instances.aOutputStream
- ThePrintStream
to be used for printing output.aCsvDelimiter
- The separator to be used when separating the CSV values in the log output.
-
-
Method Detail
-
setCommentPrefixes
public void setCommentPrefixes(java.lang.String... aCommentPrefixes)
- Specified by:
setCommentPrefixes
in interfaceorg.refcodes.textual.CsvMixin
-
getCommentPrefixes
public java.lang.String[] getCommentPrefixes()
- Specified by:
getCommentPrefixes
in interfaceorg.refcodes.textual.CsvMixin
-
clearCommentPrefixes
public void clearCommentPrefixes()
- Specified by:
clearCommentPrefixes
in interfaceorg.refcodes.textual.CsvMixin
-
withCommentPrefixes
public org.refcodes.textual.CsvMixin withCommentPrefixes(java.lang.String... aCommentPrefixes)
- Specified by:
withCommentPrefixes
in interfaceorg.refcodes.textual.CsvMixin
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Throws:
java.io.IOException
-
getCsvEscapeMode
public org.refcodes.textual.CsvEscapeMode getCsvEscapeMode()
- Specified by:
getCsvEscapeMode
in interfaceorg.refcodes.textual.CsvEscapeModeAccessor
-
isTrim
public boolean isTrim()
- Specified by:
isTrim
in interfaceorg.refcodes.mixin.TrimAccessor
-
getDelimiter
public char getDelimiter()
- Specified by:
getDelimiter
in interfaceorg.refcodes.mixin.DelimiterAccessor
-
setTrim
public void setTrim(boolean isTrim)
- Specified by:
setTrim
in interfaceorg.refcodes.mixin.TrimAccessor.TrimMutator
-
setDelimiter
public void setDelimiter(char aCsvDelimiter)
- Specified by:
setDelimiter
in interfaceorg.refcodes.mixin.DelimiterAccessor.DelimiterMutator
-
withTrim
public CsvRecordsWriter<T> withTrim(boolean isTrimRecords)
- Specified by:
withTrim
in interfaceorg.refcodes.mixin.TrimAccessor.TrimBuilder<T>
-
withCsvEscapeMode
public CsvRecordsWriter<T> withCsvEscapeMode(org.refcodes.textual.CsvEscapeMode aCsvEscapeMode)
- Specified by:
withCsvEscapeMode
in interfaceorg.refcodes.textual.CsvEscapeModeAccessor.CsvEscapeModeBuilder<T>
-
withDelimiter
public CsvRecordsWriter<T> withDelimiter(char aCsvDelimiter)
- Specified by:
withDelimiter
in interfaceorg.refcodes.mixin.DelimiterAccessor.DelimiterBuilder<T>
-
setCsvEscapeMode
public void setCsvEscapeMode(org.refcodes.textual.CsvEscapeMode aCsvEscapeMode)
- Specified by:
setCsvEscapeMode
in interfaceorg.refcodes.textual.CsvEscapeModeAccessor.CsvEscapeModeMutator
-
parseHeader
public void parseHeader(java.lang.String... aHeader)
Parses and sets theHeader
from the providedString
. You must have provided aColumnFactory
for this operation to succeed.- Specified by:
parseHeader
in interfaceRecordsWriter<T>
- Parameters:
aHeader
- The header to be created.
-
writeHeader
public void writeHeader(java.lang.String... aHeader)
Parses and sets theHeader
from the providedString
arguments and writes the CSV header to the (standard) output (be it a Stream or a File). You must have provided aColumnFactory
for this operation to succeed.- Specified by:
writeHeader
in interfaceRecordsWriter<T>
- Parameters:
aHeader
- The header to be created.
-
writeHeader
public void writeHeader(Header<T> aHeader)
Sets and writes the providedHeader
to the (standard) output (be it a Stream or a File). .- Specified by:
writeHeader
in interfaceRecordsWriter<T>
- Parameters:
aHeader
- The header to be created.
-
writeHeader
public void writeHeader()
Writes the CSV header to the (standard) output (be it a Stream or a File). You must have provided aHeader
for this operation to succeed.- Specified by:
writeHeader
in interfaceRecordsWriter<T>
-
writeNext
public void writeNext(java.lang.Object... aRecord) throws java.lang.IllegalArgumentException
Directly logs the providedString
instances to the (standard) output.- Specified by:
writeNext
in interfaceRecordsWriter<T>
- Parameters:
aRecord
- TheString
instances to be logged.- Throws:
java.lang.IllegalArgumentException
- thrown in case the provided objects do not align with the header (as ofHeaderAccessor.getHeader()
).
-
writeNext
public void writeNext(Record<T> aRecord) throws ColumnMismatchException, HeaderMismatchException
Directly logs the providedString
instances to the (standard) output.- Specified by:
writeNext
in interfaceRecordsWriter<T>
- Parameters:
aRecord
- TheString
instances to be logged.- Throws:
ColumnMismatchException
- Thrown in case a value was found in the e.g. in aRecord
of the wrong type than specified by a providedColumn
(of for example aHeader
).HeaderMismatchException
- Thrown in case there is a mismatch between the givenHeaderMismatchException
and theRow
, i.e. the index for the given key in the header may be out of index of the given row or the given key does not exist in theHeader
.
-
writeComment
public void writeComment(java.lang.String aComment) throws java.lang.IllegalStateException
Writes a comment by using the fist defined comment prefix as ofgetCommentPrefixes()
suffixed with a space (" ") followed by the comment (as of theCsvMixin.toComment(String)
). If no prefix has been set, then anIllegalStateException
will be thrown.- Parameters:
aComment
- The comment to be written.- Throws:
java.lang.IllegalStateException
- in case no comment prefixes have been set viasetCommentPrefixes(String...)
orwithCommentPrefixes(String...)
.
-
-