FEATURE_TYPE
- The type of Feature
this codec generatesSOURCE
- The type of the data source this codec reads frompublic interface FeatureCodec<FEATURE_TYPE extends Feature,SOURCE>
#readHeader(SOURCE)
- Reads the header, provided a SOURCE
pointing at the beginning of the source input.
#decode(SOURCE)
- Reads a Feature
record, provided a SOURCE
pointing at the beginning of a record within the
source input.
Note that it's not safe to carry state about the SOURCE
within the codec. There's no guarantee about its state between calls.Modifier and Type | Method and Description |
---|---|
boolean |
canDecode(java.lang.String path)
This function returns true iff the File potentialInput can be parsed by this
codec.
|
void |
close(SOURCE source)
Adapter method that closes the provided
SOURCE . |
FEATURE_TYPE |
decode(SOURCE source)
Decode a single
Feature from the SOURCE , reading no further in the underlying source than beyond that feature. |
Feature |
decodeLoc(SOURCE source)
Decode a line to obtain just its FeatureLoc for indexing -- contig, start, and stop.
|
java.lang.Class<FEATURE_TYPE> |
getFeatureType()
This function returns the object the codec generates.
|
boolean |
isDone(SOURCE source)
Adapter method that assesses whether the provided
SOURCE has more data. |
LocationAware |
makeIndexableSourceFromStream(java.io.InputStream bufferedInputStream)
Generates a
LocationAware reader of type SOURCE . |
SOURCE |
makeSourceFromStream(java.io.InputStream bufferedInputStream)
Generates a reader of type
SOURCE appropriate for use by this codec from the generic input stream. |
FeatureCodecHeader |
readHeader(SOURCE source)
Read and return the header, or null if there is no header.
|
Feature decodeLoc(SOURCE source) throws java.io.IOException
source
- the input stream from which to decode the next recordjava.io.IOException
FEATURE_TYPE decode(SOURCE source) throws java.io.IOException
Feature
from the SOURCE
, reading no further in the underlying source than beyond that feature.source
- the input stream from which to decode the next recordjava.io.IOException
FeatureCodecHeader readHeader(SOURCE source) throws java.io.IOException
SOURCE
as needed to parse the header, and no
more. Otherwise, data that might otherwise be fed into parsing a Feature
may be lost.source
- the source from which to decode the headerjava.io.IOException
java.lang.Class<FEATURE_TYPE> getFeatureType()
This function returns the object the codec generates. This is allowed to be Feature in the case where conditionally different types are generated. Be as specific as you can though.
This function is used by reflections based tools, so we can know the underlying type
SOURCE makeSourceFromStream(java.io.InputStream bufferedInputStream)
SOURCE
appropriate for use by this codec from the generic input stream. Implementers should
assume the stream is buffered.LocationAware makeIndexableSourceFromStream(java.io.InputStream bufferedInputStream)
LocationAware
reader of type SOURCE
. Like 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 SOURCE
. 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 SOURCE
when applicable.boolean isDone(SOURCE source)
SOURCE
has more data. True if it does, false otherwise.void close(SOURCE source)
SOURCE
.boolean canDecode(java.lang.String path)
This function returns true iff the File potentialInput can be parsed by this codec. Note that checking the file's extension is a perfectly acceptable implementation of this method and file contents only rarely need to be checked.
There is an assumption that there's never a situation where two different Codecs return true for the same file. If this occurs, the recommendation would be to error out.
Note this function must never throw an error. All errors should be trapped and false returned.path
- the file to test for parsability with this codec