Class CsvSplitter
- java.lang.Object
-
- com.norconex.importer.handler.AbstractImporterHandler
-
- com.norconex.importer.handler.splitter.AbstractDocumentSplitter
-
- com.norconex.importer.handler.splitter.impl.CsvSplitter
-
- All Implemented Interfaces:
IXMLConfigurable,IImporterHandler,IDocumentSplitter
public class CsvSplitter extends AbstractDocumentSplitter implements IXMLConfigurable
Split files with Coma-Separated values (or any other characters, like tab) into one document per line.
Can be used both as a pre-parse (text documents) or post-parse handler documents.
XML configuration usage:
<handler class="com.norconex.importer.handler.splitter.impl.CsvSplitter" separatorCharacter="" quoteCharacter="" escapeCharacter="" useFirstRowAsFields="(false|true)" linesToSkip="(integer)" referenceColumn="(column name or position from 1)" contentColumns="(csv list of column/position to use as content)"> <!-- multiple "restrictTo" tags allowed (only one needs to match) --> <restrictTo> <fieldMatcher>(field-matching expression)</fieldMatcher> <valueMatcher>(value-matching expression)</valueMatcher> </restrictTo> </handler>XML usage example:
<handler class="CsvSplitter" separatorCharacter="," quoteCharacter="'" escapeCharacter="\" useFirstRowAsFields="true" linesToSkip="0" referenceColumn="clientId" contentColumns="orgDesc"/>Given this sample CSV file content...
'clientId','clientName','clientOrg','orgDesc' '123','Joe Dalton','ACME Inc.','Organization\'s description' '345','Avrel Dalton','Daisy Town','Another one'
... the above example will split the file into two documents (one for each row after the header row):
- Since:
- 2.0.0
- Author:
- Pascal Essiembre
-
-
Field Summary
Fields Modifier and Type Field Description static charDEFAULT_ESCAPE_CHARACTERstatic charDEFAULT_QUOTE_CHARACTERstatic charDEFAULT_SEPARATOR_CHARACTER
-
Constructor Summary
Constructors Constructor Description CsvSplitter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object other)List<String>getContentColumns()chargetEscapeCharacter()Gets the escape character.intgetLinesToSkip()Gets how many lines to skip before starting to parse lines.chargetQuoteCharacter()Get the value's surrounding quotes character.StringgetReferenceColumn()chargetSeparatorCharacter()Gets the value-separator character.inthashCode()booleanisUseFirstRowAsFields()Whether to use the first row as field names for values.protected voidloadHandlerFromXML(XML xml)Loads configuration settings specific to the implementing class.protected voidsaveHandlerToXML(XML xml)Saves configuration settings specific to the implementing class.voidsetContentColumns(String... contentColumns)voidsetContentColumns(List<String> contentColumns)Sets content columns.voidsetEscapeCharacter(char escapeCharacter)Sets the escape character.voidsetLinesToSkip(int linesToSkip)Sets how many lines to skip before starting to parse lines.voidsetQuoteCharacter(char quoteCharacter)Sets the value's surrounding quotes character.voidsetReferenceColumn(String referenceColumn)voidsetSeparatorCharacter(char separatorCharacter)Sets the value-separator character.voidsetUseFirstRowAsFields(boolean useFirstRowAsFields)Sets whether to use the first row as field names for values.protected List<Doc>splitApplicableDocument(HandlerDoc doc, InputStream input, OutputStream output, ParseState parseState)StringtoString()-
Methods inherited from class com.norconex.importer.handler.splitter.AbstractDocumentSplitter
splitDocument
-
Methods inherited from class com.norconex.importer.handler.AbstractImporterHandler
addRestriction, addRestriction, addRestrictions, clearRestrictions, detectCharsetIfBlank, getRestrictions, isApplicable, loadFromXML, removeRestriction, removeRestriction, saveToXML
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.norconex.commons.lang.xml.IXMLConfigurable
loadFromXML, saveToXML
-
-
-
-
Field Detail
-
DEFAULT_SEPARATOR_CHARACTER
public static final char DEFAULT_SEPARATOR_CHARACTER
- See Also:
- Constant Field Values
-
DEFAULT_QUOTE_CHARACTER
public static final char DEFAULT_QUOTE_CHARACTER
- See Also:
- Constant Field Values
-
DEFAULT_ESCAPE_CHARACTER
public static final char DEFAULT_ESCAPE_CHARACTER
- See Also:
- Constant Field Values
-
-
Method Detail
-
splitApplicableDocument
protected List<Doc> splitApplicableDocument(HandlerDoc doc, InputStream input, OutputStream output, ParseState parseState) throws ImporterHandlerException
- Specified by:
splitApplicableDocumentin classAbstractDocumentSplitter- Throws:
ImporterHandlerException
-
getSeparatorCharacter
public char getSeparatorCharacter()
Gets the value-separator character.- Returns:
- value-separator character
-
setSeparatorCharacter
public void setSeparatorCharacter(char separatorCharacter)
Sets the value-separator character. Default is a comma (,).- Parameters:
separatorCharacter- value-separator character
-
getQuoteCharacter
public char getQuoteCharacter()
Get the value's surrounding quotes character.- Returns:
- value's surrounding quotes character
-
setQuoteCharacter
public void setQuoteCharacter(char quoteCharacter)
Sets the value's surrounding quotes character. Default is the double-quote character (").- Parameters:
quoteCharacter- value's surrounding quotes character
-
getEscapeCharacter
public char getEscapeCharacter()
Gets the escape character.- Returns:
- escape character
-
setEscapeCharacter
public void setEscapeCharacter(char escapeCharacter)
Sets the escape character. Default is the backslash character (\).- Parameters:
escapeCharacter- escape character
-
isUseFirstRowAsFields
public boolean isUseFirstRowAsFields()
Whether to use the first row as field names for values.- Returns:
trueif using first row as field names.
-
setUseFirstRowAsFields
public void setUseFirstRowAsFields(boolean useFirstRowAsFields)
Sets whether to use the first row as field names for values. Default isfalse.- Parameters:
useFirstRowAsFields-trueif using first row as field names
-
getLinesToSkip
public int getLinesToSkip()
Gets how many lines to skip before starting to parse lines.- Returns:
- how many lines to skip
-
setLinesToSkip
public void setLinesToSkip(int linesToSkip)
Sets how many lines to skip before starting to parse lines. Default is 0.- Parameters:
linesToSkip- how many lines to skip
-
getReferenceColumn
public String getReferenceColumn()
-
setReferenceColumn
public void setReferenceColumn(String referenceColumn)
-
setContentColumns
public void setContentColumns(String... contentColumns)
-
setContentColumns
public void setContentColumns(List<String> contentColumns)
Sets content columns.- Parameters:
contentColumns- content columns- Since:
- 3.0.0
-
loadHandlerFromXML
protected void loadHandlerFromXML(XML xml)
Description copied from class:AbstractImporterHandlerLoads configuration settings specific to the implementing class.- Specified by:
loadHandlerFromXMLin classAbstractImporterHandler- Parameters:
xml- XML configuration
-
saveHandlerToXML
protected void saveHandlerToXML(XML xml)
Description copied from class:AbstractImporterHandlerSaves configuration settings specific to the implementing class.- Specified by:
saveHandlerToXMLin classAbstractImporterHandler- Parameters:
xml- the XML
-
equals
public boolean equals(Object other)
- Overrides:
equalsin classAbstractImporterHandler
-
hashCode
public int hashCode()
- Overrides:
hashCodein classAbstractImporterHandler
-
toString
public String toString()
- Overrides:
toStringin classAbstractImporterHandler
-
-