Class FixedWidthParser


public class FixedWidthParser extends AbstractParser<FixedWidthParserSettings>
A fast and flexible fixed-with parser implementation.
See Also:
  • Field Details

    • lengths

      private int[] lengths
    • rootLengths

      private int[] rootLengths
    • ignore

      private boolean[] ignore
    • rootIgnore

      private boolean[] rootIgnore
    • alignments

      private FieldAlignment[] alignments
    • rootAlignments

      private FieldAlignment[] rootAlignments
    • paddings

      private char[] paddings
    • rootPaddings

      private char[] rootPaddings
    • keepPaddingFlags

      private Boolean[] keepPaddingFlags
    • rootKeepPaddingFlags

      private Boolean[] rootKeepPaddingFlags
    • lookaheadFormats

      private final Lookup[] lookaheadFormats
    • lookbehindFormats

      private final Lookup[] lookbehindFormats
    • lookupFormat

      private Lookup lookupFormat
    • lookbehindFormat

      private Lookup lookbehindFormat
    • maxLookupLength

      private int maxLookupLength
    • skipToNewLine

      private final boolean skipToNewLine
    • recordEndsOnNewLine

      private final boolean recordEndsOnNewLine
    • skipEmptyLines

      private final boolean skipEmptyLines
    • keepPadding

      private final boolean keepPadding
    • useDefaultPadding

      private boolean useDefaultPadding
    • defaultPadding

      private final char defaultPadding
    • padding

      private char padding
    • alignment

      private FieldAlignment alignment
    • newLine

      private final char newLine
    • length

      private int length
    • initializeLookaheadInput

      private boolean initializeLookaheadInput
    • lookaheadInput

      private LookaheadCharInputReader lookaheadInput
    • wildcard

      private final char wildcard
  • Constructor Details

    • FixedWidthParser

      public FixedWidthParser(FixedWidthParserSettings settings)
      The FixedWidthParser supports all settings provided by FixedWidthParserSettings, and requires this configuration to be properly initialized.
      Parameters:
      settings - the parser configuration
  • Method Details

    • createParsingContext

      protected ParsingContext createParsingContext()
      Overrides:
      createParsingContext in class AbstractParser<FixedWidthParserSettings>
    • parseRecord

      protected void parseRecord()
      Description copied from class: AbstractParser
      Parser-specific implementation for reading a single record from the input.

      The AbstractParser handles the initialization and processing of the input until it is ready to be parsed.

      It then delegates the input to the parser-specific implementation defined by AbstractParser.parseRecord(). In general, an implementation of AbstractParser.parseRecord() will perform the following steps:

      • Test the character stored in ch and take some action on it (e.g. is while (ch != '\n'){doSomething()})
      • Request more characters by calling ch = input.nextChar();
      • Append the desired characters to the output by executing, for example, output.appender.append(ch)
      • Notify a value of the record has been fully read by executing output.valueParsed(). This will clear the output appender (CharAppender) so the next call to output.appender.append(ch) will be store the character of the next parsed value
      • Rinse and repeat until all values of the record are parsed

      Once the AbstractParser.parseRecord() returns, the AbstractParser takes over and handles the information (generally, reorganizing it and passing it on to a RowProcessor).

      After the record processing, the AbstractParser reads the next characters from the input, delegating control again to the parseRecord() implementation for processing of the next record.

      This cycle repeats until the reading process is stopped by the user, the input is exhausted, or an error happens.

      In case of errors, the unchecked exception TextParsingException will be thrown and all resources in use will be closed automatically unless CommonParserSettings.isAutoClosingEnabled() evaluates to false. The exception should contain the cause and more information about where in the input the error happened.

      Specified by:
      parseRecord in class AbstractParser<FixedWidthParserSettings>
      See Also:
    • skipToNewLine

      private void skipToNewLine()
    • skipPadding

      private void skipPadding(boolean lastFieldOfRecord)
    • skipWhitespace

      private void skipWhitespace(boolean lastFieldOfRecord, boolean ignorePadding)
    • readValueUntilNewLine

      private void readValueUntilNewLine(boolean ignorePadding)
    • readValue

      private void readValue(boolean ignorePadding)