Package htsjdk.tribble

# Class AsciiFeatureCodec<T extends Feature>

java.lang.Object
htsjdk.tribble.AbstractFeatureCodec<T,LineIterator>
htsjdk.tribble.AsciiFeatureCodec<T>

Type Parameters:
  `T` - The feature type this codec reads

All Implemented Interfaces:
  `FeatureCodec<T,LineIterator>`

Direct Known Subclasses:
  `AbstractVCFCodec`, `BEDCodec`, `IntervalListCodec`

public abstract class AsciiFeatureCodec<T extends Feature> extends AbstractFeatureCodec<T,LineIterator>
A convenience base class for codecs that want to read in features from ASCII lines.

This class overrides the general decode locs for streams and presents instead Strings to decode(String) and readHeader(LineReader) functions.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`AsciiFeatureCodec(Class<T> myClass)`

## Method Summary

Modifier and Type
Method
Description
`void`
`close(LineIterator lineIterator)`
Adapter method that closes the provided `FeatureCodec`.
`T`
`decode(LineIterator lineIterator)`
Convenience method.
`abstract T`
`decode(String s)`
`boolean`
`isDone(LineIterator lineIterator)`
Adapter method that assesses whether the provided `FeatureCodec` has more data.
`LocationAware`
`makeIndexableSourceFromStream(InputStream inputStream)`
Return a `FeatureCodec` for this `FeatureCodec` that implements `LocationAware`, and is thus suitable for use during indexing.
`LineIterator`
`makeSourceFromStream(InputStream bufferedInputStream)`
Generates a reader of type `FeatureCodec` appropriate for use by this codec from the generic input stream.
`abstract Object`
`readActualHeader(LineIterator reader)`
Read and return the header, or null if there is no header.
`FeatureCodecHeader`
`readHeader(LineIterator lineIterator)`
Read and return the header, or null if there is no header.

### Methods inherited from class htsjdk.tribble.AbstractFeatureCodec

`decodeLoc, getFeatureType`

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

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

### Methods inherited from interface htsjdk.tribble.FeatureCodec

`canDecode, getPathToDataFile, getTabixFormat`

## Constructor Details

### AsciiFeatureCodec

protected AsciiFeatureCodec(Class<T> myClass)

## Method Details

### close

public void close(LineIterator lineIterator)
Description copied from interface: `FeatureCodec`
Adapter method that closes the provided `FeatureCodec`.

### isDone

public boolean isDone(LineIterator lineIterator)
Description copied from interface: `FeatureCodec`
Adapter method that assesses whether the provided `FeatureCodec` has more data. True if it does, false otherwise.

### makeIndexableSourceFromStream

public LocationAware makeIndexableSourceFromStream(InputStream inputStream)
Description copied from interface: `FeatureCodec`
Return a `FeatureCodec` for this `FeatureCodec` that implements `LocationAware`, and is thus suitable for use during indexing. Like `FeatureCodec.makeSourceFromStream(java.io.InputStream)`, except the `LocationAware` compatibility is required for creating indexes. Implementers of this method must return a type that is both `LocationAware` as well as `FeatureCodec`. Note that this requirement cannot be enforced via the method signature due to limitations in Java's generic typing system. Instead, consumers should cast the call result into a `FeatureCodec` when applicable. NOTE: During the indexing process, the indexer passes the `FeatureCodec` to the codec to consume Features from the underlying `FeatureCodec`, one at a time, recording the Feature location via the `FeatureCodec`'s `LocationAware` interface. Therefore, it is essential that the `FeatureCodec` implementation, the `FeatureCodec.readHeader(SOURCE)` method, and the `FeatureCodec.decodeLoc(SOURCE)` method, which are used during indexing, not introduce any buffering that would that would advance the `FeatureCodec` more than a single feature (or the more than the size of the header, in the case of `FeatureCodec.readHeader(SOURCE)`).

### makeSourceFromStream

public LineIterator makeSourceFromStream(InputStream bufferedInputStream)
Description copied from interface: `FeatureCodec`
Generates a reader of type `FeatureCodec` appropriate for use by this codec from the generic input stream. Implementers should assume the stream is buffered.

### decode

public T decode(LineIterator lineIterator)
Convenience method. Decoding in ASCII files operates line-by-line, so obviate the need to call `Iterator.next()` in implementing classes and, instead, have them implement `decode(String)`.

Parameters:
  `lineIterator` - the input stream from which to decode the next record
Returns:
  Return the Feature encoded by the line, or null if the line does not represent a feature (e.g. is a comment)

### decode

public abstract T decode(String s)

See Also:
  - `decode(htsjdk.tribble.readers.LineIterator)`

### readHeader

public FeatureCodecHeader readHeader(LineIterator lineIterator) throws IOException
Description copied from interface: `FeatureCodec`
Read and return the header, or null if there is no header. Note: Implementers of this method must be careful to read exactly as much from `FeatureCodec` as needed to parse the header, and no more. Otherwise, data that might otherwise be fed into parsing a `Feature` may be lost.

Parameters:
  `lineIterator` - the source from which to decode the header
Returns:
  header object
Throws:
  `IOException`

### readActualHeader

public abstract Object readActualHeader(LineIterator reader)
Read and return the header, or null if there is no header.

Returns:
  the actual header data in the file, or null if none is available