Class AbstractCsvMapper<T>
- java.lang.Object
-
- com.github.skjolber.stcsv.databinder.AbstractCsvMapper<T>
-
- Direct Known Subclasses:
CsvMapper,CsvMapper2
public abstract class AbstractCsvMapper<T> extends Object
Dynamic CSV parser generator. Adapts the underlying implementation according to the first (header) line.
Uses ASM to build the parsers.
Thread-safe.
-
-
Field Summary
-
Constructor Summary
Constructors Constructor Description AbstractCsvMapper(Class<T> cls, char divider, char quoteCharacter, char escapeCharacter, List<AbstractColumn> columns, boolean skipEmptyLines, boolean skipComments, boolean skippableFieldsWithoutLinebreaks, ClassLoader classLoader, int bufferLength)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidaddConstructors(org.objectweb.asm.ClassWriter classWriter, String subClassInternalName)protected voidaddConstructors(org.objectweb.asm.ClassWriter classWriter, String subClassInternalName, String intermediateInternalName)protected voidaddMethod(org.objectweb.asm.ClassWriter classWriter, String subClassInternalName, AbstractColumn[] mapping, boolean carriageReturns, boolean inline, int lastIndex, int firstIndex)protected voidaddStatics(org.objectweb.asm.ClassWriter classWriter, AbstractColumn[] columns, String classInternalName, String className)Class<? extends AbstractCsvReader<T>>createDefaultReaderClass(boolean carriageReturns)Class<? extends AbstractCsvReader<T>>createReaderClass(boolean carriageReturns, String header)Class<? extends AbstractCsvReader<T>>createReaderClass(boolean carriageReturns, List<String> csvFileFieldNames)protected intgetDivider()static StringgetInternalName(Class<?> cls)static StringgetInternalName(String className)protected List<String>parseColumnNames(String row)protected voidsaveCurrentOffset(org.objectweb.asm.MethodVisitor mv, String superClassInternalName, int currentOffsetIndex)protected voidskipColumns(org.objectweb.asm.MethodVisitor mv, int count)protected voidskipToLinebreak(org.objectweb.asm.MethodVisitor mv)protected Stringwrite(org.objectweb.asm.ClassWriter classWriter, List<String> csvFileFieldNames, boolean carriageReturns)protected voidwriteReaderConstructor(org.objectweb.asm.ClassWriter classWriter, String subClassInternalName, String intermediateInternalName)protected voidwriteReaderWithBufferConstructor(org.objectweb.asm.ClassWriter classWriter, String subClassInternalName, String intermediateInternalName)protected voidwriteSkipComments(org.objectweb.asm.MethodVisitor mv, String subClassInternalName)protected voidwriteSkipEmptyLines(org.objectweb.asm.MethodVisitor mv, String subClassInternalName, boolean carriageReturns)protected voidwriteSkipEmptyOrCommentedLines(org.objectweb.asm.MethodVisitor mv, String subClassInternalName, boolean carriageReturns)protected abstract voidwriteTriConsumerVariable(String subClassInternalName, org.objectweb.asm.MethodVisitor mv)
-
-
-
Field Detail
-
VAR_CURRENT_OFFSET
public static final int VAR_CURRENT_OFFSET
- See Also:
- Constant Field Values
-
VAR_CURRENT_ARRAY
public static final int VAR_CURRENT_ARRAY
- See Also:
- Constant Field Values
-
VAR_OBJECT
public static final int VAR_OBJECT
- See Also:
- Constant Field Values
-
VAR_START
public static final int VAR_START
- See Also:
- Constant Field Values
-
VAR_RANGE
public static final int VAR_RANGE
- See Also:
- Constant Field Values
-
VAR_INTERMEDIATE_OBJECT
public static final int VAR_INTERMEDIATE_OBJECT
- See Also:
- Constant Field Values
-
GENERATED_CLASS_SIMPLE_NAME
protected static final String GENERATED_CLASS_SIMPLE_NAME
- See Also:
- Constant Field Values
-
GENERATED_CLASS_FULL_NAME
protected static final String GENERATED_CLASS_FULL_NAME
- See Also:
- Constant Field Values
-
GENERATED_CLASS_FULL_INTERNAL
protected static final String GENERATED_CLASS_FULL_INTERNAL
- See Also:
- Constant Field Values
-
superClassInternalName
protected static final String superClassInternalName
-
csvStaticInitializer
protected static final String csvStaticInitializer
-
ignoredSeperateQuoteAndEscapeCharacterColumnName
protected static final String ignoredSeperateQuoteAndEscapeCharacterColumnName
-
ignoredIdenticalQuoteAndEscapeCharacterColumnName
protected static final String ignoredIdenticalQuoteAndEscapeCharacterColumnName
-
counter
protected static AtomicInteger counter
-
divider
protected int divider
-
quoteCharacter
protected int quoteCharacter
-
escapeCharacter
protected int escapeCharacter
-
mappedClassInternalName
protected String mappedClassInternalName
-
keys
protected Map<String,AbstractColumn> keys
-
columns
protected List<AbstractColumn> columns
-
skipEmptyLines
protected final boolean skipEmptyLines
-
skipComments
protected final boolean skipComments
-
skippableFieldsWithoutLinebreaks
protected final boolean skippableFieldsWithoutLinebreaks
-
bufferLength
protected final int bufferLength
-
currentOffsetIndex
protected static final int currentOffsetIndex
Note: Stack variable types are fixed throughout the application, as below. The range index is dual purpose as end index for trimming quoted content.- See Also:
- Constant Field Values
-
currentArrayIndex
protected static final int currentArrayIndex
- See Also:
- Constant Field Values
-
objectIndex
protected static final int objectIndex
- See Also:
- Constant Field Values
-
startIndex
protected static final int startIndex
- See Also:
- Constant Field Values
-
rangeIndex
protected static final int rangeIndex
- See Also:
- Constant Field Values
-
intermediateIndex
protected static final int intermediateIndex
- See Also:
- Constant Field Values
-
factories
protected final Map<String,DefaultStaticCsvMapper<T>> factories
-
classLoader
protected final ClassLoader classLoader
-
biConsumer
protected final boolean biConsumer
-
triConsumer
protected final boolean triConsumer
-
-
Constructor Detail
-
AbstractCsvMapper
public AbstractCsvMapper(Class<T> cls, char divider, char quoteCharacter, char escapeCharacter, List<AbstractColumn> columns, boolean skipEmptyLines, boolean skipComments, boolean skippableFieldsWithoutLinebreaks, ClassLoader classLoader, int bufferLength)
-
-
Method Detail
-
getDivider
protected int getDivider()
-
createDefaultReaderClass
public Class<? extends AbstractCsvReader<T>> createDefaultReaderClass(boolean carriageReturns) throws Exception
- Throws:
Exception
-
createReaderClass
public Class<? extends AbstractCsvReader<T>> createReaderClass(boolean carriageReturns, String header) throws Exception
- Throws:
Exception
-
createReaderClass
public Class<? extends AbstractCsvReader<T>> createReaderClass(boolean carriageReturns, List<String> csvFileFieldNames) throws Exception
- Throws:
Exception
-
write
protected String write(org.objectweb.asm.ClassWriter classWriter, List<String> csvFileFieldNames, boolean carriageReturns)
-
addMethod
protected void addMethod(org.objectweb.asm.ClassWriter classWriter, String subClassInternalName, AbstractColumn[] mapping, boolean carriageReturns, boolean inline, int lastIndex, int firstIndex)
-
writeTriConsumerVariable
protected abstract void writeTriConsumerVariable(String subClassInternalName, org.objectweb.asm.MethodVisitor mv)
-
addConstructors
protected void addConstructors(org.objectweb.asm.ClassWriter classWriter, String subClassInternalName)
-
writeSkipComments
protected void writeSkipComments(org.objectweb.asm.MethodVisitor mv, String subClassInternalName)
-
skipToLinebreak
protected void skipToLinebreak(org.objectweb.asm.MethodVisitor mv)
-
skipColumns
protected void skipColumns(org.objectweb.asm.MethodVisitor mv, int count)
-
writeSkipEmptyOrCommentedLines
protected void writeSkipEmptyOrCommentedLines(org.objectweb.asm.MethodVisitor mv, String subClassInternalName, boolean carriageReturns)
-
writeSkipEmptyLines
protected void writeSkipEmptyLines(org.objectweb.asm.MethodVisitor mv, String subClassInternalName, boolean carriageReturns)
-
addStatics
protected void addStatics(org.objectweb.asm.ClassWriter classWriter, AbstractColumn[] columns, String classInternalName, String className)
-
addConstructors
protected void addConstructors(org.objectweb.asm.ClassWriter classWriter, String subClassInternalName, String intermediateInternalName)
-
writeReaderWithBufferConstructor
protected void writeReaderWithBufferConstructor(org.objectweb.asm.ClassWriter classWriter, String subClassInternalName, String intermediateInternalName)
-
writeReaderConstructor
protected void writeReaderConstructor(org.objectweb.asm.ClassWriter classWriter, String subClassInternalName, String intermediateInternalName)
-
saveCurrentOffset
protected void saveCurrentOffset(org.objectweb.asm.MethodVisitor mv, String superClassInternalName, int currentOffsetIndex)
-
-