info.bioinfweb.jphyloio.formats.nexus.commandreaders.characters

## Class FormatReader

- java.lang.Object
- - info.bioinfweb.jphyloio.formats.nexus.commandreaders.AbstractNexusCommandEventReader
  - - info.bioinfweb.jphyloio.formats.nexus.commandreaders.AbstractKeyValueCommandReader
    - - info.bioinfweb.jphyloio.formats.nexus.commandreaders.characters.FormatReader

- All Implemented Interfaces:
    NexusCommandEventReader, NexusConstants, ReadWriteConstants

      public class FormatReader
      extends AbstractKeyValueCommandReader
      implements NexusConstants, ReadWriteConstants

  Parser for the `Format` command in a `Characters`, `Unaligned` or `Data` block.
  Author:
    Ben Stöver

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `INFO_KEY_INTERLEAVE`
    `static java.lang.String` | `INFO_KEY_LABELS`
    `static java.lang.String` | `INFO_KEY_TOKENS_FORMAT`
    `static java.lang.String` | `INFO_KEY_TRANSPOSE`
    `static java.util.regex.Pattern` | `MIXED_DATA_TYPE_SINGLE_SET_PATTERN`
    `static java.util.regex.Pattern` | `MIXED_DATA_TYPE_VALUE_PATTERN`

    - ### Fields inherited from interface info.bioinfweb.jphyloio.formats.nexus.NexusConstants

      `ALTERNATIVE_END_COMMAND, BEGIN_COMMAND, BLOCK_NAME_CHARACTERS, BLOCK_NAME_DATA, BLOCK_NAME_NETWORKS, BLOCK_NAME_SETS, BLOCK_NAME_TAXA, BLOCK_NAME_TREES, BLOCK_NAME_UNALIGNED, CHARACTER_NAME_STATES_SEPARATOR, COMMAND_END, COMMAND_NAME_CHAR_LABELS, COMMAND_NAME_CHAR_SET, COMMAND_NAME_CHAR_STATE_LABELS, COMMAND_NAME_DIMENSIONS, COMMAND_NAME_FORMAT, COMMAND_NAME_LINK, COMMAND_NAME_MATRIX, COMMAND_NAME_NETWORK, COMMAND_NAME_TAX_LABELS, COMMAND_NAME_TAXON_SET, COMMAND_NAME_TITLE, COMMAND_NAME_TRANSLATE, COMMAND_NAME_TREE, COMMAND_NAME_TREE_SET, COMMENT_END, COMMENT_START, DIMENSIONS_SUBCOMMAND_NCHAR, DIMENSIONS_SUBCOMMAND_NEW_TAXA, DIMENSIONS_SUBCOMMAND_NTAX, ELEMENT_SEPARATOR, END_COMMAND, FIRST_LINE, FORMAT_NAME_STANDARD, FORMAT_NAME_VECTOR, FORMAT_SUBCOMMAND_DATA_TYPE, FORMAT_SUBCOMMAND_GAP_CHAR, FORMAT_SUBCOMMAND_INTERLEAVE, FORMAT_SUBCOMMAND_MATCH_CHAR, FORMAT_SUBCOMMAND_MISSING_CHAR, FORMAT_SUBCOMMAND_NO_LABELS, FORMAT_SUBCOMMAND_NO_TOKENS, FORMAT_SUBCOMMAND_SYMBOLS, FORMAT_SUBCOMMAND_TOKENS, FORMAT_SUBCOMMAND_TRANSPOSE, FORMAT_VALUE_CONTINUOUS_DATA_TYPE, FORMAT_VALUE_DNA_DATA_TYPE, FORMAT_VALUE_MIXED_DATA_TYPE, FORMAT_VALUE_NUCLEOTIDE_DATA_TYPE, FORMAT_VALUE_PROTEIN_DATA_TYPE, FORMAT_VALUE_RNA_DATA_TYPE, FORMAT_VALUE_STANDARD_DATA_TYPE, KEY_VALUE_SEPARATOR, MATRIX_POLYMORPHIC_TOKEN_END, MATRIX_POLYMORPHIC_TOKEN_START, MATRIX_UNCERTAINS_TOKEN_END, MATRIX_UNCERTAINS_TOKEN_START, NEXUS_FORMAT_NAME, NEXUS_NAMESPACE_PREFIX, NEXUS_PREDICATE_NAMESPACE, SET_END_INDEX_SYMBOL, SET_KEY_WORD_ALL, SET_KEY_WORD_REMAINING, SET_REGULAR_INTERVAL_SYMBOL, SET_TO_SYMBOL, SET_VECTOR_CONTAINED, SET_VECTOR_NOT_CONTAINED, UNTIL_WHITESPACE_COMMENT_COMMAND_EQUAL_PATTERN, UNTIL_WHITESPACE_COMMENT_COMMAND_PATTERN, VALUE_DELIMITER, WORD_DELIMITER`

    - ### Fields inherited from interface info.bioinfweb.jphyloio.ReadWriteConstants

      `ATTRIBUTE_STRING_KEY, ATTRIBUTES_NAMESPACE_FOLDER, DATA_TYPE_NAMESPACE_FOLDER, DATA_TYPE_SIMPLE_VALUE_LIST, DEFAULT_CHAR_SET_ID_PREFIX, DEFAULT_CHARACTER_DEFINITION_ID_PREFIX, DEFAULT_EDGE_ID_PREFIX, DEFAULT_GENERAL_ID_PREFIX, DEFAULT_MATRIX_ID_PREFIX, DEFAULT_MAX_COMMENT_LENGTH, DEFAULT_MAX_TOKENS_TO_READ, DEFAULT_META_ID_PREFIX, DEFAULT_NETWORK_ID_PREFIX, DEFAULT_NODE_EDGE_SET_ID_PREFIX, DEFAULT_NODE_ID_PREFIX, DEFAULT_OTU_ID_PREFIX, DEFAULT_OTU_LIST_ID_PREFIX, DEFAULT_OTU_SET_ID_PREFIX, DEFAULT_SEQUENCE_ID_PREFIX, DEFAULT_SEQUENCE_SET_ID_PREFIX, DEFAULT_TOKEN_DEFINITION_ID_PREFIX, DEFAULT_TOKEN_SET_ID_PREFIX, DEFAULT_TREE_ID_PREFIX, DEFAULT_TREE_NETWORK_GROUP_ID_PREFIX, DEFAULT_TREE_NETWORK_SET_ID_PREFIX, JPHYLOIO_ATTRIBUTES_NAMESPACE, JPHYLOIO_ATTRIBUTES_PREFIX, JPHYLOIO_DATA_TYPE_NAMESPACE, JPHYLOIO_DATA_TYPE_PREFIX, JPHYLOIO_FORMATS_NAMESPACE_PREFIX, JPHYLOIO_GENERAL_NAMESPACE, JPHYLOIO_NAMESPACE_PREFIX, JPHYLOIO_PREDICATE_NAMESPACE, JPHYLOIO_PREDICATE_PREFIX, PREDICATE_CHARACTER_COUNT, PREDICATE_EDGE_LENGTH, PREDICATE_EDGE_SOURCE_NODE, PREDICATE_EDGE_TARGET_NODE, PREDICATE_HAS_CUSTOM_XML, PREDICATE_HAS_LITERAL_METADATA, PREDICATE_HAS_RESOURCE_METADATA, PREDICATE_IS_CROSSLINK, PREDICATE_NAMESPACE_FOLDER, PREDICATE_PART_SEPERATOR, PREDICATE_SEQUENCE_COUNT, RESERVED_ID_PREFIX`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FormatReader(NexusReaderStreamDataProvider nexusDocument)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected boolean` | `addStoredEvents()` Adds the stored token set event with nested single token definition events to the queue, if present.
    `protected boolean` | `processSubcommand(KeyValueInformation info)` Inherited classes should implement this method by adding one or more events to the queue, which have been generated from the specified key value pair.

    - ### Methods inherited from class info.bioinfweb.jphyloio.formats.nexus.commandreaders.AbstractKeyValueCommandReader

      `doReadNextEvent`

    - ### Methods inherited from class info.bioinfweb.jphyloio.formats.nexus.commandreaders.AbstractNexusCommandEventReader

      `consumeWhiteSpaceAndCommentsToBuffer, getCommandName, getStreamDataProvider, getValidBlocks, isAllDataProcessed, readNextEvent, setAllDataProcessed`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### INFO_KEY_TOKENS_FORMAT

          public static final java.lang.String INFO_KEY_TOKENS_FORMAT

      See Also:
        Constant Field Values

    - #### INFO_KEY_INTERLEAVE

          public static final java.lang.String INFO_KEY_INTERLEAVE

      See Also:
        Constant Field Values

    - #### INFO_KEY_LABELS

          public static final java.lang.String INFO_KEY_LABELS

      See Also:
        Constant Field Values

    - #### INFO_KEY_TRANSPOSE

          public static final java.lang.String INFO_KEY_TRANSPOSE

      See Also:
        Constant Field Values

    - #### MIXED_DATA_TYPE_VALUE_PATTERN

          public static final java.util.regex.Pattern MIXED_DATA_TYPE_VALUE_PATTERN

    - #### MIXED_DATA_TYPE_SINGLE_SET_PATTERN

          public static final java.util.regex.Pattern MIXED_DATA_TYPE_SINGLE_SET_PATTERN

  - ### Constructor Detail

    - #### FormatReader

          public FormatReader(NexusReaderStreamDataProvider nexusDocument)

  - ### Method Detail

    - #### processSubcommand

          protected boolean processSubcommand(KeyValueInformation info)
                                       throws java.io.IOException

      Description copied from class: `AbstractKeyValueCommandReader`
      Inherited classes should implement this method by adding one or more events to the queue, which have been generated from the specified key value pair.
      Specified by:
        `processSubcommand` in class `AbstractKeyValueCommandReader`
      Parameters:
        `info` - the key and value
      Returns:
        `true` if at least one event has been added to the queue by this or `false` otherwise
      Throws:
        `java.io.IOException` - if an exception occurs when trying to read from the underlying stream

    - #### addStoredEvents

          protected boolean addStoredEvents()

      Adds the stored token set event with nested single token definition events to the queue, if present.

      In the case of MrBayes `MIXED` data type more than one token set definition event may be added. The stored single token definition events are nested into each of these token set definition event, except for events with the meaning `CharacterSymbolMeaning.CHARACTER_STATE`, which are removed in this case, because they may not fit to all defined token sets.

      If only single token definition events could be created from the format command and no token set, no events will be added.

      Specified by:
        `addStoredEvents` in class `AbstractKeyValueCommandReader`
      Returns:
        `true` if events were added by this method or `false` otherwise
      See Also:
        `AbstractKeyValueCommandReader.addStoredEvents()`