info.bioinfweb.jphyloio.formats.nexus.commandreaders

## Class AbstractKeyValueCommandReader

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

- All Implemented Interfaces:
    NexusCommandEventReader, NexusConstants
  Direct Known Subclasses:
    DimensionsReader, FormatReader, LinkReader

      public abstract class AbstractKeyValueCommandReader
      extends AbstractNexusCommandEventReader
      implements NexusConstants

- - ### Field Summary

    - ### 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`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractKeyValueCommandReader(java.lang.String commandName, java.lang.String[] validBlocks, NexusReaderStreamDataProvider nexusDocument)`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract boolean` | `addStoredEvents()` Implementations that need to store events, until all generated events are known should add such events to the queue, when this method is called.
    `protected boolean` | `doReadNextEvent()`
    `protected abstract 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.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`

- - ### Constructor Detail

    - #### AbstractKeyValueCommandReader

          public AbstractKeyValueCommandReader(java.lang.String commandName,
                                               java.lang.String[] validBlocks,
                                               NexusReaderStreamDataProvider nexusDocument)

  - ### Method Detail

    - #### processSubcommand

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

      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.
      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 abstract boolean addStoredEvents()

      Implementations that need to store events, until all generated events are known should add such events to the queue, when this method is called. It is guaranteed that this method will not be called by `AbstractKeyValueCommandReader`, before the whole command was processed.
      Returns:
        `true` if events were added by this method or `false` otherwise

    - #### doReadNextEvent

          protected boolean doReadNextEvent()
                                     throws java.io.IOException

      Specified by:
        `doReadNextEvent` in class `AbstractNexusCommandEventReader`
      Throws:
        `java.io.IOException`