Class AnnotationParser

  • All Implemented Interfaces:
    AutoCloseable, BfsParser

    public class AnnotationParser
    extends Object
    implements BfsParser
    Parser implementation that parses a BFS annotation files. Before parsing is started the stream to parse must be specified by calling setInputStream(InputStream). The actual parsing can be done in two different ways:
    • "Manual" parsing, using the parseToBof() and nextData() methods.
    • Event-based parsing using the parse(EventHandler) method. This parser issues the following events: The AnnotationModel class implements a simple event handler that collects the information from the annotations file and provides methods for accessing it.

    This class may be subclassed to provide customized behaviour.

    Version:
    2.15
    Author:
    Nicklas
    Last modified
    $Date: 2010-04-20 10:02:16 +0200 (ti, 20 apr 2010) $
    • Field Detail

      • HEADER_EVENT

        public static final EventType<String[]> HEADER_EVENT
        Event type that is issued when the header line is found. The event data is a string array with the headers, including the ID header.
      • DATA_EVENT

        public static final EventType<String[]> DATA_EVENT
        Event thep that is issued for each data line. The event data is a string array with that data, including the ID column.
      • END_OF_FILE_EVENT

        public static final EventType<Object> END_OF_FILE_EVENT
        Event type that is issued when the end-of-file had been reached. No event data is submitted.
      • filename

        private String filename
      • fileSize

        private long fileSize
      • numColumns

        private int numColumns
    • Constructor Detail

      • AnnotationParser

        public AnnotationParser()
        Create a new annotation parser.
    • Method Detail

      • create

        public static AnnotationParser create​(InputStream in,
                                              String filename,
                                              long size)
        Utility method for creating an annotation parser when you have an input stream.
        Parameters:
        in - The input stream the parser should read from
        filename - Optional, the name of the file the input stream is reading from
        size - The size of the file in bytes, or -1 if not known
      • create

        public static AnnotationParser create​(File file)
        Utility method for creating an annotation parser for a file in the BASE file system.
        Parameters:
        file - The file in the BASE file system
      • create

        public static AnnotationParser create​(File file)
                                       throws IOException
        Utility method for creating an annotation parser for a file in the local file system.
        Parameters:
        file - The file in the local file system
        Throws:
        IOException
      • decodeValue

        public String decodeValue​(String value)
        Decode an encoded value. Values are encoded/decoded with a TabCrLfEncoderDecoder.
        Parameters:
        value - The encoded value
        Returns:
        The decoded value
      • getFilename

        public String getFilename()
        Get the file name that this parser is reading from.
        Specified by:
        getFilename in interface BfsParser
        Returns:
        The file name or null if not known
      • setFilename

        public void setFilename​(String filename)
        Set the file name that this parser is reading from.
      • getFileSize

        public long getFileSize()
        Get the size in bytes of the file that this parser is reading from.
        Specified by:
        getFileSize in interface BfsParser
        Returns:
        The size or -1 if not known
      • setFileSize

        public void setFileSize​(long fileSize)
        Set the size of the file or -1 if not known.
      • close

        public void close()
        Description copied from interface: BfsParser
        Close the parser and relase underlying system resources that are associated with it.
        Specified by:
        close in interface AutoCloseable
        Specified by:
        close in interface BfsParser
      • setInputStream

        public void setInputStream​(InputStream in)
        Set the input stream that should be parsed. This will also reset the parser. All information from a previously parsed file is lost.
        Parameters:
        in - The stream to parse (in UTF-8 format)
      • parse

        public void parse​(EventHandler handler)
                   throws IOException
        Parse the input stream and notify the specified event handler with events. The event handler is responsible for keeping track of and storing the data of interest.
        Parameters:
        handler - An event handler
        Throws:
        IOException - If there is an error reading the stream data
        NullPointerException - If the stream or event handler is null
      • parseToBof

        public String[] parseToBof()
                            throws IOException
        Parse the header line of the annotations file. This method can only be called once on a given input stream. To parse a second file, call setInputStream(InputStream) again to reset the parser.
        Returns:
        An array with the column headers
        Throws:
        IOException - If the header line is not found or if there is any other IO error
        IllegalStateException - If the parsing has already started
        NullPointerException - If no input stream has been specified
      • getCurrentLine

        public int getCurrentLine()
        Description copied from interface: BfsParser
        Get the current line number.
        Specified by:
        getCurrentLine in interface BfsParser
        Returns:
        The line number, starting at 1 for the first line in the file, or -1 if not known
      • getParsedBytes

        public long getParsedBytes()
        Description copied from interface: BfsParser
        Get the number of parsed bytes so far.
        Specified by:
        getParsedBytes in interface BfsParser
        Returns:
        The number of bytes that has been parsed, or -1 if not known
      • createFlatFileParser

        protected FlatFileParser createFlatFileParser​(InputStream in)
        Create a new flat file parser that can parse BFS annotation files. This method should set all regular expressions that are needed to parse the stream (assumed to be UTF-8).
      • handleHeader

        protected void handleHeader​(EventHandler handler,
                                    String[] headers)
        Handle the header-found event. The default implemention sends a HEADER_EVENT to the event handler
        Parameters:
        handler - The event handler from the parse(EventHandler) method
        headers - An array with the column headers
      • handleData

        protected void handleData​(EventHandler handler,
                                  String[] data)
        Handle the data event. The default implemention sends a DATA_EVENT to the event handler
        Parameters:
        handler - The event handler from the parse(EventHandler) method
        data - An array with the data
      • handleEndOfFile

        protected void handleEndOfFile​(EventHandler handler)
        Handle the end-of-file event. The default implementation sends an END_OF_FILE_EVENT notification to the event handler.
        Parameters:
        handler - The event handler from the parse(EventHandler) method