From b9645987e77b06934a27ca7a0b2cb5e5a6b03e0d Mon Sep 17 00:00:00 2001 From: Louis Bergelson Date: Tue, 21 Feb 2017 16:44:12 -0500 Subject: [PATCH] automatically adding @Override annotations added the @Override annotation everywhere it was missing using autoinspection --- .../java/htsjdk/samtools/AbstractBAMFileIndex.java | 3 +++ .../java/htsjdk/samtools/AsyncSAMFileWriter.java | 2 ++ src/main/java/htsjdk/samtools/BAMFileReader.java | 19 +++++++++++++++++++ src/main/java/htsjdk/samtools/BAMFileSpan.java | 4 ++++ src/main/java/htsjdk/samtools/BAMFileWriter.java | 4 ++++ src/main/java/htsjdk/samtools/BAMIndex.java | 1 + src/main/java/htsjdk/samtools/BAMIndexWriter.java | 1 + src/main/java/htsjdk/samtools/BAMRecord.java | 1 + src/main/java/htsjdk/samtools/BAMRecordCodec.java | 5 +++++ src/main/java/htsjdk/samtools/Bin.java | 1 + src/main/java/htsjdk/samtools/BinList.java | 4 ++++ .../java/htsjdk/samtools/BinaryBAMIndexWriter.java | 3 +++ .../java/htsjdk/samtools/BinningIndexContent.java | 4 ++++ .../java/htsjdk/samtools/CachingBAMFileIndex.java | 4 ++++ src/main/java/htsjdk/samtools/Chunk.java | 2 ++ .../htsjdk/samtools/ComparableSamRecordIterator.java | 1 + .../htsjdk/samtools/CoordinateSortedPairInfoMap.java | 5 +++++ .../htsjdk/samtools/DefaultSAMRecordFactory.java | 2 ++ .../java/htsjdk/samtools/DiskBasedBAMFileIndex.java | 2 ++ .../java/htsjdk/samtools/DuplicateSetIterator.java | 4 ++++ .../htsjdk/samtools/MergingSamRecordIterator.java | 7 +++++++ src/main/java/htsjdk/samtools/QueryInterval.java | 1 + src/main/java/htsjdk/samtools/SAMFileHeader.java | 2 ++ src/main/java/htsjdk/samtools/SAMFileWriter.java | 1 + src/main/java/htsjdk/samtools/SAMFileWriterImpl.java | 4 ++++ src/main/java/htsjdk/samtools/SAMProgramRecord.java | 2 ++ .../java/htsjdk/samtools/SAMReadGroupRecord.java | 2 ++ .../samtools/SAMRecordCoordinateComparator.java | 2 ++ .../samtools/SAMRecordDuplicateComparator.java | 2 ++ .../samtools/SAMRecordQueryNameComparator.java | 2 ++ .../java/htsjdk/samtools/SAMRecordSetBuilder.java | 5 +++++ src/main/java/htsjdk/samtools/SAMSequenceRecord.java | 2 ++ src/main/java/htsjdk/samtools/SAMTextReader.java | 20 ++++++++++++++++++++ src/main/java/htsjdk/samtools/SAMTextWriter.java | 4 ++++ .../java/htsjdk/samtools/SamFileHeaderMerger.java | 3 +++ src/main/java/htsjdk/samtools/SamFileValidator.java | 15 +++++++++++++++ src/main/java/htsjdk/samtools/SamPairUtil.java | 3 +++ src/main/java/htsjdk/samtools/SamReader.java | 6 ++++++ src/main/java/htsjdk/samtools/TextTagCodec.java | 3 +++ .../java/htsjdk/samtools/TextualBAMIndexWriter.java | 3 +++ .../samtools/cram/encoding/ByteArrayLenEncoding.java | 2 ++ .../cram/encoding/ByteArrayStopEncoding.java | 2 ++ .../cram/encoding/ExternalByteArrayEncoding.java | 2 ++ .../samtools/cram/encoding/ExternalByteEncoding.java | 2 ++ .../cram/encoding/ExternalIntegerEncoding.java | 2 ++ .../samtools/cram/encoding/ExternalLongEncoding.java | 2 ++ .../cram/encoding/GolombRiceIntegerCodec.java | 1 + .../samtools/cram/encoding/huffman/HuffmanTree.java | 1 + .../cram/encoding/readfeatures/BaseQualityScore.java | 1 + .../cram/encoding/readfeatures/HardClip.java | 2 ++ .../cram/encoding/readfeatures/InsertBase.java | 2 ++ .../cram/encoding/readfeatures/Insertion.java | 2 ++ .../samtools/cram/encoding/readfeatures/Padding.java | 2 ++ .../cram/encoding/readfeatures/ReadBase.java | 1 + .../samtools/cram/encoding/readfeatures/RefSkip.java | 2 ++ .../cram/encoding/readfeatures/SoftClip.java | 2 ++ .../cram/encoding/readfeatures/Substitution.java | 2 ++ .../htsjdk/samtools/cram/io/CountingInputStream.java | 8 ++++++++ .../samtools/cram/io/DefaultBitInputStream.java | 4 ++++ .../samtools/cram/io/DefaultBitOutputStream.java | 4 ++++ .../htsjdk/samtools/cram/ref/ReferenceSource.java | 1 + src/main/java/htsjdk/samtools/fastq/FastqReader.java | 4 ++++ src/main/java/htsjdk/samtools/fastq/FastqWriter.java | 1 + .../java/htsjdk/samtools/filter/AggregateFilter.java | 2 ++ .../java/htsjdk/samtools/filter/AlignedFilter.java | 2 ++ .../htsjdk/samtools/filter/DuplicateReadFilter.java | 2 ++ .../filter/FailsVendorReadQualityFilter.java | 2 ++ .../htsjdk/samtools/filter/FilteringSamIterator.java | 4 ++++ .../java/htsjdk/samtools/filter/IntervalFilter.java | 2 ++ .../samtools/filter/IntervalKeepPairFilter.java | 2 ++ .../samtools/filter/NotPrimaryAlignmentFilter.java | 2 ++ .../java/htsjdk/samtools/filter/ReadNameFilter.java | 2 ++ .../samtools/filter/SecondaryAlignmentFilter.java | 2 ++ .../filter/SecondaryOrSupplementaryFilter.java | 2 ++ .../htsjdk/samtools/filter/SolexaNoiseFilter.java | 2 ++ src/main/java/htsjdk/samtools/filter/TagFilter.java | 2 ++ .../samtools/filter/WholeReadClippedFilter.java | 1 + .../java/htsjdk/samtools/metrics/StringHeader.java | 1 + .../java/htsjdk/samtools/metrics/VersionHeader.java | 1 + .../reference/AbstractFastaSequenceFile.java | 4 ++++ .../htsjdk/samtools/reference/FastaSequenceFile.java | 3 +++ .../samtools/reference/FastaSequenceIndex.java | 1 + .../samtools/reference/IndexedFastaSequenceFile.java | 6 ++++++ .../samtools/reference/ReferenceSequenceFile.java | 1 + .../reference/ReferenceSequenceFileWalker.java | 1 + .../seekablestream/SeekableBufferedStream.java | 6 ++++++ .../samtools/seekablestream/SeekableFTPStream.java | 4 ++++ .../samtools/seekablestream/SeekableFileStream.java | 7 +++++++ .../samtools/seekablestream/SeekableHTTPStream.java | 7 +++++++ .../samtools/seekablestream/SeekableStream.java | 2 ++ src/main/java/htsjdk/samtools/sra/SRALazyRecord.java | 1 + .../htsjdk/samtools/util/AbstractAsyncWriter.java | 2 ++ .../java/htsjdk/samtools/util/AbstractLocusInfo.java | 2 ++ .../htsjdk/samtools/util/AbstractLocusIterator.java | 5 +++++ src/main/java/htsjdk/samtools/util/AsciiWriter.java | 3 +++ .../util/AsyncBlockCompressedInputStream.java | 1 + src/main/java/htsjdk/samtools/util/BinaryCodec.java | 1 + .../samtools/util/BlockCompressedInputStream.java | 5 +++++ .../samtools/util/BlockCompressedOutputStream.java | 1 + .../htsjdk/samtools/util/BufferedLineReader.java | 4 ++++ .../java/htsjdk/samtools/util/CloseableIterator.java | 1 + .../htsjdk/samtools/util/DelegatingIterator.java | 4 ++++ .../java/htsjdk/samtools/util/DiskBackedQueue.java | 3 +++ .../htsjdk/samtools/util/EdgingRecordAndOffset.java | 2 ++ .../java/htsjdk/samtools/util/FastLineReader.java | 1 + .../samtools/util/FileAppendStreamLRUCache.java | 2 ++ src/main/java/htsjdk/samtools/util/IOUtil.java | 1 + src/main/java/htsjdk/samtools/util/Interval.java | 1 + src/main/java/htsjdk/samtools/util/IntervalList.java | 2 ++ .../util/IntervalListReferenceSequenceMask.java | 4 ++++ src/main/java/htsjdk/samtools/util/IntervalTree.java | 13 +++++++++++++ .../java/htsjdk/samtools/util/IntervalTreeMap.java | 19 +++++++++++++++++++ src/main/java/htsjdk/samtools/util/Iso8601Date.java | 1 + src/main/java/htsjdk/samtools/util/LineReader.java | 1 + .../java/htsjdk/samtools/util/LocusComparator.java | 1 + src/main/java/htsjdk/samtools/util/LocusImpl.java | 2 ++ .../samtools/util/Md5CalculatingInputStream.java | 9 +++++++++ .../samtools/util/Md5CalculatingOutputStream.java | 5 +++++ src/main/java/htsjdk/samtools/util/PeekIterator.java | 3 +++ .../java/htsjdk/samtools/util/PeekableIterator.java | 4 ++++ .../htsjdk/samtools/util/PositionalOutputStream.java | 4 ++++ .../samtools/util/QualityEncodingDetector.java | 3 +++ .../util/SamRecordIntervalIteratorFactory.java | 4 ++++ .../java/htsjdk/samtools/util/SortingCollection.java | 14 ++++++++++++++ .../htsjdk/samtools/util/SortingLongCollection.java | 1 + .../java/htsjdk/samtools/util/StringLineReader.java | 4 ++++ .../util/WholeGenomeReferenceSequenceMask.java | 4 ++++ src/main/java/htsjdk/tribble/FeatureReader.java | 1 + src/main/java/htsjdk/tribble/SimpleFeature.java | 3 +++ src/main/java/htsjdk/tribble/TribbleException.java | 1 + src/main/java/htsjdk/tribble/bed/FullBEDFeature.java | 1 + .../java/htsjdk/tribble/bed/SimpleBEDFeature.java | 10 ++++++++++ .../java/htsjdk/tribble/index/AbstractIndex.java | 9 +++++++++ .../htsjdk/tribble/index/DynamicIndexCreator.java | 2 ++ src/main/java/htsjdk/tribble/index/IndexFactory.java | 3 +++ .../java/htsjdk/tribble/index/interval/Interval.java | 1 + .../tribble/index/interval/IntervalIndexCreator.java | 2 ++ .../tribble/index/interval/IntervalTreeIndex.java | 6 ++++++ .../htsjdk/tribble/index/linear/LinearIndex.java | 7 +++++++ .../tribble/index/linear/LinearIndexCreator.java | 2 ++ .../java/htsjdk/tribble/readers/AsciiLineReader.java | 2 ++ src/main/java/htsjdk/tribble/readers/LineReader.java | 1 + .../tribble/readers/LongLineBufferedReader.java | 8 ++++++++ .../tribble/readers/PositionalBufferedStream.java | 3 +++ .../tribble/readers/TabixIteratorLineReader.java | 2 ++ .../java/htsjdk/tribble/readers/TabixReader.java | 1 + src/main/java/htsjdk/tribble/util/HTTPHelper.java | 5 +++++ .../tribble/util/LittleEndianOutputStream.java | 2 ++ src/main/java/htsjdk/tribble/util/TabixUtils.java | 1 + .../java/htsjdk/variant/variantcontext/Allele.java | 1 + .../htsjdk/variant/variantcontext/FastGenotype.java | 1 + .../java/htsjdk/variant/variantcontext/JEXLMap.java | 12 ++++++++++++ .../variant/variantcontext/VariantContext.java | 2 ++ .../variant/variantcontext/VariantJEXLContext.java | 3 +++ .../writer/AsyncVariantContextWriter.java | 2 ++ .../variantcontext/writer/BCF2FieldWriter.java | 1 + .../writer/IndexingVariantContextWriter.java | 3 +++ .../writer/SortingVariantContextWriter.java | 1 + .../writer/SortingVariantContextWriterBase.java | 1 + .../variantcontext/writer/VariantContextWriter.java | 1 + .../java/htsjdk/variant/vcf/AbstractVCFCodec.java | 3 +++ src/main/java/htsjdk/variant/vcf/VCF3Codec.java | 2 ++ src/main/java/htsjdk/variant/vcf/VCFCodec.java | 1 + .../htsjdk/variant/vcf/VCFCompoundHeaderLine.java | 2 ++ src/main/java/htsjdk/variant/vcf/VCFFileReader.java | 6 ++++-- src/main/java/htsjdk/variant/vcf/VCFHeaderLine.java | 1 + .../htsjdk/variant/vcf/VCFHeaderLineTranslator.java | 2 ++ .../java/htsjdk/variant/vcf/VCFSimpleHeaderLine.java | 2 ++ .../MergingSamRecordIteratorGroupCollisionTest.java | 16 ++++++++++++++++ .../java/htsjdk/samtools/SamReaderFactoryTest.java | 3 +++ src/test/java/htsjdk/samtools/SamReaderTest.java | 2 ++ .../java/htsjdk/samtools/ValidateSamFileTest.java | 6 ++++++ .../util/BlockCompressedOutputStreamTest.java | 1 + .../htsjdk/samtools/util/DiskBackedQueueTest.java | 3 +++ .../htsjdk/samtools/util/SortingCollectionTest.java | 10 ++++++++++ 175 files changed, 583 insertions(+), 2 deletions(-) diff --git a/src/main/java/htsjdk/samtools/AbstractBAMFileIndex.java b/src/main/java/htsjdk/samtools/AbstractBAMFileIndex.java index 6bf28ef29..724e73c62 100644 --- a/src/main/java/htsjdk/samtools/AbstractBAMFileIndex.java +++ b/src/main/java/htsjdk/samtools/AbstractBAMFileIndex.java @@ -88,6 +88,7 @@ protected AbstractBAMFileIndex(final File file, final SAMSequenceDictionary dict /** * Close this index and release any associated resources. */ + @Override public void close() { mIndexBuffer.close(); } @@ -170,6 +171,7 @@ public int getNumberOfReferences() { * @return The file offset of the first record in the last linear bin, or -1 * if there are no elements in linear bins (i.e. no mapped reads). */ + @Override public long getStartOfLastLinearBin() { seek(4); @@ -206,6 +208,7 @@ public long getStartOfLastLinearBin() { * @param reference the reference of interest * @return meta data for the reference */ + @Override public BAMIndexMetaData getMetaData(final int reference) { seek(4); diff --git a/src/main/java/htsjdk/samtools/AsyncSAMFileWriter.java b/src/main/java/htsjdk/samtools/AsyncSAMFileWriter.java index ab5b8d0b1..1a860f29b 100644 --- a/src/main/java/htsjdk/samtools/AsyncSAMFileWriter.java +++ b/src/main/java/htsjdk/samtools/AsyncSAMFileWriter.java @@ -48,11 +48,13 @@ public void setProgressLogger(final ProgressLoggerInterface progress) { * Adds an alignment to the queue to be written. Will re-throw any exception that was received when * writing prior record(s) to the underlying SAMFileWriter. */ + @Override public void addAlignment(final SAMRecord alignment) { write(alignment); } /** Returns the SAMFileHeader from the underlying SAMFileWriter. */ + @Override public SAMFileHeader getFileHeader() { return this.underlyingWriter.getFileHeader(); } diff --git a/src/main/java/htsjdk/samtools/BAMFileReader.java b/src/main/java/htsjdk/samtools/BAMFileReader.java index 3026eaeda..1d9110ad6 100644 --- a/src/main/java/htsjdk/samtools/BAMFileReader.java +++ b/src/main/java/htsjdk/samtools/BAMFileReader.java @@ -341,6 +341,7 @@ static long findVirtualOffsetOfFirstRecord(final File bam) throws IOException { * If true, writes the source of every read into the source SAMRecords. * @param enabled true to write source information into each SAMRecord. */ + @Override void enableFileSource(final SamReader reader, final boolean enabled) { this.mReader = enabled ? reader : null; } @@ -349,6 +350,7 @@ void enableFileSource(final SamReader reader, final boolean enabled) { * If true, uses the caching version of the index reader. * @param enabled true to use the caching version of the reader. */ + @Override protected void enableIndexCaching(final boolean enabled) { if(mIndex != null) throw new SAMException("Unable to turn on index caching; index file has already been loaded."); @@ -360,6 +362,7 @@ protected void enableIndexCaching(final boolean enabled) { * This is slower but more scalable when accessing large numbers of BAM files sequentially. * @param enabled True to use memory mapping, false to use regular I/O. */ + @Override protected void enableIndexMemoryMapping(final boolean enabled) { if (mIndex != null) { throw new SAMException("Unable to change index memory mapping; index file has already been loaded."); @@ -381,6 +384,7 @@ protected void enableIndexMemoryMapping(final boolean enabled) { /** * @return true if ths is a BAM file, and has an index */ + @Override public boolean hasIndex() { return mIsSeekable && ((mIndexFile != null) || (mIndexStream != null)); } @@ -389,6 +393,7 @@ public boolean hasIndex() { * Retrieves the index for the given file type. Ensure that the index is of the specified type. * @return An index of the given type. */ + @Override public BAMIndex getIndex() { if(!hasIndex()) throw new SAMException("No index is available for this BAM file."); @@ -425,6 +430,7 @@ public void close() { mIndex = null; } + @Override public SAMFileHeader getFileHeader() { return mFileHeader; } @@ -432,10 +438,12 @@ public SAMFileHeader getFileHeader() { /** * Set error-checking level for subsequent SAMRecord reads. */ + @Override void setValidationStringency(final ValidationStringency validationStringency) { this.mValidationStringency = validationStringency; } + @Override public ValidationStringency getValidationStringency() { return this.mValidationStringency; } @@ -448,6 +456,7 @@ public ValidationStringency getValidationStringency() { * getIterator() begins its iteration where the last one left off. That is the best that can be * done in that situation. */ + @Override public CloseableIterator getIterator() { if (mStream == null) { throw new IllegalStateException("File reader is closed"); @@ -552,6 +561,7 @@ public SAMFileSpan getFilePointerSpanningReads() { * @return Iterator for the matching SAMRecords * @see QueryInterval#optimizeIntervals(QueryInterval[]) */ + @Override public CloseableIterator query(final QueryInterval[] intervals, final boolean contained) { if (mStream == null) { throw new IllegalStateException("File reader is closed"); @@ -582,6 +592,7 @@ public SAMFileSpan getFilePointerSpanningReads() { * @param start Alignment start sought. * @return Iterator for the matching SAMRecords. */ + @Override public CloseableIterator queryAlignmentStart(final String sequence, final int start) { if (mStream == null) { throw new IllegalStateException("File reader is closed"); @@ -608,6 +619,7 @@ public SAMFileSpan getFilePointerSpanningReads() { * * @return Iterator for the matching SAMRecords. */ + @Override public CloseableIterator queryUnmapped() { if (mStream == null) { throw new IllegalStateException("File reader is closed"); @@ -710,6 +722,7 @@ private static SAMSequenceRecord readSequenceRecord(final BinaryCodec stream, fi private boolean isClosed = false; + @Override public void close() { if (!isClosed) { if (mCurrentIterator != null && this != mCurrentIterator) { @@ -724,6 +737,7 @@ protected void assertOpen() { if (isClosed) throw new AssertionError("Iterator has been closed"); } + @Override public void remove() { throw new UnsupportedOperationException("Not supported: remove"); } @@ -770,11 +784,13 @@ public SAMRecord next() { } } + @Override public boolean hasNext() { assertOpen(); return (mNextRecord != null); } + @Override public SAMRecord next() { assertOpen(); final SAMRecord result = mNextRecord; @@ -947,6 +963,7 @@ public static BAMFileSpan getFileSpan(QueryInterval[] intervals, BAMIndex fileIn advance(); } + @Override SAMRecord getNextRecord() throws IOException { // Advance to next file block if necessary @@ -989,6 +1006,7 @@ public BAMQueryFilteringIterator(final CloseableIterator iterator, /** * Returns true if a next element exists; false otherwise. */ + @Override public boolean hasNext() { assertOpen(); return mNextRecord != null; @@ -998,6 +1016,7 @@ public boolean hasNext() { * Gets the next record from the given iterator. * @return The next SAM record in the iterator. */ + @Override public SAMRecord next() { if(!hasNext()) throw new NoSuchElementException("BAMQueryFilteringIterator: no next element available"); diff --git a/src/main/java/htsjdk/samtools/BAMFileSpan.java b/src/main/java/htsjdk/samtools/BAMFileSpan.java index 485f69dcf..d99760d2a 100644 --- a/src/main/java/htsjdk/samtools/BAMFileSpan.java +++ b/src/main/java/htsjdk/samtools/BAMFileSpan.java @@ -78,6 +78,7 @@ public BAMFileSpan(final List chunks) { * Does this chunk list map to any position within the BAM file? * @return True iff the ChunkList points to any data within the BAM. */ + @Override public boolean isEmpty() { return chunks.isEmpty(); } @@ -86,6 +87,7 @@ public boolean isEmpty() { * Deep clone the given chunk list. * @return A copy of the chunk list. */ + @Override public BAMFileSpan clone() { final BAMFileSpan clone = new BAMFileSpan(); for(final Chunk chunk: chunks) @@ -100,6 +102,7 @@ public BAMFileSpan clone() { * @param fileSpan The filespan before which to eliminate. * @return A new BAMFileSpan which contains the portion of the chunk list after the given chunk. */ + @Override public SAMFileSpan removeContentsBefore(final SAMFileSpan fileSpan) { if(fileSpan == null) return clone(); @@ -174,6 +177,7 @@ public SAMFileSpan removeContentsAfter(final SAMFileSpan fileSpan) { * Gets a file span over the data immediately following this span. * @return The a pointer to data immediately following this span. */ + @Override public SAMFileSpan getContentsFollowing() { if(chunks.isEmpty()) throw new SAMException("Unable to get the file pointer following this one: no data present."); diff --git a/src/main/java/htsjdk/samtools/BAMFileWriter.java b/src/main/java/htsjdk/samtools/BAMFileWriter.java index f6a474e2d..fc766ae7d 100644 --- a/src/main/java/htsjdk/samtools/BAMFileWriter.java +++ b/src/main/java/htsjdk/samtools/BAMFileWriter.java @@ -115,6 +115,7 @@ private BAMIndexer createBamIndex(final String path) { } } + @Override protected void writeAlignment(final SAMRecord alignment) { prepareToWriteAlignments(); @@ -135,10 +136,12 @@ protected void writeAlignment(final SAMRecord alignment) { } } + @Override protected void writeHeader(final String textHeader) { writeHeader(outputBinaryCodec, getFileHeader(), textHeader); } + @Override protected void finish() { outputBinaryCodec.close(); try { @@ -151,6 +154,7 @@ protected void finish() { } /** @return absolute path, or null if this writer does not correspond to a file. */ + @Override protected String getFilename() { return outputBinaryCodec.getOutputFileName(); } diff --git a/src/main/java/htsjdk/samtools/BAMIndex.java b/src/main/java/htsjdk/samtools/BAMIndex.java index 3663df9d0..62c69c79c 100644 --- a/src/main/java/htsjdk/samtools/BAMIndex.java +++ b/src/main/java/htsjdk/samtools/BAMIndex.java @@ -63,5 +63,6 @@ /** * Close the index and release any associated resources. */ + @Override void close(); } diff --git a/src/main/java/htsjdk/samtools/BAMIndexWriter.java b/src/main/java/htsjdk/samtools/BAMIndexWriter.java index b036b684d..aafcb5fbf 100644 --- a/src/main/java/htsjdk/samtools/BAMIndexWriter.java +++ b/src/main/java/htsjdk/samtools/BAMIndexWriter.java @@ -49,6 +49,7 @@ /** * Any necessary processing at the end of the file */ + @Override public void close(); } \ No newline at end of file diff --git a/src/main/java/htsjdk/samtools/BAMRecord.java b/src/main/java/htsjdk/samtools/BAMRecord.java index c45566f08..672e802c3 100644 --- a/src/main/java/htsjdk/samtools/BAMRecord.java +++ b/src/main/java/htsjdk/samtools/BAMRecord.java @@ -113,6 +113,7 @@ protected BAMRecord(final SAMFileHeader header, /** * Force all the lazily-initialized attributes to be decoded. */ + @Override protected void eagerDecode() { getReadName(); getCigar(); diff --git a/src/main/java/htsjdk/samtools/BAMRecordCodec.java b/src/main/java/htsjdk/samtools/BAMRecordCodec.java index dc1ca8196..5b0a408f6 100644 --- a/src/main/java/htsjdk/samtools/BAMRecordCodec.java +++ b/src/main/java/htsjdk/samtools/BAMRecordCodec.java @@ -49,6 +49,7 @@ public BAMRecordCodec(final SAMFileHeader header, final SAMRecordFactory factory this.samRecordFactory = factory; } + @Override public BAMRecordCodec clone() { // Do not clone the references to codecs, as they must be distinct for each instance. return new BAMRecordCodec(this.header, this.samRecordFactory); @@ -56,6 +57,7 @@ public BAMRecordCodec clone() { /** Sets the output stream that records will be written to. */ + @Override public void setOutputStream(final OutputStream os) { this.binaryCodec.setOutputStream(os); } @@ -67,6 +69,7 @@ public void setOutputStream(final OutputStream os, final String filename) { } /** Sets the input stream that records will be read from. */ + @Override public void setInputStream(final InputStream is) { this.binaryCodec.setInputStream(is); } @@ -85,6 +88,7 @@ public void setInputStream(final InputStream is, final String filename) { * * @param alignment Record to be written. */ + @Override public void encode(final SAMRecord alignment) { // Compute block size, as it is the first element of the file representation of SAMRecord final int readLength = alignment.getReadLength(); @@ -171,6 +175,7 @@ public void encode(final SAMRecord alignment) { * @return null if no more records. Should throw exception if EOF is encountered in the middle of * a record. */ + @Override public SAMRecord decode() { int recordLength = 0; try { diff --git a/src/main/java/htsjdk/samtools/Bin.java b/src/main/java/htsjdk/samtools/Bin.java index 1ac572400..f199d0a87 100644 --- a/src/main/java/htsjdk/samtools/Bin.java +++ b/src/main/java/htsjdk/samtools/Bin.java @@ -105,6 +105,7 @@ public boolean containsChunks() { * @param other Other bin to which this bin should be compared. * @return -1 if this < other, 0 if this == other, 1 if this > other. */ + @Override public int compareTo(final Bin other) { if(other == null) throw new ClassCastException("Cannot compare to a null object"); diff --git a/src/main/java/htsjdk/samtools/BinList.java b/src/main/java/htsjdk/samtools/BinList.java index e7107d44f..2111ba403 100644 --- a/src/main/java/htsjdk/samtools/BinList.java +++ b/src/main/java/htsjdk/samtools/BinList.java @@ -60,6 +60,7 @@ protected BinList(final int referenceSequence, final BitSet bins) { * Gets an iterator over all selected bins. * @return An iterator over all selected bins. */ + @Override public Iterator iterator() { return new BinIterator(); } @@ -95,6 +96,7 @@ public BinIterator() { * Are there more bins in this set, waiting to be returned? * @return True if more bins are remaining. */ + @Override public boolean hasNext() { return nextBin >= 0; } @@ -103,6 +105,7 @@ public boolean hasNext() { * Gets the next bin in the provided BinList. * @return the next available bin in the BinList. */ + @Override public Bin next() { if(!hasNext()) throw new NoSuchElementException("This BinIterator is currently empty"); @@ -111,6 +114,7 @@ public Bin next() { return new Bin(referenceSequence,currentBin); } + @Override public void remove() { throw new UnsupportedOperationException("Unable to remove from a bin iterator"); } diff --git a/src/main/java/htsjdk/samtools/BinaryBAMIndexWriter.java b/src/main/java/htsjdk/samtools/BinaryBAMIndexWriter.java index 35a22f7ac..5719aecf5 100644 --- a/src/main/java/htsjdk/samtools/BinaryBAMIndexWriter.java +++ b/src/main/java/htsjdk/samtools/BinaryBAMIndexWriter.java @@ -78,6 +78,7 @@ public BinaryBAMIndexWriter(final int nRef, final OutputStream output) { /** * Write this content as binary output */ + @Override public void writeReference(final BAMIndexContent content) { if (content == null) { @@ -147,6 +148,7 @@ public void writeReference(final BAMIndexContent content) { * * @param count */ + @Override public void writeNoCoordinateRecordCount(final Long count) { codec.writeLong(count == null ? 0 : count); } @@ -154,6 +156,7 @@ public void writeNoCoordinateRecordCount(final Long count) { /** * Any necessary processing at the end of the file */ + @Override public void close() { codec.close(); } diff --git a/src/main/java/htsjdk/samtools/BinningIndexContent.java b/src/main/java/htsjdk/samtools/BinningIndexContent.java index 9e32601c2..124353e27 100644 --- a/src/main/java/htsjdk/samtools/BinningIndexContent.java +++ b/src/main/java/htsjdk/samtools/BinningIndexContent.java @@ -171,6 +171,7 @@ int getNumberOfNonNullBins() { /** * @return An iterator over all non-empty bins. */ + @Override public Iterator iterator() { return new BinIterator(); } @@ -190,6 +191,7 @@ public BinIterator() { * * @return True if more bins are remaining. */ + @Override public boolean hasNext() { while (nextBin <= maxBinNumber) { if (getBin(nextBin) != null) return true; @@ -203,6 +205,7 @@ public boolean hasNext() { * * @return the next available bin in the BinList. */ + @Override public Bin next() { if (!hasNext()) throw new NoSuchElementException("This BinIterator is currently empty"); @@ -211,6 +214,7 @@ public Bin next() { return result; } + @Override public void remove() { throw new UnsupportedOperationException("Unable to remove from a bin iterator"); } diff --git a/src/main/java/htsjdk/samtools/CachingBAMFileIndex.java b/src/main/java/htsjdk/samtools/CachingBAMFileIndex.java index 8010ce59e..5597832c2 100644 --- a/src/main/java/htsjdk/samtools/CachingBAMFileIndex.java +++ b/src/main/java/htsjdk/samtools/CachingBAMFileIndex.java @@ -61,6 +61,7 @@ public CachingBAMFileIndex(final File file, final SAMSequenceDictionary dictiona * in a range that can be scanned to find SAMRecords that overlap the given positions. * May return null if there is no content overlapping the region. */ + @Override public BAMFileSpan getSpanOverlapping(final int referenceIndex, final int startPos, final int endPos) { final BAMIndexContent queryResults = getQueryResults(referenceIndex); @@ -80,6 +81,7 @@ public BAMFileSpan getSpanOverlapping(final int referenceIndex, final int startP * @param endPos 1-based end of the desired interval, inclusive * @return a list of bins that contain relevant data. */ + @Override public BinList getBinsOverlapping(final int referenceIndex, final int startPos, final int endPos) { final BitSet regionBins = GenomicIndexUtil.regionToBins(startPos, endPos); if (regionBins == null) { @@ -93,6 +95,7 @@ public BinList getBinsOverlapping(final int referenceIndex, final int startPos, * @param bin The bin over which to perform an overlapping query. * @return The file pointers */ + @Override public BAMFileSpan getSpanOverlapping(final Bin bin) { if(bin == null) return null; @@ -138,6 +141,7 @@ public BAMFileSpan getSpanOverlapping(final Bin bin) { * @param referenceIndex The reference to load. CachingBAMFileIndex only stores index data for entire references. * @return The index information for this reference. */ + @Override protected BAMIndexContent getQueryResults(final int referenceIndex) { // WeakHashMap is a bit weird in that its lookups are done via equals() equality, but expirations must be // handled via == equality. This implementation jumps through a few hoops to make sure that == equality still diff --git a/src/main/java/htsjdk/samtools/Chunk.java b/src/main/java/htsjdk/samtools/Chunk.java index 0d77b0cd3..dbe27c64d 100644 --- a/src/main/java/htsjdk/samtools/Chunk.java +++ b/src/main/java/htsjdk/samtools/Chunk.java @@ -38,6 +38,7 @@ public Chunk(final long start, final long end) { mChunkEnd = end; } + @Override public Chunk clone() { return new Chunk(mChunkStart,mChunkEnd); } @@ -58,6 +59,7 @@ protected void setChunkEnd(final long value) { mChunkEnd = value; } + @Override public int compareTo(final Chunk chunk) { int result = Long.signum(mChunkStart - chunk.mChunkStart); if (result == 0) { diff --git a/src/main/java/htsjdk/samtools/ComparableSamRecordIterator.java b/src/main/java/htsjdk/samtools/ComparableSamRecordIterator.java index 06186a1d0..cb2da892c 100644 --- a/src/main/java/htsjdk/samtools/ComparableSamRecordIterator.java +++ b/src/main/java/htsjdk/samtools/ComparableSamRecordIterator.java @@ -63,6 +63,7 @@ public SamReader getReader() { * @param that another iterator to compare to * @return a negative, 0 or positive number as described in the Comparator interface */ + @Override public int compareTo(final ComparableSamRecordIterator that) { if (this.comparator.getClass() != that.comparator.getClass()) { throw new IllegalStateException("Attempt to compare two ComparableSAMRecordIterators that " + diff --git a/src/main/java/htsjdk/samtools/CoordinateSortedPairInfoMap.java b/src/main/java/htsjdk/samtools/CoordinateSortedPairInfoMap.java index d892d655a..37c200cc5 100644 --- a/src/main/java/htsjdk/samtools/CoordinateSortedPairInfoMap.java +++ b/src/main/java/htsjdk/samtools/CoordinateSortedPairInfoMap.java @@ -202,6 +202,7 @@ public int sizeInRam() { * or removed from map when iteration is in progress, nor may a second iteration be started. * Iterator must be closed in order to allow normal access to the map. */ + @Override public CloseableIterator> iterator() { if (iterationInProgress) throw new IllegalStateException("Cannot be called when iteration is in progress"); iterationInProgress = true; @@ -238,11 +239,13 @@ private void createIteratorForMapInRam() { currentReferenceIterator = mapInRam.entrySet().iterator(); } + @Override public void close() { closed = true; iterationInProgress = false; } + @Override public boolean hasNext() { if (closed) throw new IllegalStateException("Iterator has been closed"); if (currentReferenceIterator != null && !currentReferenceIterator.hasNext()) @@ -250,6 +253,7 @@ public boolean hasNext() { return currentReferenceIterator != null; } + @Override public Map.Entry next() { if (closed) throw new IllegalStateException("Iterator has been closed"); if (!hasNext()) throw new NoSuchElementException(); @@ -258,6 +262,7 @@ public boolean hasNext() { return ret; } + @Override public void remove() { throw new UnsupportedOperationException(); } diff --git a/src/main/java/htsjdk/samtools/DefaultSAMRecordFactory.java b/src/main/java/htsjdk/samtools/DefaultSAMRecordFactory.java index 7e3848e3d..707cc6ec1 100644 --- a/src/main/java/htsjdk/samtools/DefaultSAMRecordFactory.java +++ b/src/main/java/htsjdk/samtools/DefaultSAMRecordFactory.java @@ -14,6 +14,7 @@ public static DefaultSAMRecordFactory getInstance() { } /** Create a new SAMRecord to be filled in */ + @Override public SAMRecord createSAMRecord(final SAMFileHeader header) { return new SAMRecord(header); } @@ -23,6 +24,7 @@ public SAMRecord createSAMRecord(final SAMFileHeader header) { * any value other than NO_ALIGNMENT_REFERENCE_INDEX, the values must be resolvable against the sequence * dictionary in the header argument. */ + @Override public BAMRecord createBAMRecord (final SAMFileHeader header, final int referenceSequenceIndex, final int alignmentStart, diff --git a/src/main/java/htsjdk/samtools/DiskBasedBAMFileIndex.java b/src/main/java/htsjdk/samtools/DiskBasedBAMFileIndex.java index b5d6f597a..1eddddde3 100644 --- a/src/main/java/htsjdk/samtools/DiskBasedBAMFileIndex.java +++ b/src/main/java/htsjdk/samtools/DiskBasedBAMFileIndex.java @@ -56,6 +56,7 @@ public DiskBasedBAMFileIndex(final File file, final SAMSequenceDictionary dictio * positions. The last position in each pair is a virtual file pointer to the first SAMRecord beyond * the range that may contain the indicated SAMRecords. */ + @Override public BAMFileSpan getSpanOverlapping(final int referenceIndex, final int startPos, final int endPos) { final BAMIndexContent queryResults = query(referenceIndex,startPos,endPos); @@ -69,6 +70,7 @@ public BAMFileSpan getSpanOverlapping(final int referenceIndex, final int startP return new BAMFileSpan(chunkList); } + @Override protected BAMIndexContent getQueryResults(final int reference){ throw new UnsupportedOperationException(); // todo: there ought to be a way to support this using the first startPos for the reference and the last diff --git a/src/main/java/htsjdk/samtools/DuplicateSetIterator.java b/src/main/java/htsjdk/samtools/DuplicateSetIterator.java index 9a0c6f108..f3b9b072a 100644 --- a/src/main/java/htsjdk/samtools/DuplicateSetIterator.java +++ b/src/main/java/htsjdk/samtools/DuplicateSetIterator.java @@ -120,6 +120,7 @@ public void setScoringStrategy(final DuplicateScoringStrategy.ScoringStrategy sc this.comparator.setScoringStrategy(scoringStrategy); } + @Override public DuplicateSet next() { DuplicateSet duplicateSet = null; @@ -161,12 +162,15 @@ public DuplicateSet next() { return duplicateSet; } + @Override public void close() { wrappedIterator.close(); } + @Override public boolean hasNext() { return (!duplicateSet.isEmpty() || wrappedIterator.hasNext()); } // Does nothing! + @Override public void remove() { } } diff --git a/src/main/java/htsjdk/samtools/MergingSamRecordIterator.java b/src/main/java/htsjdk/samtools/MergingSamRecordIterator.java index a294752de..45d002e3e 100644 --- a/src/main/java/htsjdk/samtools/MergingSamRecordIterator.java +++ b/src/main/java/htsjdk/samtools/MergingSamRecordIterator.java @@ -107,6 +107,7 @@ private void startIterationIfRequired() { /** * Close down all open iterators. */ + @Override public void close() { // Iterators not in the priority queue have already been closed; only close down the iterators that are still in the priority queue. for (CloseableIterator iterator : pq) @@ -114,12 +115,14 @@ public void close() { } /** Returns true if any of the underlying iterators has more records, otherwise false. */ + @Override public boolean hasNext() { startIterationIfRequired(); return !this.pq.isEmpty(); } /** Returns the next record from the top most iterator during merging. */ + @Override public SAMRecord next() { startIterationIfRequired(); @@ -163,6 +166,7 @@ private void addIfNotEmpty(final ComparableSamRecordIterator iterator) { } /** Unsupported operation. */ + @Override public void remove() { throw new UnsupportedOperationException("MergingSAMRecorderIterator.remove()"); } @@ -176,10 +180,12 @@ private SAMRecordComparator getComparator() { // For unsorted build a fake comparator that compares based on object ID if (this.sortOrder == SAMFileHeader.SortOrder.unsorted) { return new SAMRecordComparator() { + @Override public int fileOrderCompare(final SAMRecord lhs, final SAMRecord rhs) { return System.identityHashCode(lhs) - System.identityHashCode(rhs); } + @Override public int compare(final SAMRecord lhs, final SAMRecord rhs) { return fileOrderCompare(lhs, rhs); } @@ -206,6 +212,7 @@ public SAMFileHeader getMergedHeader() { private class MergedSequenceDictionaryCoordinateOrderComparator extends SAMRecordCoordinateComparator implements Serializable { private static final long serialVersionUID = 1L; + @Override public int fileOrderCompare(final SAMRecord samRecord1, final SAMRecord samRecord2) { final int referenceIndex1 = getReferenceIndex(samRecord1); final int referenceIndex2 = getReferenceIndex(samRecord2); diff --git a/src/main/java/htsjdk/samtools/QueryInterval.java b/src/main/java/htsjdk/samtools/QueryInterval.java index bdfb52c37..581e0f648 100644 --- a/src/main/java/htsjdk/samtools/QueryInterval.java +++ b/src/main/java/htsjdk/samtools/QueryInterval.java @@ -29,6 +29,7 @@ public QueryInterval(final int referenceIndex, final int start, final int end) { } + @Override public int compareTo(final QueryInterval other) { int comp = this.referenceIndex - other.referenceIndex; if (comp != 0) return comp; diff --git a/src/main/java/htsjdk/samtools/SAMFileHeader.java b/src/main/java/htsjdk/samtools/SAMFileHeader.java index 47543c2a6..41eed4a4c 100644 --- a/src/main/java/htsjdk/samtools/SAMFileHeader.java +++ b/src/main/java/htsjdk/samtools/SAMFileHeader.java @@ -56,6 +56,7 @@ public static final Set STANDARD_TAGS = new HashSet(Arrays.asList(VERSION_TAG, SORT_ORDER_TAG, GROUP_ORDER_TAG)); + @Override Set getStandardTags() { return STANDARD_TAGS; } @@ -353,6 +354,7 @@ public int hashCode() { return result; } + @Override public final SAMFileHeader clone() { final SAMTextHeaderCodec codec = new SAMTextHeaderCodec(); codec.setValidationStringency(ValidationStringency.SILENT); diff --git a/src/main/java/htsjdk/samtools/SAMFileWriter.java b/src/main/java/htsjdk/samtools/SAMFileWriter.java index fe99591f0..24936a0c1 100644 --- a/src/main/java/htsjdk/samtools/SAMFileWriter.java +++ b/src/main/java/htsjdk/samtools/SAMFileWriter.java @@ -46,5 +46,6 @@ /** * Must be called to flush or file will likely be defective. */ + @Override void close(); } diff --git a/src/main/java/htsjdk/samtools/SAMFileWriterImpl.java b/src/main/java/htsjdk/samtools/SAMFileWriterImpl.java index 130ecea4a..5e0ecdb45 100644 --- a/src/main/java/htsjdk/samtools/SAMFileWriterImpl.java +++ b/src/main/java/htsjdk/samtools/SAMFileWriterImpl.java @@ -75,6 +75,7 @@ public static int getDefaultMaxRecordsInRam() { * Sets the progress logger used by this implementation. Setting this lets this writer emit log * messages as SAM records in a SortingCollection are being written to disk. */ + @Override public void setProgressLogger(final ProgressLoggerInterface progress) { this.progressLogger = progress; } @@ -153,6 +154,7 @@ public void setHeader(final SAMFileHeader header) } } + @Override public SAMFileHeader getFileHeader() { return header; } @@ -180,6 +182,7 @@ private SAMRecordComparator makeComparator() { * @throws IllegalArgumentException if the record's reference or mate reference indices cannot be * resolved against the writer's header using the current reference and mate reference names */ + @Override public void addAlignment(final SAMRecord alignment) { alignment.setHeaderStrict(header); // re-establish the record header and resolve reference indices @@ -206,6 +209,7 @@ private void assertPresorted(final SAMRecord alignment) { /** * Must be called or else file will likely be defective. */ + @Override public final void close() { if (!isClosed) { diff --git a/src/main/java/htsjdk/samtools/SAMProgramRecord.java b/src/main/java/htsjdk/samtools/SAMProgramRecord.java index 3bbecf90d..91d0dac44 100644 --- a/src/main/java/htsjdk/samtools/SAMProgramRecord.java +++ b/src/main/java/htsjdk/samtools/SAMProgramRecord.java @@ -57,6 +57,7 @@ public SAMProgramRecord(final String id, SAMProgramRecord srcProgramRecord) { } } + @Override public String getId() { return getProgramGroupId(); } @@ -126,6 +127,7 @@ public int hashCode() { return result; } + @Override Set getStandardTags() { return STANDARD_TAGS; } diff --git a/src/main/java/htsjdk/samtools/SAMReadGroupRecord.java b/src/main/java/htsjdk/samtools/SAMReadGroupRecord.java index fd81852a0..bae3c4f62 100644 --- a/src/main/java/htsjdk/samtools/SAMReadGroupRecord.java +++ b/src/main/java/htsjdk/samtools/SAMReadGroupRecord.java @@ -74,6 +74,7 @@ public SAMReadGroupRecord(final String id, final SAMReadGroupRecord srcProgramRe } } + @Override public String getId() { return getReadGroupId(); } public String getReadGroupId() { return mReadGroupId; } @@ -158,6 +159,7 @@ public int hashCode() { return mReadGroupId.hashCode(); } + @Override Set getStandardTags() { return STANDARD_TAGS; } diff --git a/src/main/java/htsjdk/samtools/SAMRecordCoordinateComparator.java b/src/main/java/htsjdk/samtools/SAMRecordCoordinateComparator.java index e8887bc46..fe054b40b 100644 --- a/src/main/java/htsjdk/samtools/SAMRecordCoordinateComparator.java +++ b/src/main/java/htsjdk/samtools/SAMRecordCoordinateComparator.java @@ -43,6 +43,7 @@ public class SAMRecordCoordinateComparator implements SAMRecordComparator, Serializable { private static final long serialVersionUID = 1L; + @Override public int compare(final SAMRecord samRecord1, final SAMRecord samRecord2) { int cmp = fileOrderCompare(samRecord1, samRecord2); if (cmp != 0) { @@ -83,6 +84,7 @@ private int compareInts(int i1, int i2) { * * @return negative if samRecord1 < samRecord2, 0 if equal, else positive */ + @Override public int fileOrderCompare(final SAMRecord samRecord1, final SAMRecord samRecord2) { if (null == samRecord1.getHeader() || null == samRecord2.getHeader()) { diff --git a/src/main/java/htsjdk/samtools/SAMRecordDuplicateComparator.java b/src/main/java/htsjdk/samtools/SAMRecordDuplicateComparator.java index 4ed2bb52d..436ba3c0a 100644 --- a/src/main/java/htsjdk/samtools/SAMRecordDuplicateComparator.java +++ b/src/main/java/htsjdk/samtools/SAMRecordDuplicateComparator.java @@ -220,6 +220,7 @@ private boolean pairedEndAndBothMapped(final SAMRecord record) { * If both reads are paired and both ends mapped, always prefer the first end over the second end. This is needed to * properly choose the first end for optical duplicate identification when both ends are mapped to the same position etc. */ + @Override public int compare(final SAMRecord samRecord1, final SAMRecord samRecord2) { populateTransientAttributes(samRecord1, samRecord2); int cmp; @@ -357,6 +358,7 @@ public int duplicateSetCompare(final SAMRecord samRecord1, final SAMRecord samRe /** * Less stringent than duplicateSetCompare, such that two records are equal enough such that their ordering in a sorted SAM file would be arbitrary. */ + @Override public int fileOrderCompare(final SAMRecord samRecord1, final SAMRecord samRecord2) { return fileOrderCompare(samRecord1, samRecord2, false, true); } diff --git a/src/main/java/htsjdk/samtools/SAMRecordQueryNameComparator.java b/src/main/java/htsjdk/samtools/SAMRecordQueryNameComparator.java index 7fd97f5b5..d2f7cdea9 100644 --- a/src/main/java/htsjdk/samtools/SAMRecordQueryNameComparator.java +++ b/src/main/java/htsjdk/samtools/SAMRecordQueryNameComparator.java @@ -31,6 +31,7 @@ public class SAMRecordQueryNameComparator implements SAMRecordComparator, Serializable { private static final long serialVersionUID = 1L; + @Override public int compare(final SAMRecord samRecord1, final SAMRecord samRecord2) { int cmp = fileOrderCompare(samRecord1, samRecord2); if (cmp != 0) { @@ -75,6 +76,7 @@ public int compare(final SAMRecord samRecord1, final SAMRecord samRecord2) { * * @return negative if samRecord1 < samRecord2, 0 if equal, else positive */ + @Override public int fileOrderCompare(final SAMRecord samRecord1, final SAMRecord samRecord2) { return compareReadNames(samRecord1.getReadName(), samRecord2.getReadName()); } diff --git a/src/main/java/htsjdk/samtools/SAMRecordSetBuilder.java b/src/main/java/htsjdk/samtools/SAMRecordSetBuilder.java index 2af91c30f..60aae473a 100644 --- a/src/main/java/htsjdk/samtools/SAMRecordSetBuilder.java +++ b/src/main/java/htsjdk/samtools/SAMRecordSetBuilder.java @@ -193,16 +193,21 @@ public void addRecord(final SAMRecord record) { } /** Returns a CloseableIterator over the collection of SAMRecords. */ + @Override public CloseableIterator iterator() { return new CloseableIterator() { private final Iterator iterator = records.iterator(); + @Override public void close() { /** Do nothing. */} + @Override public boolean hasNext() { return this.iterator.hasNext(); } + @Override public SAMRecord next() { return this.iterator.next(); } + @Override public void remove() { this.iterator.remove(); } }; } diff --git a/src/main/java/htsjdk/samtools/SAMSequenceRecord.java b/src/main/java/htsjdk/samtools/SAMSequenceRecord.java index 6bca979cc..8e7ccf295 100644 --- a/src/main/java/htsjdk/samtools/SAMSequenceRecord.java +++ b/src/main/java/htsjdk/samtools/SAMSequenceRecord.java @@ -194,10 +194,12 @@ public int hashCode() { return mSequenceName != null ? mSequenceName.hashCode() : 0; } + @Override Set getStandardTags() { return STANDARD_TAGS; } + @Override public final SAMSequenceRecord clone() { final SAMSequenceRecord ret = new SAMSequenceRecord(this.mSequenceName, this.mSequenceLength); ret.mSequenceIndex = this.mSequenceIndex; diff --git a/src/main/java/htsjdk/samtools/SAMTextReader.java b/src/main/java/htsjdk/samtools/SAMTextReader.java index 3968f1cc9..62f871752 100644 --- a/src/main/java/htsjdk/samtools/SAMTextReader.java +++ b/src/main/java/htsjdk/samtools/SAMTextReader.java @@ -79,22 +79,27 @@ public SAMTextReader(final InputStream stream, final File file, final Validation * * @param enabled true to write source information into each SAMRecord. */ + @Override public void enableFileSource(final SamReader reader, final boolean enabled) { this.mParentReader = enabled ? reader : null; } + @Override void enableIndexCaching(final boolean enabled) { throw new UnsupportedOperationException("Cannot enable index caching for a SAM text reader"); } + @Override void enableIndexMemoryMapping(final boolean enabled) { throw new UnsupportedOperationException("Cannot enable index memory mapping for a SAM text reader"); } + @Override void enableCrcChecking(final boolean enabled) { // Do nothing - this has no meaning for SAM reading } + @Override void setSAMRecordFactory(final SAMRecordFactory factory) { this.samRecordFactory = factory; } @@ -104,14 +109,17 @@ void setSAMRecordFactory(final SAMRecordFactory factory) { return SamReader.Type.SAM_TYPE; } + @Override public boolean hasIndex() { return false; } + @Override public BAMIndex getIndex() { throw new UnsupportedOperationException(); } + @Override public void close() { if (mReader != null) { try { @@ -122,14 +130,17 @@ public void close() { } } + @Override public SAMFileHeader getFileHeader() { return mFileHeader; } + @Override public ValidationStringency getValidationStringency() { return validationStringency; } + @Override public void setValidationStringency(final ValidationStringency stringency) { this.validationStringency = stringency; } @@ -141,6 +152,7 @@ public void setValidationStringency(final ValidationStringency stringency) { * * @return Iterator of SAMRecords in file order. */ + @Override public CloseableIterator getIterator() { if (mReader == null) { throw new IllegalStateException("File reader is closed"); @@ -158,6 +170,7 @@ public void setValidationStringency(final ValidationStringency stringency) { * @param fileSpan The file span. * @return An iterator over the given file span. */ + @Override public CloseableIterator getIterator(final SAMFileSpan fileSpan) { throw new UnsupportedOperationException("Cannot directly iterate over regions within SAM text files."); } @@ -167,6 +180,7 @@ public void setValidationStringency(final ValidationStringency stringency) { * * @return An pointer to the first read in the file. */ + @Override public SAMFileSpan getFilePointerSpanningReads() { throw new UnsupportedOperationException("Cannot retrieve file pointers within SAM text files."); } @@ -186,10 +200,12 @@ public SAMFileSpan getFilePointerSpanningReads() { /** * Unsupported for SAM text files. */ + @Override public CloseableIterator queryAlignmentStart(final String sequence, final int start) { throw new UnsupportedOperationException("Cannot query SAM text files"); } + @Override public CloseableIterator queryUnmapped() { throw new UnsupportedOperationException("Cannot query SAM text files"); } @@ -220,14 +236,17 @@ private RecordIterator() { } } + @Override public void close() { SAMTextReader.this.close(); } + @Override public boolean hasNext() { return mCurrentLine != null; } + @Override public SAMRecord next() { if (!hasNext()) { throw new IllegalStateException("Cannot call next() on exhausted iterator"); @@ -239,6 +258,7 @@ public SAMRecord next() { } } + @Override public void remove() { throw new UnsupportedOperationException("Not supported: remove"); } diff --git a/src/main/java/htsjdk/samtools/SAMTextWriter.java b/src/main/java/htsjdk/samtools/SAMTextWriter.java index 0786d670c..70dd4a229 100644 --- a/src/main/java/htsjdk/samtools/SAMTextWriter.java +++ b/src/main/java/htsjdk/samtools/SAMTextWriter.java @@ -122,6 +122,7 @@ public SAMTextWriter(final OutputStream stream, final SamFlagField samFlagFieldO * * @param alignment SAMRecord. */ + @Override public void writeAlignment(final SAMRecord alignment) { try { out.write(alignment.getReadName()); @@ -188,6 +189,7 @@ static synchronized String getSAMString(final SAMRecord alignment) { * * @param textHeader String containing the text to write. */ + @Override public void writeHeader(final String textHeader) { try { out.write(textHeader); @@ -199,6 +201,7 @@ public void writeHeader(final String textHeader) { /** * Do any required flushing here. */ + @Override public void finish() { try { out.close(); @@ -212,6 +215,7 @@ public void finish() { * * @return Output filename, or null if there isn't one. */ + @Override public String getFilename() { if (file == null) { return null; diff --git a/src/main/java/htsjdk/samtools/SamFileHeaderMerger.java b/src/main/java/htsjdk/samtools/SamFileHeaderMerger.java index b3f588caa..d3cf16ada 100644 --- a/src/main/java/htsjdk/samtools/SamFileHeaderMerger.java +++ b/src/main/java/htsjdk/samtools/SamFileHeaderMerger.java @@ -98,6 +98,7 @@ //HeaderRecordFactory that creates SAMReadGroupRecord instances. private static final HeaderRecordFactory READ_GROUP_RECORD_FACTORY = new HeaderRecordFactory() { + @Override public SAMReadGroupRecord createRecord(final String id, final SAMReadGroupRecord srcReadGroupRecord) { return new SAMReadGroupRecord(id, srcReadGroupRecord); } @@ -105,6 +106,7 @@ public SAMReadGroupRecord createRecord(final String id, final SAMReadGroupRecord //HeaderRecordFactory that creates SAMProgramRecord instances. private static final HeaderRecordFactory PROGRAM_RECORD_FACTORY = new HeaderRecordFactory() { + @Override public SAMProgramRecord createRecord(final String id, final SAMProgramRecord srcProgramRecord) { return new SAMProgramRecord(id, srcProgramRecord); } @@ -112,6 +114,7 @@ public SAMProgramRecord createRecord(final String id, final SAMProgramRecord src //comparator used to sort lists of program group and read group records private static final Comparator RECORD_ID_COMPARATOR = new Comparator() { + @Override public int compare(final AbstractSAMHeaderRecord o1, final AbstractSAMHeaderRecord o2) { return o1.getId().compareTo(o2.getId()); } diff --git a/src/main/java/htsjdk/samtools/SamFileValidator.java b/src/main/java/htsjdk/samtools/SamFileValidator.java index e40bfe94f..c774b6fd9 100644 --- a/src/main/java/htsjdk/samtools/SamFileValidator.java +++ b/src/main/java/htsjdk/samtools/SamFileValidator.java @@ -750,6 +750,7 @@ private void validateMateFields(final PairEndInfo end1, final PairEndInfo end2, PairEndInfo remove(int mateReferenceIndex, String key); + @Override CloseableIterator> iterator(); } @@ -757,14 +758,17 @@ private void validateMateFields(final PairEndInfo end1, final PairEndInfo end2, private final CoordinateSortedPairInfoMap onDiskMap = new CoordinateSortedPairInfoMap(maxTempFiles, new Codec()); + @Override public void put(int mateReferenceIndex, String key, PairEndInfo value) { onDiskMap.put(mateReferenceIndex, key, value); } + @Override public PairEndInfo remove(int mateReferenceIndex, String key) { return onDiskMap.remove(mateReferenceIndex, key); } + @Override public CloseableIterator> iterator() { return onDiskMap.iterator(); } @@ -773,14 +777,17 @@ public PairEndInfo remove(int mateReferenceIndex, String key) { private DataInputStream in; private DataOutputStream out; + @Override public void setOutputStream(final OutputStream os) { this.out = new DataOutputStream(os); } + @Override public void setInputStream(final InputStream is) { this.in = new DataInputStream(is); } + @Override public void encode(final String key, final PairEndInfo record) { try { out.writeUTF(key); @@ -802,6 +809,7 @@ public void encode(final String key, final PairEndInfo record) { } } + @Override public Map.Entry decode() { try { final String key = in.readUTF(); @@ -838,31 +846,38 @@ public void encode(final String key, final PairEndInfo record) { private static class InMemoryPairEndInfoMap implements PairEndInfoMap { private final Map map = new HashMap(); + @Override public void put(int mateReferenceIndex, String key, PairEndInfo value) { if (mateReferenceIndex != value.mateReferenceIndex) throw new IllegalArgumentException("mateReferenceIndex does not agree with PairEndInfo"); map.put(key, value); } + @Override public PairEndInfo remove(int mateReferenceIndex, String key) { return map.remove(key); } + @Override public CloseableIterator> iterator() { final Iterator> it = map.entrySet().iterator(); return new CloseableIterator>() { + @Override public void close() { // do nothing } + @Override public boolean hasNext() { return it.hasNext(); } + @Override public Map.Entry next() { return it.next(); } + @Override public void remove() { it.remove(); } diff --git a/src/main/java/htsjdk/samtools/SamPairUtil.java b/src/main/java/htsjdk/samtools/SamPairUtil.java index ee1707bd5..4849850ec 100644 --- a/src/main/java/htsjdk/samtools/SamPairUtil.java +++ b/src/main/java/htsjdk/samtools/SamPairUtil.java @@ -424,6 +424,7 @@ public SetMateInfoIterator(final Iterator iterator, final boolean set */ public long getNumMateCigarsAdded() { return this.numMateCigarsAdded; } + @Override public boolean hasNext() { return (!records.isEmpty() || super.hasNext()); } @@ -495,12 +496,14 @@ private void advance() { } } + @Override public SAMRecord next() { advance(); if (records.isEmpty()) throw new IllegalStateException("Unexpectedly found an empty record list"); return this.records.poll(); } + @Override public SAMRecord peek() { advance(); if (records.isEmpty()) throw new IllegalStateException("Unexpectedly found an empty record list"); diff --git a/src/main/java/htsjdk/samtools/SamReader.java b/src/main/java/htsjdk/samtools/SamReader.java index 0c551a045..08f93ec17 100644 --- a/src/main/java/htsjdk/samtools/SamReader.java +++ b/src/main/java/htsjdk/samtools/SamReader.java @@ -164,6 +164,7 @@ public String toString() { * Only a single open iterator on a SAM or BAM file may be extant at any one time. If you want to start * a second iteration, the first one must be closed first. */ + @Override public SAMRecordIterator iterator(); /** @@ -558,6 +559,7 @@ public AssertingIterator(final CloseableIterator iterator) { wrappedIterator = iterator; } + @Override public SAMRecordIterator assertSorted(final SAMFileHeader.SortOrder sortOrder) { if (sortOrder == null || sortOrder == SAMFileHeader.SortOrder.unsorted) { @@ -569,6 +571,7 @@ public SAMRecordIterator assertSorted(final SAMFileHeader.SortOrder sortOrder) { return this; } + @Override public SAMRecord next() { final SAMRecord result = wrappedIterator.next(); if (comparator != null) { @@ -591,10 +594,13 @@ public SAMRecord next() { return result; } + @Override public void close() { wrappedIterator.close(); } + @Override public boolean hasNext() { return wrappedIterator.hasNext(); } + @Override public void remove() { wrappedIterator.remove(); } } diff --git a/src/main/java/htsjdk/samtools/TextTagCodec.java b/src/main/java/htsjdk/samtools/TextTagCodec.java index 60363e160..40dc8ac73 100644 --- a/src/main/java/htsjdk/samtools/TextTagCodec.java +++ b/src/main/java/htsjdk/samtools/TextTagCodec.java @@ -158,14 +158,17 @@ public String encodeUntypedTag(final String tagName, final Object value) { final String stringVal = numFields == TextTagCodec.NUM_TAG_FIELDS ? fields[2] : ""; final Object val = convertStringToObject(type, stringVal); return new Map.Entry() { + @Override public String getKey() { return key; } + @Override public Object getValue() { return val; } + @Override public Object setValue(final Object o) { throw new UnsupportedOperationException(); } diff --git a/src/main/java/htsjdk/samtools/TextualBAMIndexWriter.java b/src/main/java/htsjdk/samtools/TextualBAMIndexWriter.java index d79027069..da418fd2d 100644 --- a/src/main/java/htsjdk/samtools/TextualBAMIndexWriter.java +++ b/src/main/java/htsjdk/samtools/TextualBAMIndexWriter.java @@ -68,6 +68,7 @@ private void writeHeader() { /** * Write this content as human-readable text */ + @Override public void writeReference(final BAMIndexContent content) { final int reference = content.getReferenceSequence(); @@ -172,6 +173,7 @@ private void writeNullContent(final int reference) { * * @param noCoordinateCount the count of records seen with no coordinate positions in the start coordinate */ + @Override public void writeNoCoordinateRecordCount(final Long noCoordinateCount) { pw.println("No Coordinate Count=" + noCoordinateCount); } @@ -179,6 +181,7 @@ public void writeNoCoordinateRecordCount(final Long noCoordinateCount) { /** * Any necessary processing at the end of the file */ + @Override public void close() { pw.close(); } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/ByteArrayLenEncoding.java b/src/main/java/htsjdk/samtools/cram/encoding/ByteArrayLenEncoding.java index 0c76a5b6e..0c4557793 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/ByteArrayLenEncoding.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/ByteArrayLenEncoding.java @@ -60,6 +60,7 @@ public static EncodingParams toParam(final EncodingParams lenParams, return new EncodingParams(ID, byteArrayOutputStream.toByteArray()); } + @Override public byte[] toByteArray() { final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); try { @@ -78,6 +79,7 @@ public static EncodingParams toParam(final EncodingParams lenParams, return byteArrayOutputStream.toByteArray(); } + @Override public void fromByteArray(final byte[] data) { final ByteBuffer buffer = ByteBuffer.wrap(data); diff --git a/src/main/java/htsjdk/samtools/cram/encoding/ByteArrayStopEncoding.java b/src/main/java/htsjdk/samtools/cram/encoding/ByteArrayStopEncoding.java index c46d96754..c62334d6a 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/ByteArrayStopEncoding.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/ByteArrayStopEncoding.java @@ -56,6 +56,7 @@ public static EncodingParams toParam(final byte stopByte, final int externalId) return new EncodingParams(ID, e.toByteArray()); } + @Override public byte[] toByteArray() { final ByteBuffer buf = ByteBuffer.allocate(1024); buf.order(ByteOrder.LITTLE_ENDIAN); @@ -69,6 +70,7 @@ public static EncodingParams toParam(final byte stopByte, final int externalId) return array; } + @Override public void fromByteArray(final byte[] data) { final ByteBuffer buf = ByteBuffer.wrap(data); buf.order(ByteOrder.LITTLE_ENDIAN); diff --git a/src/main/java/htsjdk/samtools/cram/encoding/ExternalByteArrayEncoding.java b/src/main/java/htsjdk/samtools/cram/encoding/ExternalByteArrayEncoding.java index 2fc707c5f..107a484e1 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/ExternalByteArrayEncoding.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/ExternalByteArrayEncoding.java @@ -38,10 +38,12 @@ public static EncodingParams toParam(final int contentId) { return new EncodingParams(encodingId, e.toByteArray()); } + @Override public byte[] toByteArray() { return ITF8.writeUnsignedITF8(contentId); } + @Override public void fromByteArray(final byte[] data) { contentId = ITF8.readUnsignedITF8(data); } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/ExternalByteEncoding.java b/src/main/java/htsjdk/samtools/cram/encoding/ExternalByteEncoding.java index 0fed72059..75a63ccd6 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/ExternalByteEncoding.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/ExternalByteEncoding.java @@ -38,10 +38,12 @@ public static EncodingParams toParam(final int contentId) { return new EncodingParams(encodingId, externalByteEncoding.toByteArray()); } + @Override public byte[] toByteArray() { return ITF8.writeUnsignedITF8(contentId); } + @Override public void fromByteArray(final byte[] data) { contentId = ITF8.readUnsignedITF8(data); } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/ExternalIntegerEncoding.java b/src/main/java/htsjdk/samtools/cram/encoding/ExternalIntegerEncoding.java index a7c573668..1f0ecba69 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/ExternalIntegerEncoding.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/ExternalIntegerEncoding.java @@ -38,10 +38,12 @@ public static EncodingParams toParam(final int contentId) { return new EncodingParams(encodingId, externalIntegerEncoding.toByteArray()); } + @Override public byte[] toByteArray() { return ITF8.writeUnsignedITF8(contentId); } + @Override public void fromByteArray(final byte[] data) { contentId = ITF8.readUnsignedITF8(data); } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/ExternalLongEncoding.java b/src/main/java/htsjdk/samtools/cram/encoding/ExternalLongEncoding.java index 402cea888..b3ba54ef6 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/ExternalLongEncoding.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/ExternalLongEncoding.java @@ -38,10 +38,12 @@ public static EncodingParams toParam(final int contentId) { return new EncodingParams(encodingId, externalLongEncoding.toByteArray()); } + @Override public byte[] toByteArray() { return ITF8.writeUnsignedITF8(contentId); } + @Override public void fromByteArray(final byte[] data) { contentId = ITF8.readUnsignedITF8(data); } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/GolombRiceIntegerCodec.java b/src/main/java/htsjdk/samtools/cram/encoding/GolombRiceIntegerCodec.java index e5962a152..579f28b77 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/GolombRiceIntegerCodec.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/GolombRiceIntegerCodec.java @@ -38,6 +38,7 @@ public GolombRiceIntegerCodec(final int offset, final int log2m) { mask = ~(~0 << log2m); } + @Override public final Integer read(final BitInputStream bitInputStream) throws IOException { int unary = 0; diff --git a/src/main/java/htsjdk/samtools/cram/encoding/huffman/HuffmanTree.java b/src/main/java/htsjdk/samtools/cram/encoding/huffman/HuffmanTree.java index 43500c4d3..bd4316d23 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/huffman/HuffmanTree.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/huffman/HuffmanTree.java @@ -24,6 +24,7 @@ frequency = freq; } + @Override public int compareTo(@SuppressWarnings("NullableProblems") final HuffmanTree tree) { return frequency - tree.frequency; } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/BaseQualityScore.java b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/BaseQualityScore.java index 41a69d27f..07ee30502 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/BaseQualityScore.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/BaseQualityScore.java @@ -44,6 +44,7 @@ public int getPosition() { return position; } + @Override public void setPosition(final int position) { this.position = position; } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/HardClip.java b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/HardClip.java index 3c3c7ad04..0e5678bb4 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/HardClip.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/HardClip.java @@ -41,10 +41,12 @@ public byte getOperator() { return operator; } + @Override public int getPosition() { return position; } + @Override public void setPosition(final int position) { this.position = position; } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/InsertBase.java b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/InsertBase.java index 597041337..d4a611e8d 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/InsertBase.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/InsertBase.java @@ -42,10 +42,12 @@ public byte getOperator() { return operator; } + @Override public int getPosition() { return position; } + @Override public void setPosition(final int position) { this.position = position; } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Insertion.java b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Insertion.java index e0182c312..2055ba0fd 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Insertion.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Insertion.java @@ -42,10 +42,12 @@ public byte getOperator() { return operator; } + @Override public int getPosition() { return position; } + @Override public void setPosition(final int position) { this.position = position; } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Padding.java b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Padding.java index 85e90fdf0..f9a201f2d 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Padding.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Padding.java @@ -42,10 +42,12 @@ public byte getOperator() { return operator; } + @Override public int getPosition() { return position; } + @Override public void setPosition(final int position) { this.position = position; } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/ReadBase.java b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/ReadBase.java index 73ae20818..f56d6775a 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/ReadBase.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/ReadBase.java @@ -46,6 +46,7 @@ public int getPosition() { return position; } + @Override public void setPosition(final int position) { this.position = position; } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/RefSkip.java b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/RefSkip.java index 1b99f0969..e9e5ae37e 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/RefSkip.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/RefSkip.java @@ -42,10 +42,12 @@ public byte getOperator() { return operator; } + @Override public int getPosition() { return position; } + @Override public void setPosition(final int position) { this.position = position; } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/SoftClip.java b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/SoftClip.java index b142595dd..7eaac6727 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/SoftClip.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/SoftClip.java @@ -51,10 +51,12 @@ public byte getOperator() { return operator; } + @Override public int getPosition() { return position; } + @Override public void setPosition(final int position) { this.position = position; } diff --git a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Substitution.java b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Substitution.java index b2ed5de62..bc84b5aa8 100644 --- a/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Substitution.java +++ b/src/main/java/htsjdk/samtools/cram/encoding/readfeatures/Substitution.java @@ -58,10 +58,12 @@ public byte getOperator() { return operator; } + @Override public int getPosition() { return position; } + @Override public void setPosition(final int position) { this.position = position; } diff --git a/src/main/java/htsjdk/samtools/cram/io/CountingInputStream.java b/src/main/java/htsjdk/samtools/cram/io/CountingInputStream.java index b5e564206..41cb22aef 100644 --- a/src/main/java/htsjdk/samtools/cram/io/CountingInputStream.java +++ b/src/main/java/htsjdk/samtools/cram/io/CountingInputStream.java @@ -37,42 +37,50 @@ public int read() throws IOException { return delegate.read(); } + @Override public int read(@SuppressWarnings("NullableProblems") final byte[] b) throws IOException { final int read = delegate.read(b); count += read; return read; } + @Override public int read(@SuppressWarnings("NullableProblems") final byte[] b, final int off, final int length) throws IOException { final int read = delegate.read(b, off, length); count += read; return read; } + @Override public long skip(final long n) throws IOException { final long skipped = delegate.skip(n); count += skipped; return skipped; } + @Override public int available() throws IOException { return delegate.available(); } + @Override public void close() throws IOException { if (delegate != null) delegate.close(); } + @Override public void mark(final int readLimit) { delegate.mark(readLimit); } + @Override public void reset() throws IOException { delegate.reset(); count = 0; } + @Override public boolean markSupported() { return delegate.markSupported(); } diff --git a/src/main/java/htsjdk/samtools/cram/io/DefaultBitInputStream.java b/src/main/java/htsjdk/samtools/cram/io/DefaultBitInputStream.java index 519cf9da3..fef9e2b08 100644 --- a/src/main/java/htsjdk/samtools/cram/io/DefaultBitInputStream.java +++ b/src/main/java/htsjdk/samtools/cram/io/DefaultBitInputStream.java @@ -41,6 +41,7 @@ public DefaultBitInputStream(final InputStream in) { this.throwEOF = true; } + @Override public final boolean readBit() throws IOException { if (--nofBufferedBits >= 0) return ((byteBuffer >>> nofBufferedBits) & 1) == 1; @@ -55,6 +56,7 @@ public final boolean readBit() throws IOException { return ((byteBuffer >>> 7) & 1) == 1; } + @Override public final int readBits(int n) throws IOException { if (n == 0) return 0; @@ -77,6 +79,7 @@ private static int rightBits(final int n, final int x) { return x & ((1 << n) - 1); } + @Override public final long readLongBits(int n) throws IOException { if (n > 64) throw new RuntimeException("More then 64 bits are requested in one read from bit stream."); @@ -108,6 +111,7 @@ public final long readLongBits(int n) throws IOException { return x | (byteBuffer >>> nofBufferedBits); } + @Override public void reset() { nofBufferedBits = 0; byteBuffer = 0; diff --git a/src/main/java/htsjdk/samtools/cram/io/DefaultBitOutputStream.java b/src/main/java/htsjdk/samtools/cram/io/DefaultBitOutputStream.java index 2d702ee16..95d6789a8 100644 --- a/src/main/java/htsjdk/samtools/cram/io/DefaultBitOutputStream.java +++ b/src/main/java/htsjdk/samtools/cram/io/DefaultBitOutputStream.java @@ -53,6 +53,7 @@ public String toString() { + Integer.toBinaryString(bufferByte).substring(0, bufferedNumberOfBits); } + @Override public void write(final long bitContainer, final int nofBits) throws IOException { if (nofBits == 0) return; @@ -95,6 +96,7 @@ void write_int_LSB_0(final int value, final int nofBitsToWrite) throws IOExcepti } } + @Override public void write(final int bitContainer, final int nofBits) throws IOException { write_int_LSB_0(bitContainer, nofBits); } @@ -109,6 +111,7 @@ private void writeByte(final int value) throws IOException { } } + @Override public void write(byte bitContainer, final int nofBits) throws IOException { if (nofBits < 0 || nofBits > 8) throw new IOException("Expecting 0 to 8 bits."); @@ -145,6 +148,7 @@ public void write(final boolean bit) throws IOException { write(bit ? (byte) 1 : (byte) 0, 1); } + @Override public void write(final boolean bit, final long repeat) throws IOException { for (long i = 0; i < repeat; i++) write(bit); diff --git a/src/main/java/htsjdk/samtools/cram/ref/ReferenceSource.java b/src/main/java/htsjdk/samtools/cram/ref/ReferenceSource.java index e73fb4155..b162c9412 100644 --- a/src/main/java/htsjdk/samtools/cram/ref/ReferenceSource.java +++ b/src/main/java/htsjdk/samtools/cram/ref/ReferenceSource.java @@ -133,6 +133,7 @@ public void clearCache() { return bases; } + @Override public synchronized byte[] getReferenceBases(final SAMSequenceRecord record, final boolean tryNameVariants) { { // check cache by sequence name: diff --git a/src/main/java/htsjdk/samtools/fastq/FastqReader.java b/src/main/java/htsjdk/samtools/fastq/FastqReader.java index 8086dfaee..7988712f3 100755 --- a/src/main/java/htsjdk/samtools/fastq/FastqReader.java +++ b/src/main/java/htsjdk/samtools/fastq/FastqReader.java @@ -128,8 +128,10 @@ private FastqRecord readNextRecord() { } } + @Override public boolean hasNext() { return nextRecord != null; } + @Override public FastqRecord next() { if (!hasNext()) { throw new NoSuchElementException("next() called when !hasNext()"); @@ -139,6 +141,7 @@ public FastqRecord next() { return rec; } + @Override public void remove() { throw new UnsupportedOperationException("Unsupported operation"); } /** @@ -146,6 +149,7 @@ public FastqRecord next() { * start iteration from the beginning of the file. Developers should probably not call iterator() * directly. It is provided so that this class can be used in Java for-each loop. */ + @Override public Iterator iterator() { return this; } public int getLineNumber() { return line ; } diff --git a/src/main/java/htsjdk/samtools/fastq/FastqWriter.java b/src/main/java/htsjdk/samtools/fastq/FastqWriter.java index e37aec57d..3b2a1b688 100644 --- a/src/main/java/htsjdk/samtools/fastq/FastqWriter.java +++ b/src/main/java/htsjdk/samtools/fastq/FastqWriter.java @@ -9,5 +9,6 @@ */ public interface FastqWriter extends Closeable { void write(final FastqRecord rec); + @Override void close(); } diff --git a/src/main/java/htsjdk/samtools/filter/AggregateFilter.java b/src/main/java/htsjdk/samtools/filter/AggregateFilter.java index f396c593f..62b804b79 100644 --- a/src/main/java/htsjdk/samtools/filter/AggregateFilter.java +++ b/src/main/java/htsjdk/samtools/filter/AggregateFilter.java @@ -51,6 +51,7 @@ public AggregateFilter(final List filters) { * @param record the SAMRecord to evaluate * @return true if the SAMRecord matches at least one filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord record) { for (final SamRecordFilter filter : filters) { if (filter.filterOut(record)) { @@ -68,6 +69,7 @@ public boolean filterOut(final SAMRecord record) { * * @return true if the SAMRecords matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { for (final SamRecordFilter filter : filters) { if (filter.filterOut(first, second)) { diff --git a/src/main/java/htsjdk/samtools/filter/AlignedFilter.java b/src/main/java/htsjdk/samtools/filter/AlignedFilter.java index c70453d00..cebdc0b95 100644 --- a/src/main/java/htsjdk/samtools/filter/AlignedFilter.java +++ b/src/main/java/htsjdk/samtools/filter/AlignedFilter.java @@ -45,6 +45,7 @@ public AlignedFilter(final boolean includeAligned) { * * @return true if the SAMRecord matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord record) { if (includeAligned) { if (!record.getReadUnmappedFlag()) { @@ -68,6 +69,7 @@ public boolean filterOut(final SAMRecord record) { * * @return true if the SAMRecords matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { if (includeAligned) { diff --git a/src/main/java/htsjdk/samtools/filter/DuplicateReadFilter.java b/src/main/java/htsjdk/samtools/filter/DuplicateReadFilter.java index c79b3ccfd..2fe773f11 100644 --- a/src/main/java/htsjdk/samtools/filter/DuplicateReadFilter.java +++ b/src/main/java/htsjdk/samtools/filter/DuplicateReadFilter.java @@ -34,6 +34,7 @@ * @param record the SAMRecord to evaluate * @return true if the SAMRecord matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord record) { return record.getDuplicateReadFlag(); } @@ -46,6 +47,7 @@ public boolean filterOut(final SAMRecord record) { * * @return true if the SAMRecords matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { throw new UnsupportedOperationException("Paired DuplicateReadFilter filter not implemented!"); } diff --git a/src/main/java/htsjdk/samtools/filter/FailsVendorReadQualityFilter.java b/src/main/java/htsjdk/samtools/filter/FailsVendorReadQualityFilter.java index 7c6825cba..661286df3 100644 --- a/src/main/java/htsjdk/samtools/filter/FailsVendorReadQualityFilter.java +++ b/src/main/java/htsjdk/samtools/filter/FailsVendorReadQualityFilter.java @@ -38,6 +38,7 @@ * @param record the SAMRecord to evaluate * @return true if the SAMRecord matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord record) { return record.getReadFailsVendorQualityCheckFlag(); } @@ -50,6 +51,7 @@ public boolean filterOut(final SAMRecord record) { * * @return true if the SAMRecords matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { // if either fails, exclude them both return (first.getReadFailsVendorQualityCheckFlag() || second.getReadFailsVendorQualityCheckFlag()); diff --git a/src/main/java/htsjdk/samtools/filter/FilteringSamIterator.java b/src/main/java/htsjdk/samtools/filter/FilteringSamIterator.java index 7ac1c0aaa..a70156ad6 100644 --- a/src/main/java/htsjdk/samtools/filter/FilteringSamIterator.java +++ b/src/main/java/htsjdk/samtools/filter/FilteringSamIterator.java @@ -87,6 +87,7 @@ public FilteringSamIterator(final Iterator iterator, final SamRecordF * * @return true if the iteration has more elements. Otherwise returns false. */ + @Override public boolean hasNext() { return next != null; } @@ -98,6 +99,7 @@ public boolean hasNext() { * @throws java.util.NoSuchElementException * */ + @Override public SAMRecord next() { if (next == null) { throw new NoSuchElementException("Iterator has no more elements."); @@ -112,10 +114,12 @@ public SAMRecord next() { * * @throws UnsupportedOperationException */ + @Override public void remove() { throw new UnsupportedOperationException("Remove() not supported by FilteringSamIterator"); } + @Override public void close() { CloserUtil.close(iterator); } diff --git a/src/main/java/htsjdk/samtools/filter/IntervalFilter.java b/src/main/java/htsjdk/samtools/filter/IntervalFilter.java index ff3620ae9..ef5c98a3f 100644 --- a/src/main/java/htsjdk/samtools/filter/IntervalFilter.java +++ b/src/main/java/htsjdk/samtools/filter/IntervalFilter.java @@ -65,6 +65,7 @@ public IntervalFilter(final List intervals, final SAMFileHeader samHea * @param record the SAMRecord to evaluate * @return true if the SAMRecord matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord record) { while (currentInterval != null && (currentSequenceIndex < record.getReferenceIndex() || @@ -93,6 +94,7 @@ private void advanceInterval() { * * @return true if the SAMRecords matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { // This can never be implemented because if the bam is coordinate sorted, // which it has to be for this filter, it will never get both the first and second reads together diff --git a/src/main/java/htsjdk/samtools/filter/IntervalKeepPairFilter.java b/src/main/java/htsjdk/samtools/filter/IntervalKeepPairFilter.java index 5a7961bbb..c4e01aae2 100644 --- a/src/main/java/htsjdk/samtools/filter/IntervalKeepPairFilter.java +++ b/src/main/java/htsjdk/samtools/filter/IntervalKeepPairFilter.java @@ -65,6 +65,7 @@ public IntervalKeepPairFilter(final List intervals) { * @param record the SAMRecord to evaluate * @return true if the SAMRecord matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord record) { if (record.isSecondaryOrSupplementary()) { return true; @@ -102,6 +103,7 @@ private boolean hasOverlaps(final String refSequence, final int start, final int * * @return true if both SAMRecords do not overlap the interval list */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { return filterOut(first) && filterOut(second); } diff --git a/src/main/java/htsjdk/samtools/filter/NotPrimaryAlignmentFilter.java b/src/main/java/htsjdk/samtools/filter/NotPrimaryAlignmentFilter.java index 0f2364c92..cda45e045 100644 --- a/src/main/java/htsjdk/samtools/filter/NotPrimaryAlignmentFilter.java +++ b/src/main/java/htsjdk/samtools/filter/NotPrimaryAlignmentFilter.java @@ -35,6 +35,7 @@ * @param record the SAMRecord to evaluate * @return true if the SAMRecord matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord record) { return record.getNotPrimaryAlignmentFlag(); } @@ -47,6 +48,7 @@ public boolean filterOut(final SAMRecord record) { * * @return true if the SAMRecords matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { // if either fails, exclude them both return (first.getNotPrimaryAlignmentFlag() || second.getNotPrimaryAlignmentFlag()); diff --git a/src/main/java/htsjdk/samtools/filter/ReadNameFilter.java b/src/main/java/htsjdk/samtools/filter/ReadNameFilter.java index e4b2a20d9..94a4397a8 100644 --- a/src/main/java/htsjdk/samtools/filter/ReadNameFilter.java +++ b/src/main/java/htsjdk/samtools/filter/ReadNameFilter.java @@ -79,6 +79,7 @@ public ReadNameFilter(final Set readNameFilterSet, final boolean include * * @return true if the SAMRecord matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord record) { if (includeReads) { if (readNameFilterSet.contains(record.getReadName())) { @@ -101,6 +102,7 @@ public boolean filterOut(final SAMRecord record) { * * @return true if the pair of records matches filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { if (includeReads) { if (readNameFilterSet.contains(first.getReadName()) && diff --git a/src/main/java/htsjdk/samtools/filter/SecondaryAlignmentFilter.java b/src/main/java/htsjdk/samtools/filter/SecondaryAlignmentFilter.java index d91212d40..22741ae0d 100644 --- a/src/main/java/htsjdk/samtools/filter/SecondaryAlignmentFilter.java +++ b/src/main/java/htsjdk/samtools/filter/SecondaryAlignmentFilter.java @@ -9,11 +9,13 @@ /** * Returns true if the read is marked as secondary. */ + @Override public boolean filterOut(final SAMRecord record) { return record.getNotPrimaryAlignmentFlag(); } /** * Returns true if either read is marked as secondary. */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { return first.getNotPrimaryAlignmentFlag() || second.getNotPrimaryAlignmentFlag(); } diff --git a/src/main/java/htsjdk/samtools/filter/SecondaryOrSupplementaryFilter.java b/src/main/java/htsjdk/samtools/filter/SecondaryOrSupplementaryFilter.java index ae57fd9d3..b7d21d157 100644 --- a/src/main/java/htsjdk/samtools/filter/SecondaryOrSupplementaryFilter.java +++ b/src/main/java/htsjdk/samtools/filter/SecondaryOrSupplementaryFilter.java @@ -13,6 +13,7 @@ * @param record the SAMRecord to evaluate * @return true if the SAMRecord matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord record) { return record.isSecondaryOrSupplementary(); } @@ -25,6 +26,7 @@ public boolean filterOut(final SAMRecord record) { * * @return true if the SAMRecords matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { // if either fails, exclude them both return first.isSecondaryOrSupplementary() || second.isSecondaryOrSupplementary(); diff --git a/src/main/java/htsjdk/samtools/filter/SolexaNoiseFilter.java b/src/main/java/htsjdk/samtools/filter/SolexaNoiseFilter.java index bfb31d6d4..ce169ef83 100644 --- a/src/main/java/htsjdk/samtools/filter/SolexaNoiseFilter.java +++ b/src/main/java/htsjdk/samtools/filter/SolexaNoiseFilter.java @@ -40,6 +40,7 @@ * @param record the SAMRecord to evaluate * @return true if the SAMRecord matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord record) { final byte[] sequence = record.getReadBases(); for (final byte base : sequence) { @@ -59,6 +60,7 @@ public boolean filterOut(final SAMRecord record) { * * @return true if the SAMRecords matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { // only filter out the pair if both first and second reads have all As return (filterOut(first) && filterOut(second)); diff --git a/src/main/java/htsjdk/samtools/filter/TagFilter.java b/src/main/java/htsjdk/samtools/filter/TagFilter.java index 5182e836c..00ca8a46c 100644 --- a/src/main/java/htsjdk/samtools/filter/TagFilter.java +++ b/src/main/java/htsjdk/samtools/filter/TagFilter.java @@ -66,6 +66,7 @@ public TagFilter(String tag, List values) { * @param record the SAMRecord to evaluate * @return true if the SAMRecord matches the filter, otherwise false */ + @Override public boolean filterOut(SAMRecord record) { return values.contains(record.getAttribute(tag)); } @@ -78,6 +79,7 @@ public boolean filterOut(SAMRecord record) { * * @return true if the SAMRecords matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { // both first and second must have the tag in order for it to be filtered out return values.contains(first.getAttribute(tag)) && values.contains(second.getAttribute(tag)); diff --git a/src/main/java/htsjdk/samtools/filter/WholeReadClippedFilter.java b/src/main/java/htsjdk/samtools/filter/WholeReadClippedFilter.java index 2a1566ce0..6df3c4454 100644 --- a/src/main/java/htsjdk/samtools/filter/WholeReadClippedFilter.java +++ b/src/main/java/htsjdk/samtools/filter/WholeReadClippedFilter.java @@ -57,6 +57,7 @@ public boolean filterOut(final SAMRecord record) { * * @return true if the SAMRecords matches the filter, otherwise false */ + @Override public boolean filterOut(final SAMRecord first, final SAMRecord second) { // if either fails, exclude them both return (filterOut(first) || filterOut(second)); diff --git a/src/main/java/htsjdk/samtools/metrics/StringHeader.java b/src/main/java/htsjdk/samtools/metrics/StringHeader.java index ced159598..949dd4153 100644 --- a/src/main/java/htsjdk/samtools/metrics/StringHeader.java +++ b/src/main/java/htsjdk/samtools/metrics/StringHeader.java @@ -43,6 +43,7 @@ public StringHeader(String value) { setValue(value); } + @Override public void parse(String in) { value = in.trim(); } public String toString() { return value; } diff --git a/src/main/java/htsjdk/samtools/metrics/VersionHeader.java b/src/main/java/htsjdk/samtools/metrics/VersionHeader.java index ae0845502..82093aaa5 100644 --- a/src/main/java/htsjdk/samtools/metrics/VersionHeader.java +++ b/src/main/java/htsjdk/samtools/metrics/VersionHeader.java @@ -37,6 +37,7 @@ private String versionedItem; private String versionString; + @Override public void parse(String in) { String[] fields = in.split("\t"); this.versionedItem = fields[0]; diff --git a/src/main/java/htsjdk/samtools/reference/AbstractFastaSequenceFile.java b/src/main/java/htsjdk/samtools/reference/AbstractFastaSequenceFile.java index badcf1987..736107bb1 100644 --- a/src/main/java/htsjdk/samtools/reference/AbstractFastaSequenceFile.java +++ b/src/main/java/htsjdk/samtools/reference/AbstractFastaSequenceFile.java @@ -115,6 +115,7 @@ protected Path getPath() { * Returns the list of sequence records associated with the reference sequence if found * otherwise null. */ + @Override public SAMSequenceDictionary getSequenceDictionary() { return this.sequenceDictionary; } @@ -130,14 +131,17 @@ public String toString() { } /** default implementation -- override if index is supported */ + @Override public boolean isIndexed() {return false;} /** default implementation -- override if index is supported */ + @Override public ReferenceSequence getSequence( String contig ) { throw new UnsupportedOperationException(); } /** default implementation -- override if index is supported */ + @Override public ReferenceSequence getSubsequenceAt( String contig, long start, long stop ) { throw new UnsupportedOperationException("Index does not appear to exist for " + getAbsolutePath() + ". samtools faidx can be used to create an index"); } diff --git a/src/main/java/htsjdk/samtools/reference/FastaSequenceFile.java b/src/main/java/htsjdk/samtools/reference/FastaSequenceFile.java index 72c0583bb..744d79773 100644 --- a/src/main/java/htsjdk/samtools/reference/FastaSequenceFile.java +++ b/src/main/java/htsjdk/samtools/reference/FastaSequenceFile.java @@ -62,10 +62,12 @@ public FastaSequenceFile(final Path path, final boolean truncateNamesAtWhitespac /** * It's good to call this to free up memory. */ + @Override public void close() { in.close(); } + @Override public ReferenceSequence nextSequence() { this.sequenceIndex += 1; @@ -83,6 +85,7 @@ public ReferenceSequence nextSequence() { return new ReferenceSequence(name, this.sequenceIndex, bases); } + @Override public void reset() { this.sequenceIndex = -1; this.in.close(); diff --git a/src/main/java/htsjdk/samtools/reference/FastaSequenceIndex.java b/src/main/java/htsjdk/samtools/reference/FastaSequenceIndex.java index e314fccbe..9ae9f1db9 100644 --- a/src/main/java/htsjdk/samtools/reference/FastaSequenceIndex.java +++ b/src/main/java/htsjdk/samtools/reference/FastaSequenceIndex.java @@ -184,6 +184,7 @@ public FastaSequenceIndexEntry getIndexEntry( String contigName ) { * Creates an iterator which can iterate through all entries in a fasta index. * @return iterator over all fasta index entries. */ + @Override public Iterator iterator() { return sequenceEntries.values().iterator(); } diff --git a/src/main/java/htsjdk/samtools/reference/IndexedFastaSequenceFile.java b/src/main/java/htsjdk/samtools/reference/IndexedFastaSequenceFile.java index 60cc3b1b7..5a8703381 100644 --- a/src/main/java/htsjdk/samtools/reference/IndexedFastaSequenceFile.java +++ b/src/main/java/htsjdk/samtools/reference/IndexedFastaSequenceFile.java @@ -111,6 +111,7 @@ public IndexedFastaSequenceFile(final Path path) throws FileNotFoundException { this(path, new FastaSequenceIndex((findRequiredFastaIndexFile(path)))); } + @Override public boolean isIndexed() {return true;} private static File findFastaIndex(File fastaFile) { @@ -190,6 +191,7 @@ protected static void sanityCheckDictionaryAgainstIndex(final String fastaFile, * Retrieves the sequence dictionary for the fasta file. * @return sequence dictionary of the fasta. */ + @Override public SAMSequenceDictionary getSequenceDictionary() { return sequenceDictionary; } @@ -199,6 +201,7 @@ public SAMSequenceDictionary getSequenceDictionary() { * @param contig contig whose data should be returned. * @return The full sequence associated with this contig. */ + @Override public ReferenceSequence getSequence( String contig ) { return getSubsequenceAt( contig, 1, (int)index.getIndexEntry(contig).getSize() ); } @@ -210,6 +213,7 @@ public ReferenceSequence getSequence( String contig ) { * @param stop inclusive, 1-based stop of region. * @return The partial reference sequence associated with this range. */ + @Override public ReferenceSequence getSubsequenceAt( String contig, long start, long stop ) { if(start > stop + 1) throw new SAMException(String.format("Malformed query; start point %d lies after end point %d",start,stop)); @@ -300,6 +304,7 @@ private static int readFromPosition(final SeekableByteChannel channel, final Byt * Gets the next sequence if available, or null if not present. * @return next sequence if available, or null if not present. */ + @Override public ReferenceSequence nextSequence() { if( !indexIterator.hasNext() ) return null; @@ -309,6 +314,7 @@ public ReferenceSequence nextSequence() { /** * Reset the iterator over the index. */ + @Override public void reset() { indexIterator = index.iterator(); } diff --git a/src/main/java/htsjdk/samtools/reference/ReferenceSequenceFile.java b/src/main/java/htsjdk/samtools/reference/ReferenceSequenceFile.java index e7d3c288c..49f526cbc 100644 --- a/src/main/java/htsjdk/samtools/reference/ReferenceSequenceFile.java +++ b/src/main/java/htsjdk/samtools/reference/ReferenceSequenceFile.java @@ -86,5 +86,6 @@ */ public String toString(); + @Override public void close() throws IOException; } diff --git a/src/main/java/htsjdk/samtools/reference/ReferenceSequenceFileWalker.java b/src/main/java/htsjdk/samtools/reference/ReferenceSequenceFileWalker.java index d66f0f870..6a820ebbe 100644 --- a/src/main/java/htsjdk/samtools/reference/ReferenceSequenceFileWalker.java +++ b/src/main/java/htsjdk/samtools/reference/ReferenceSequenceFileWalker.java @@ -105,6 +105,7 @@ public SAMSequenceDictionary getSequenceDictionary() { return referenceSequenceFile.getSequenceDictionary(); } + @Override public void close() throws IOException { referenceSequenceFile.close(); } diff --git a/src/main/java/htsjdk/samtools/seekablestream/SeekableBufferedStream.java b/src/main/java/htsjdk/samtools/seekablestream/SeekableBufferedStream.java index 56b4d0c9c..0c89b0166 100644 --- a/src/main/java/htsjdk/samtools/seekablestream/SeekableBufferedStream.java +++ b/src/main/java/htsjdk/samtools/seekablestream/SeekableBufferedStream.java @@ -67,6 +67,7 @@ public SeekableBufferedStream(final SeekableStream stream) { this(stream, DEFAULT_BUFFER_SIZE); } + @Override public long length() { return wrappedStream.length(); } @@ -84,18 +85,21 @@ public long skip(final long skipLength) throws IOException { } } + @Override public void seek(final long position) throws IOException { this.position = position; wrappedStream.seek(position); bufferedStream = new ExtBufferedInputStream(wrappedStream, bufferSize); } + @Override public int read() throws IOException { int b = bufferedStream.read(); position++; return b; } + @Override public int read(final byte[] buffer, final int offset, final int length) throws IOException { int nBytesRead = bufferedStream.read(buffer, offset, length); if (nBytesRead > 0) { @@ -112,10 +116,12 @@ public int read(final byte[] buffer, final int offset, final int length) throws return nBytesRead; } + @Override public void close() throws IOException { wrappedStream.close(); } + @Override public boolean eof() throws IOException { return position >= wrappedStream.length(); } diff --git a/src/main/java/htsjdk/samtools/seekablestream/SeekableFTPStream.java b/src/main/java/htsjdk/samtools/seekablestream/SeekableFTPStream.java index 0a64a7c09..1723747d5 100644 --- a/src/main/java/htsjdk/samtools/seekablestream/SeekableFTPStream.java +++ b/src/main/java/htsjdk/samtools/seekablestream/SeekableFTPStream.java @@ -39,10 +39,12 @@ public SeekableFTPStream(URL url, UserPasswordInput userPasswordInput) throws IO helper = new SeekableFTPStreamHelper(url, userPasswordInput); } + @Override public void seek(long position) { helper.seek(position); } + @Override public long position() { return helper.position(); } @@ -75,10 +77,12 @@ public int read(byte[] buffer, int offset, int len) throws IOException { } + @Override public void close() throws IOException { helper.close(); } + @Override public int read() throws IOException { return helper.read(); } diff --git a/src/main/java/htsjdk/samtools/seekablestream/SeekableFileStream.java b/src/main/java/htsjdk/samtools/seekablestream/SeekableFileStream.java index 38191d769..b790732a9 100644 --- a/src/main/java/htsjdk/samtools/seekablestream/SeekableFileStream.java +++ b/src/main/java/htsjdk/samtools/seekablestream/SeekableFileStream.java @@ -48,18 +48,22 @@ public SeekableFileStream(final File file) throws FileNotFoundException { allInstances.add(this); } + @Override public long length() { return file.length(); } + @Override public boolean eof() throws IOException { return fis.length() == fis.getFilePointer(); } + @Override public void seek(final long position) throws IOException { fis.seek(position); } + @Override public long position() throws IOException { return fis.getChannel().position(); } @@ -71,6 +75,7 @@ public long skip(long n) throws IOException { return position() - initPos; } + @Override public int read(final byte[] buffer, final int offset, final int length) throws IOException { if (length < 0) { throw new IndexOutOfBoundsException(); @@ -91,6 +96,7 @@ public int read(final byte[] buffer, final int offset, final int length) throws } + @Override public int read() throws IOException { return fis.read(); } @@ -106,6 +112,7 @@ public String getSource() { } + @Override public void close() throws IOException { allInstances.remove(this); fis.close(); diff --git a/src/main/java/htsjdk/samtools/seekablestream/SeekableHTTPStream.java b/src/main/java/htsjdk/samtools/seekablestream/SeekableHTTPStream.java index 4a864b77e..640a14d98 100644 --- a/src/main/java/htsjdk/samtools/seekablestream/SeekableHTTPStream.java +++ b/src/main/java/htsjdk/samtools/seekablestream/SeekableHTTPStream.java @@ -67,10 +67,12 @@ public SeekableHTTPStream(final URL url, Proxy proxy) { } + @Override public long position() { return position; } + @Override public long length() { return contentLength; } @@ -82,14 +84,17 @@ public long skip(long n) throws IOException { return bytesToSkip; } + @Override public boolean eof() throws IOException { return contentLength > 0 && position >= contentLength; } + @Override public void seek(final long position) { this.position = position; } + @Override public int read(byte[] buffer, int offset, int len) throws IOException { if (offset < 0 || len < 0 || (offset + len) > buffer.length) { @@ -168,11 +173,13 @@ public int read(byte[] buffer, int offset, int len) throws IOException { } + @Override public void close() throws IOException { // Nothing to do } + @Override public int read() throws IOException { byte []tmp=new byte[1]; read(tmp,0,1); diff --git a/src/main/java/htsjdk/samtools/seekablestream/SeekableStream.java b/src/main/java/htsjdk/samtools/seekablestream/SeekableStream.java index 673f08c48..45f699043 100644 --- a/src/main/java/htsjdk/samtools/seekablestream/SeekableStream.java +++ b/src/main/java/htsjdk/samtools/seekablestream/SeekableStream.java @@ -35,8 +35,10 @@ public abstract void seek(long position) throws IOException; + @Override public abstract int read(byte[] buffer, int offset, int length) throws IOException; + @Override public abstract void close() throws IOException; public abstract boolean eof() throws IOException; diff --git a/src/main/java/htsjdk/samtools/sra/SRALazyRecord.java b/src/main/java/htsjdk/samtools/sra/SRALazyRecord.java index 4391857e6..c5067116e 100644 --- a/src/main/java/htsjdk/samtools/sra/SRALazyRecord.java +++ b/src/main/java/htsjdk/samtools/sra/SRALazyRecord.java @@ -675,6 +675,7 @@ protected SAMBinaryTagAndValue getBinaryAttributes() { return super.getBinaryAttributes(); } + @Override public boolean isUnsignedArrayAttribute(final String tag) { Short binaryTag = SAMTagUtil.getSingleton().makeBinaryTag(tag); LazyAttribute attr = lazyAttributeTags.get(binaryTag); diff --git a/src/main/java/htsjdk/samtools/util/AbstractAsyncWriter.java b/src/main/java/htsjdk/samtools/util/AbstractAsyncWriter.java index ef1803bce..f69578c07 100644 --- a/src/main/java/htsjdk/samtools/util/AbstractAsyncWriter.java +++ b/src/main/java/htsjdk/samtools/util/AbstractAsyncWriter.java @@ -66,6 +66,7 @@ public void write(final T item) { * Attempts to finish draining the queue and then calls synchronouslyClose() to allow implementation * to do any one time clean up. */ + @Override public void close() { checkAndRethrow(); @@ -110,6 +111,7 @@ private final void checkAndRethrow() { * synchronous writer. */ private class WriterRunnable implements Runnable { + @Override public void run() { try { //The order of the two conditions is important, see https://github.com/samtools/htsjdk/issues/564 diff --git a/src/main/java/htsjdk/samtools/util/AbstractLocusInfo.java b/src/main/java/htsjdk/samtools/util/AbstractLocusInfo.java index 4e020071d..d699dce8f 100644 --- a/src/main/java/htsjdk/samtools/util/AbstractLocusInfo.java +++ b/src/main/java/htsjdk/samtools/util/AbstractLocusInfo.java @@ -83,6 +83,7 @@ public void add(E recordAndOffset) { /** * @return the index of reference sequence */ + @Override public int getSequenceIndex() { return referenceSequence.getSequenceIndex(); } @@ -90,6 +91,7 @@ public int getSequenceIndex() { /** * @return 1-based reference position */ + @Override public int getPosition() { return position; } diff --git a/src/main/java/htsjdk/samtools/util/AbstractLocusIterator.java b/src/main/java/htsjdk/samtools/util/AbstractLocusIterator.java index 6ff8e835c..e35087405 100644 --- a/src/main/java/htsjdk/samtools/util/AbstractLocusIterator.java +++ b/src/main/java/htsjdk/samtools/util/AbstractLocusIterator.java @@ -182,6 +182,7 @@ public AbstractLocusIterator(final SamReader samReader, final IntervalList inter * @return iterator over all/all covered locus position in reference according to emitUncoveredLoci * value. */ + @Override public Iterator iterator() { if (samIterator != null) { throw new IllegalStateException("Cannot call iterator() more than once on " + this.getClass().getSimpleName()); @@ -202,6 +203,7 @@ public AbstractLocusIterator(final SamReader samReader, final IntervalList inter /** * Closes inner SamIterator. */ + @Override public void close() { this.samIterator.close(); } @@ -216,6 +218,7 @@ private boolean samHasMore() { * 2) there are AbstractLocusInfos in some stage of accumulation * 3) there are loci in the target mask that have yet to be accumulated (even if there are no reads covering them) */ + @Override public boolean hasNext() { if (this.samIterator == null) { iterator(); @@ -253,6 +256,7 @@ private boolean hasRemainingMaskBases() { * * @return information about next locus position in reference sequence */ + @Override public K next() { // if we don't have any completed entries to return, try and make some! while (complete.isEmpty() && samHasMore()) { @@ -475,6 +479,7 @@ protected SAMSequenceRecord getReferenceSequence(final int referenceSequenceInde return samReader.getFileHeader().getSequence(referenceSequenceIndex); } + @Override public void remove() { throw new UnsupportedOperationException("Can not remove records from a SAM file via an iterator!"); } diff --git a/src/main/java/htsjdk/samtools/util/AsciiWriter.java b/src/main/java/htsjdk/samtools/util/AsciiWriter.java index 00c6f7f1f..50b08d844 100644 --- a/src/main/java/htsjdk/samtools/util/AsciiWriter.java +++ b/src/main/java/htsjdk/samtools/util/AsciiWriter.java @@ -50,6 +50,7 @@ public AsciiWriter(final OutputStream os) { /** * flushes and closes underlying OutputStream. */ + @Override public void close() throws IOException { flush(); os.close(); @@ -58,6 +59,7 @@ public void close() throws IOException { /** * flushes underlying OutputStream */ + @Override public void flush() throws IOException { os.write(buffer, 0, numBytes); numBytes = 0; @@ -67,6 +69,7 @@ public void flush() throws IOException { /** * All other Writer methods vector through this, so this is the only one that must be overridden. */ + @Override public void write(final char[] chars, int offset, int length) throws IOException { while (length > 0) { final int charsToConvert = Math.min(length, buffer.length - numBytes); diff --git a/src/main/java/htsjdk/samtools/util/AsyncBlockCompressedInputStream.java b/src/main/java/htsjdk/samtools/util/AsyncBlockCompressedInputStream.java index cbb168d43..4f71ef581 100644 --- a/src/main/java/htsjdk/samtools/util/AsyncBlockCompressedInputStream.java +++ b/src/main/java/htsjdk/samtools/util/AsyncBlockCompressedInputStream.java @@ -47,6 +47,7 @@ public class AsyncBlockCompressedInputStream extends BlockCompressedInputStream { private static final int READ_AHEAD_BUFFERS = (int)Math.ceil(Defaults.NON_ZERO_BUFFER_SIZE / BlockCompressedStreamConstants.MAX_COMPRESSED_BLOCK_SIZE); private static final Executor threadpool = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors(),new ThreadFactory() { + @Override public Thread newThread(Runnable r) { Thread t = Executors.defaultThreadFactory().newThread(r); t.setDaemon(true); diff --git a/src/main/java/htsjdk/samtools/util/BinaryCodec.java b/src/main/java/htsjdk/samtools/util/BinaryCodec.java index 8933ee35d..fdef93196 100644 --- a/src/main/java/htsjdk/samtools/util/BinaryCodec.java +++ b/src/main/java/htsjdk/samtools/util/BinaryCodec.java @@ -587,6 +587,7 @@ public long readUInt() { /** * Close the appropriate stream */ + @Override public void close() { try { if (this.isWriting) { diff --git a/src/main/java/htsjdk/samtools/util/BlockCompressedInputStream.java b/src/main/java/htsjdk/samtools/util/BlockCompressedInputStream.java index 70a316199..066a0c001 100755 --- a/src/main/java/htsjdk/samtools/util/BlockCompressedInputStream.java +++ b/src/main/java/htsjdk/samtools/util/BlockCompressedInputStream.java @@ -189,6 +189,7 @@ public void setCheckCrcs(final boolean check) { * Note that although the next caller can read this many bytes without blocking, the available() method call itself * may block in order to fill an internal buffer if it has been exhausted. */ + @Override public int available() throws IOException { if (mCurrentBlock == null || mCurrentOffset == mCurrentBlock.mBlock.length) { readBlock(); @@ -210,6 +211,7 @@ public boolean endOfBlock() { /** * Closes the underlying InputStream or RandomAccessFile */ + @Override public void close() throws IOException { if (mFile != null) { mFile.close(); @@ -230,6 +232,7 @@ public void close() throws IOException { * @return the next byte of data, or -1 if the end of the stream is reached. */ + @Override public int read() throws IOException { return (available() > 0) ? (mCurrentBlock.mBlock[mCurrentOffset++] & 0xFF) : -1; } @@ -245,6 +248,7 @@ public int read() throws IOException { * @return the total number of bytes read into the buffer, or -1 is there is no more data because the end of * the stream has been reached. */ + @Override public int read(final byte[] buffer) throws IOException { return read(buffer, 0, buffer.length); } @@ -316,6 +320,7 @@ public String readLine() throws IOException { * @return the total number of bytes read into the buffer, or -1 if there is no more data because the end of * the stream has been reached. */ + @Override public int read(final byte[] buffer, int offset, int length) throws IOException { final int originalLength = length; while (length > 0) { diff --git a/src/main/java/htsjdk/samtools/util/BlockCompressedOutputStream.java b/src/main/java/htsjdk/samtools/util/BlockCompressedOutputStream.java index 408282f1f..4e9a59487 100644 --- a/src/main/java/htsjdk/samtools/util/BlockCompressedOutputStream.java +++ b/src/main/java/htsjdk/samtools/util/BlockCompressedOutputStream.java @@ -296,6 +296,7 @@ public void close() throws IOException { * @param bite * @throws IOException */ + @Override public void write(final int bite) throws IOException { singleByteArray[0] = (byte)bite; write(singleByteArray); diff --git a/src/main/java/htsjdk/samtools/util/BufferedLineReader.java b/src/main/java/htsjdk/samtools/util/BufferedLineReader.java index de1115dc4..18a4d05c0 100644 --- a/src/main/java/htsjdk/samtools/util/BufferedLineReader.java +++ b/src/main/java/htsjdk/samtools/util/BufferedLineReader.java @@ -59,6 +59,7 @@ public BufferedLineReader(final InputStream is, final int bufferSize) { * * @return the line read, or null if EOF has been reached. */ + @Override public String readLine() { ++lineNumber; try { @@ -78,6 +79,7 @@ public String readLine() { /** * @return 1-based number of line most recently read */ + @Override public int getLineNumber() { return lineNumber; } @@ -87,6 +89,7 @@ public int getLineNumber() { * * @return If not eof, the next character that would be read. If eof, -1. */ + @Override public int peek() { if (peekedLine == null) { try { @@ -104,6 +107,7 @@ public int peek() { return peekedLine.charAt(0); } + @Override public void close() { peekedLine = null; try { diff --git a/src/main/java/htsjdk/samtools/util/CloseableIterator.java b/src/main/java/htsjdk/samtools/util/CloseableIterator.java index d26443e0c..fa657be22 100755 --- a/src/main/java/htsjdk/samtools/util/CloseableIterator.java +++ b/src/main/java/htsjdk/samtools/util/CloseableIterator.java @@ -45,6 +45,7 @@ */ public interface CloseableIterator extends Iterator, Closeable { /** Should be implemented to close/release any underlying resources. */ + @Override void close(); /** Consumes the contents of the iterator and returns it as a List. */ diff --git a/src/main/java/htsjdk/samtools/util/DelegatingIterator.java b/src/main/java/htsjdk/samtools/util/DelegatingIterator.java index 054352bac..9d5174a93 100644 --- a/src/main/java/htsjdk/samtools/util/DelegatingIterator.java +++ b/src/main/java/htsjdk/samtools/util/DelegatingIterator.java @@ -15,20 +15,24 @@ public DelegatingIterator(final Iterator iterator) { this.iterator = iterator; } + @Override public void close() { if (iterator instanceof CloseableIterator) { ((CloseableIterator) this.iterator).close(); } } + @Override public boolean hasNext() { return this.iterator.hasNext(); } + @Override public T next() { return this.iterator.next(); } + @Override public void remove() { this.iterator.remove(); } diff --git a/src/main/java/htsjdk/samtools/util/DiskBackedQueue.java b/src/main/java/htsjdk/samtools/util/DiskBackedQueue.java index bbf38188b..22fca1138 100644 --- a/src/main/java/htsjdk/samtools/util/DiskBackedQueue.java +++ b/src/main/java/htsjdk/samtools/util/DiskBackedQueue.java @@ -130,6 +130,7 @@ public boolean headRecordIsFromDisk() { * @return true (if add successful) * @throws IllegalStateException if the queue cannot be added to */ + @Override public boolean add(final E record) throws IllegalStateException { if (!canAdd) throw new IllegalStateException("Cannot add to DiskBackedQueue whose canAdd() method returns false"); @@ -192,6 +193,7 @@ public E peek() { /** * Return the total number of elements in the queue, both in memory and on disk */ + @Override public int size() { return (this.headRecord == null) ? 0 : (1 + this.ramRecords.size() + this.numRecordsOnDisk); } @@ -238,6 +240,7 @@ public void clear() { * * @throws Throwable */ + @Override protected void finalize() throws Throwable { this.closeIOResources(); super.finalize(); // NB: intellij wanted me to do this. Need I? I'm not extending anything diff --git a/src/main/java/htsjdk/samtools/util/EdgingRecordAndOffset.java b/src/main/java/htsjdk/samtools/util/EdgingRecordAndOffset.java index b83a169e6..85beb66f0 100644 --- a/src/main/java/htsjdk/samtools/util/EdgingRecordAndOffset.java +++ b/src/main/java/htsjdk/samtools/util/EdgingRecordAndOffset.java @@ -103,6 +103,7 @@ protected StartEdgingRecordAndOffset(SAMRecord record, int offset, int length, i * @param position in the reference * @return base quality of a read base, corresponding to a given reference position */ + @Override public byte getBaseQuality(int position) { int rOffset = getRelativeOffset(position); byte[] baseQualities = record.getBaseQualities(); @@ -174,6 +175,7 @@ private int getRelativeOffset(int position) { * @param position in the reference * @return base quality of a read base, corresponding to a given reference position */ + @Override public byte getBaseQuality(int position) { return start.getBaseQuality(position); } diff --git a/src/main/java/htsjdk/samtools/util/FastLineReader.java b/src/main/java/htsjdk/samtools/util/FastLineReader.java index d802fad22..95d620267 100644 --- a/src/main/java/htsjdk/samtools/util/FastLineReader.java +++ b/src/main/java/htsjdk/samtools/util/FastLineReader.java @@ -79,6 +79,7 @@ public boolean skipNewlines() { return sawEoln; } + @Override public void close() { CloserUtil.close(in); in = null; diff --git a/src/main/java/htsjdk/samtools/util/FileAppendStreamLRUCache.java b/src/main/java/htsjdk/samtools/util/FileAppendStreamLRUCache.java index bc8bc01cd..500b93182 100644 --- a/src/main/java/htsjdk/samtools/util/FileAppendStreamLRUCache.java +++ b/src/main/java/htsjdk/samtools/util/FileAppendStreamLRUCache.java @@ -47,6 +47,7 @@ public FileAppendStreamLRUCache(final int cacheSize) { } private static class Functor implements ResourceLimitedMapFunctor { + @Override public OutputStream makeValue(final File file) { try { return IOUtil.maybeBufferOutputStream(new FileOutputStream(file, true)); @@ -65,6 +66,7 @@ public OutputStream makeValue(final File file) { } } + @Override public void finalizeValue(final File file, final OutputStream out) { try { out.flush(); diff --git a/src/main/java/htsjdk/samtools/util/IOUtil.java b/src/main/java/htsjdk/samtools/util/IOUtil.java index 97d4d9cdc..0903a09f0 100644 --- a/src/main/java/htsjdk/samtools/util/IOUtil.java +++ b/src/main/java/htsjdk/samtools/util/IOUtil.java @@ -696,6 +696,7 @@ public static void copyFile(final File input, final File output) { public static File[] getFilesMatchingRegexp(final File directory, final Pattern regexp) { return directory.listFiles( new FilenameFilter() { + @Override public boolean accept(final File dir, final String name) { return regexp.matcher(name).matches(); } diff --git a/src/main/java/htsjdk/samtools/util/Interval.java b/src/main/java/htsjdk/samtools/util/Interval.java index 779bb25c9..51e91270a 100644 --- a/src/main/java/htsjdk/samtools/util/Interval.java +++ b/src/main/java/htsjdk/samtools/util/Interval.java @@ -141,6 +141,7 @@ public static long countBases(final Collection intervals) { * Sort based on sequence.compareTo, then start pos, then end pos * with null objects coming lexically last */ + @Override public int compareTo(final Interval that) { if (that == null) return -1; // nulls last diff --git a/src/main/java/htsjdk/samtools/util/IntervalList.java b/src/main/java/htsjdk/samtools/util/IntervalList.java index 76cb5084c..9bfc718f9 100644 --- a/src/main/java/htsjdk/samtools/util/IntervalList.java +++ b/src/main/java/htsjdk/samtools/util/IntervalList.java @@ -84,6 +84,7 @@ public IntervalList(final SAMSequenceDictionary dict) { public SAMFileHeader getHeader() { return header; } /** Returns an iterator over the intervals. */ + @Override public Iterator iterator() { return this.intervals.iterator(); } /** Adds an interval to the list of intervals. */ @@ -762,6 +763,7 @@ public int hashCode() { this.header = header; } + @Override public int compare(final Interval lhs, final Interval rhs) { final int lhsIndex = this.header.getSequenceIndex(lhs.getContig()); final int rhsIndex = this.header.getSequenceIndex(rhs.getContig()); diff --git a/src/main/java/htsjdk/samtools/util/IntervalListReferenceSequenceMask.java b/src/main/java/htsjdk/samtools/util/IntervalListReferenceSequenceMask.java index 1ddd164c6..08c2dd5e1 100644 --- a/src/main/java/htsjdk/samtools/util/IntervalListReferenceSequenceMask.java +++ b/src/main/java/htsjdk/samtools/util/IntervalListReferenceSequenceMask.java @@ -66,6 +66,7 @@ public IntervalListReferenceSequenceMask(final IntervalList intervalList) { * * @return true if the mask is set for the given sequence and position */ + @Override public boolean get(final int sequenceIndex, final int position) { ensureSequenceLoaded(sequenceIndex); return currentBitSet.get(position); @@ -76,6 +77,7 @@ public boolean get(final int sequenceIndex, final int position) { * * @return the next pos on the given sequence >= position that is set, or -1 if there are no more set positions */ + @Override public int nextPosition(final int sequenceIndex, final int position) { ensureSequenceLoaded(sequenceIndex); // nextSetBit returns the first set bit on or after the starting index, therefore position+1 @@ -108,6 +110,7 @@ private void ensureSequenceLoaded(final int sequenceIndex) { /** * @return Largest sequence index for which there are set bits. */ + @Override public int getMaxSequenceIndex() { return lastSequenceIndex; } @@ -115,6 +118,7 @@ public int getMaxSequenceIndex() { /** * @return the largest position on the last sequence index */ + @Override public int getMaxPosition() { return lastPosition; } diff --git a/src/main/java/htsjdk/samtools/util/IntervalTree.java b/src/main/java/htsjdk/samtools/util/IntervalTree.java index cd4acdb69..3efc4dfbb 100644 --- a/src/main/java/htsjdk/samtools/util/IntervalTree.java +++ b/src/main/java/htsjdk/samtools/util/IntervalTree.java @@ -340,6 +340,7 @@ public int getIndex( final int start, final int end ) * Return an iterator over the entire tree. * @return An iterator. */ + @Override public Iterator> iterator() { return new FwdIterator(min()); @@ -1069,11 +1070,13 @@ public FwdIterator( final Node node ) mNext = node; } + @Override public boolean hasNext() { return mNext != null; } + @Override public Node next() { if ( mNext == null ) @@ -1092,6 +1095,7 @@ public boolean hasNext() return mLast; } + @Override public void remove() { if ( mLast == null ) @@ -1115,11 +1119,13 @@ public RevIterator( final Node node ) mNext = node; } + @Override public boolean hasNext() { return mNext != null; } + @Override public Node next() { if ( mNext == null ) @@ -1135,6 +1141,7 @@ public boolean hasNext() return mLast; } + @Override public void remove() { if ( mLast == null ) @@ -1160,11 +1167,13 @@ public OverlapIterator( final int start, final int end ) mEnd = end; } + @Override public boolean hasNext() { return mNext != null; } + @Override public Node next() { if ( mNext == null ) @@ -1182,6 +1191,7 @@ public boolean hasNext() return mLast; } + @Override public void remove() { if ( mLast == null ) @@ -1207,16 +1217,19 @@ public ValuesIterator( final Iterator> itr ) mItr = itr; } + @Override public boolean hasNext() { return mItr.hasNext(); } + @Override public V1 next() { return mItr.next().getValue(); } + @Override public void remove() { mItr.remove(); diff --git a/src/main/java/htsjdk/samtools/util/IntervalTreeMap.java b/src/main/java/htsjdk/samtools/util/IntervalTreeMap.java index ffeae9439..259308732 100644 --- a/src/main/java/htsjdk/samtools/util/IntervalTreeMap.java +++ b/src/main/java/htsjdk/samtools/util/IntervalTreeMap.java @@ -60,10 +60,12 @@ public IntervalTreeMap(final Map map) { } } + @Override public void clear() { mSequenceMap.clear(); } + @Override public boolean containsKey(final Object object) { if (!(object instanceof Interval)) { return false; @@ -79,6 +81,7 @@ public boolean containsKey(final Interval key) { return (tree.find(key.getStart(), key.getEnd()) != null); } + @Override public Set> entrySet() { return mEntrySet; } @@ -95,6 +98,7 @@ public int hashCode() { return mSequenceMap.hashCode(); } + @Override public T get(final Object object) { if (!(object instanceof Interval)) { return null; @@ -114,6 +118,7 @@ public T get(final Interval key) { return node.getValue(); } + @Override public boolean isEmpty() { for (final IntervalTree tree : mSequenceMap.values()) { if (tree.size() > 0) { @@ -123,6 +128,7 @@ public boolean isEmpty() { return true; } + @Override public T put(final Interval key, final T value) { IntervalTree tree = mSequenceMap.get(key.getContig()); if (tree == null) { @@ -132,6 +138,7 @@ public T put(final Interval key, final T value) { return tree.put(key.getStart(), key.getEnd(), value); } + @Override public T remove(final Object object) { if (!(object instanceof Interval)) { return null; @@ -147,6 +154,7 @@ public T remove(final Interval key) { return tree.remove(key.getStart(), key.getEnd()); } + @Override public int size() { // Note: We should think about caching the size to avoid having to recompute it. int size = 0; @@ -214,6 +222,7 @@ public boolean containsContained(final Interval key) { private class EntrySet extends AbstractSet> { + @Override public void clear() { IntervalTreeMap.this.clear(); } @@ -225,14 +234,17 @@ public boolean contains(final Map.Entry entry) { return entry.getValue().equals(IntervalTreeMap.this.get(entry.getKey())); } + @Override public boolean isEmpty() { return IntervalTreeMap.this.isEmpty(); } + @Override public Iterator> iterator() { return new EntryIterator(); } + @Override @SuppressWarnings("unchecked") public boolean remove(final Object object) { // Note: Could not figure out how to eliminate the unchecked cast. @@ -251,6 +263,7 @@ public boolean remove(final Map.Entry entry) { } } + @Override public int size() { return IntervalTreeMap.this.size(); } @@ -268,10 +281,12 @@ public int size() { advanceSequence(); } + @Override public boolean hasNext() { return (mTreeIterator != null && mTreeIterator.hasNext()); } + @Override public Map.Entry next() { if (!hasNext()) { throw new NoSuchElementException("Iterator exhausted"); @@ -286,6 +301,7 @@ public boolean hasNext() { return new MapEntry(key, value); } + @Override public void remove() { if (mTreeIterator == null) { throw new IllegalStateException("Iterator.next() has not been called"); @@ -315,14 +331,17 @@ private void advanceSequence() { mValue = value; } + @Override public Interval getKey() { return mKey; } + @Override public T getValue() { return mValue; } + @Override public T setValue(final T value) { mValue = value; return IntervalTreeMap.this.put(mKey, mValue); diff --git a/src/main/java/htsjdk/samtools/util/Iso8601Date.java b/src/main/java/htsjdk/samtools/util/Iso8601Date.java index 912886724..e173bd385 100644 --- a/src/main/java/htsjdk/samtools/util/Iso8601Date.java +++ b/src/main/java/htsjdk/samtools/util/Iso8601Date.java @@ -36,6 +36,7 @@ */ public class Iso8601Date extends Date { private static final ThreadLocal iso8601DateFormatter = new ThreadLocal() { + @Override protected synchronized DateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); } diff --git a/src/main/java/htsjdk/samtools/util/LineReader.java b/src/main/java/htsjdk/samtools/util/LineReader.java index 018570083..4a07f15b8 100644 --- a/src/main/java/htsjdk/samtools/util/LineReader.java +++ b/src/main/java/htsjdk/samtools/util/LineReader.java @@ -47,5 +47,6 @@ */ int peek(); + @Override public void close(); } diff --git a/src/main/java/htsjdk/samtools/util/LocusComparator.java b/src/main/java/htsjdk/samtools/util/LocusComparator.java index e0f04d922..efbe09f26 100644 --- a/src/main/java/htsjdk/samtools/util/LocusComparator.java +++ b/src/main/java/htsjdk/samtools/util/LocusComparator.java @@ -34,6 +34,7 @@ public class LocusComparator implements Comparator, Serializable { private static final long serialVersionUID = 1L; + @Override public int compare(T thing1, T thing2) { int refCompare = thing1.getSequenceIndex() - thing2.getSequenceIndex(); return refCompare == 0 ? thing1.getPosition() - thing2.getPosition() : refCompare; diff --git a/src/main/java/htsjdk/samtools/util/LocusImpl.java b/src/main/java/htsjdk/samtools/util/LocusImpl.java index 862907854..5986a6c94 100644 --- a/src/main/java/htsjdk/samtools/util/LocusImpl.java +++ b/src/main/java/htsjdk/samtools/util/LocusImpl.java @@ -36,6 +36,7 @@ public LocusImpl(int sequenceIndex, int position) { this.sequenceIndex = sequenceIndex; } + @Override public int getSequenceIndex() { return sequenceIndex; } @@ -43,6 +44,7 @@ public int getSequenceIndex() { /** * @return 1-based position */ + @Override public int getPosition() { return position; } diff --git a/src/main/java/htsjdk/samtools/util/Md5CalculatingInputStream.java b/src/main/java/htsjdk/samtools/util/Md5CalculatingInputStream.java index e0e7cd520..47ea9ff3b 100755 --- a/src/main/java/htsjdk/samtools/util/Md5CalculatingInputStream.java +++ b/src/main/java/htsjdk/samtools/util/Md5CalculatingInputStream.java @@ -65,12 +65,14 @@ public Md5CalculatingInputStream(InputStream is, File digestFile) { } } + @Override public int read() throws IOException { int result = is.read(); if (result != -1) md5.update((byte)result); return result; } + @Override public int read(byte[] b) throws IOException { int result = is.read(b); if (result != -1) md5.update(b, 0, result); @@ -78,6 +80,7 @@ public int read(byte[] b) throws IOException { } + @Override public int read(byte[] b, int off, int len) throws IOException { int result = is.read(b, off, len); if (result != -1) md5.update(b, off, result); @@ -104,6 +107,7 @@ private String makeHash() { } } + @Override public void close() throws IOException { is.close(); makeHash(); @@ -116,18 +120,23 @@ public void close() throws IOException { } // Methods not supported or overridden because they would not result in a valid hash + @Override public boolean markSupported() { return false; } + @Override public void mark(int readlimit) { throw new UnsupportedOperationException("mark() is not supported by the MD5CalculatingInputStream"); } + @Override public void reset() throws IOException { throw new UnsupportedOperationException("reset() is not supported by the MD5CalculatingInputStream"); } + @Override public long skip(long n) throws IOException { throw new UnsupportedOperationException("skip() is not supported by the MD5CalculatingInputStream"); } // Methods delegated to the wrapped InputStream + @Override public int available() throws IOException { return is.available(); } } diff --git a/src/main/java/htsjdk/samtools/util/Md5CalculatingOutputStream.java b/src/main/java/htsjdk/samtools/util/Md5CalculatingOutputStream.java index 3c5a492c7..361c99032 100755 --- a/src/main/java/htsjdk/samtools/util/Md5CalculatingOutputStream.java +++ b/src/main/java/htsjdk/samtools/util/Md5CalculatingOutputStream.java @@ -65,17 +65,20 @@ public Md5CalculatingOutputStream(OutputStream os, File digestFile) { } } + @Override public void write(int b) throws IOException { md5.update((byte)b); os.write(b); } + @Override public void write(byte[] b) throws IOException { md5.update(b); os.write(b); } + @Override public void write(byte[] b, int off, int len) throws IOException { md5.update(b, off, len); os.write(b, off, len); @@ -102,6 +105,7 @@ private String makeHash() { } } + @Override public void close() throws IOException { os.close(); makeHash(); @@ -114,6 +118,7 @@ public void close() throws IOException { } // Pass-through method + @Override public void flush() throws IOException { os.flush(); } } diff --git a/src/main/java/htsjdk/samtools/util/PeekIterator.java b/src/main/java/htsjdk/samtools/util/PeekIterator.java index 9f16a5143..3a43ba54b 100644 --- a/src/main/java/htsjdk/samtools/util/PeekIterator.java +++ b/src/main/java/htsjdk/samtools/util/PeekIterator.java @@ -41,6 +41,7 @@ public PeekIterator(final Iterator underlyingIterator) { * @return true if the iteration has more elements. (In other words, returns true if next would return an element * rather than throwing an exception.) */ + @Override public boolean hasNext() { return peekedElement != null || underlyingIterator.hasNext(); } @@ -49,6 +50,7 @@ public boolean hasNext() { * @return the next element in the iteration. Calling this method repeatedly until the hasNext() method returns * false will return each element in the underlying collection exactly once. */ + @Override public T next() { if (peekedElement != null) { final T ret = peekedElement; @@ -72,6 +74,7 @@ public T peek() { /** * Unsupported */ + @Override public void remove() { throw new UnsupportedOperationException(); } diff --git a/src/main/java/htsjdk/samtools/util/PeekableIterator.java b/src/main/java/htsjdk/samtools/util/PeekableIterator.java index 1587dd299..3df4c42ca 100644 --- a/src/main/java/htsjdk/samtools/util/PeekableIterator.java +++ b/src/main/java/htsjdk/samtools/util/PeekableIterator.java @@ -39,16 +39,19 @@ public PeekableIterator(Iterator iterator) { } /** Closes the underlying iterator. */ + @Override public void close() { CloserUtil.close(iterator); } /** True if there are more items, in which case both next() and peek() will return a value. */ + @Override public boolean hasNext() { return this.nextObject != null; } /** Returns the next object and advances the iterator. */ + @Override public Object next() { Object retval = this.nextObject; advance(); @@ -73,6 +76,7 @@ private void advance(){ } /** Unsupported Operation. */ + @Override public void remove() { throw new UnsupportedOperationException("Not supported: remove"); } diff --git a/src/main/java/htsjdk/samtools/util/PositionalOutputStream.java b/src/main/java/htsjdk/samtools/util/PositionalOutputStream.java index ef28be610..a4643db42 100644 --- a/src/main/java/htsjdk/samtools/util/PositionalOutputStream.java +++ b/src/main/java/htsjdk/samtools/util/PositionalOutputStream.java @@ -41,20 +41,24 @@ public PositionalOutputStream(final OutputStream out) { this.out = out; } + @Override public final void write(final byte[] bytes) throws IOException { write(bytes, 0, bytes.length); } + @Override public final void write(final byte[] bytes, final int startIndex, final int numBytes) throws IOException { position += numBytes; out.write(bytes, startIndex, numBytes); } + @Override public final void write(final int c) throws IOException { position++; out.write(c); } + @Override public final long getPosition() { return position; } @Override diff --git a/src/main/java/htsjdk/samtools/util/QualityEncodingDetector.java b/src/main/java/htsjdk/samtools/util/QualityEncodingDetector.java index b0a965ca1..0147daa35 100644 --- a/src/main/java/htsjdk/samtools/util/QualityEncodingDetector.java +++ b/src/main/java/htsjdk/samtools/util/QualityEncodingDetector.java @@ -270,6 +270,7 @@ public boolean isDeterminationAmbiguous() { } } + @Override public boolean hasNext() { // If this returns true, the head of the queue will have a next element while (!queue.isEmpty()) { @@ -281,6 +282,7 @@ public boolean hasNext() { return false; } + @Override public FastqRecord next() { if (!hasNext()) throw new NoSuchElementException(); final Iterator i = queue.poll(); @@ -289,6 +291,7 @@ public FastqRecord next() { return result; } + @Override public void remove() { throw new UnsupportedOperationException(); } diff --git a/src/main/java/htsjdk/samtools/util/SamRecordIntervalIteratorFactory.java b/src/main/java/htsjdk/samtools/util/SamRecordIntervalIteratorFactory.java index 5d173a5a4..5dd7589d7 100644 --- a/src/main/java/htsjdk/samtools/util/SamRecordIntervalIteratorFactory.java +++ b/src/main/java/htsjdk/samtools/util/SamRecordIntervalIteratorFactory.java @@ -107,6 +107,7 @@ private StopAfterFilteringIterator(Iterator iterator, SamRecordFilter * * @return true if the iteration has more elements. Otherwise returns false. */ + @Override public boolean hasNext() { return next != null; } @@ -117,6 +118,7 @@ public boolean hasNext() { * @return the next element in the iteration * @throws java.util.NoSuchElementException */ + @Override public SAMRecord next() { if (next == null) { throw new NoSuchElementException("Iterator has no more elements."); @@ -131,10 +133,12 @@ public SAMRecord next() { * * @throws UnsupportedOperationException */ + @Override public void remove() { throw new UnsupportedOperationException("Remove() not supported by FilteringSamIterator"); } + @Override public void close() { CloserUtil.close(iterator); } diff --git a/src/main/java/htsjdk/samtools/util/SortingCollection.java b/src/main/java/htsjdk/samtools/util/SortingCollection.java index 6babd4e35..69ce2556b 100644 --- a/src/main/java/htsjdk/samtools/util/SortingCollection.java +++ b/src/main/java/htsjdk/samtools/util/SortingCollection.java @@ -259,6 +259,7 @@ private File newTempFile() throws IOException { * Prepare to iterate through the records in order. This method may be called more than once, * but add() may not be called after this method has been called. */ + @Override public CloseableIterator iterator() { if (this.cleanedUp) { throw new IllegalStateException("Cannot call iterator() after cleanup() was called."); @@ -354,14 +355,17 @@ public void cleanup() { SortingCollection.this.comparator); } + @Override public void close() { // nothing to do } + @Override public boolean hasNext() { return this.iterationIndex < SortingCollection.this.numRecordsInRam; } + @Override public T next() { if (!hasNext()) { throw new NoSuchElementException(); @@ -372,6 +376,7 @@ public T next() { return ret; } + @Override public void remove() { throw new UnsupportedOperationException(); } @@ -409,10 +414,12 @@ public void remove() { } } + @Override public boolean hasNext() { return !this.queue.isEmpty(); } + @Override public T next() { if (!hasNext()) { throw new NoSuchElementException(); @@ -430,10 +437,12 @@ public T next() { return ret; } + @Override public void remove() { throw new UnsupportedOperationException(); } + @Override public void close() { while (!this.queue.isEmpty()) { final PeekFileRecordIterator it = this.queue.pollFirst(); @@ -464,10 +473,12 @@ public void close() { } } + @Override public boolean hasNext() { return this.currentRecord != null; } + @Override public T next() { if (!hasNext()) { throw new NoSuchElementException(); @@ -477,6 +488,7 @@ public T next() { return ret; } + @Override public void remove() { throw new UnsupportedOperationException(); } @@ -485,6 +497,7 @@ private void advance() { this.currentRecord = this.codec.decode(); } + @Override public void close() { CloserUtil.close(this.is); } @@ -505,6 +518,7 @@ public void close() { class PeekFileRecordIteratorComparator implements Comparator, Serializable { private static final long serialVersionUID = 1L; + @Override public int compare(final PeekFileRecordIterator lhs, final PeekFileRecordIterator rhs) { final int result = comparator.compare(lhs.peek(), rhs.peek()); if (result == 0) return lhs.n - rhs.n; diff --git a/src/main/java/htsjdk/samtools/util/SortingLongCollection.java b/src/main/java/htsjdk/samtools/util/SortingLongCollection.java index 4cf0c367f..e75c3362e 100644 --- a/src/main/java/htsjdk/samtools/util/SortingLongCollection.java +++ b/src/main/java/htsjdk/samtools/util/SortingLongCollection.java @@ -336,6 +336,7 @@ void close() { private static class PeekFileValueIteratorComparator implements Comparator, Serializable { private static final long serialVersionUID = 1L; + @Override public int compare(final PeekFileValueIterator it1, final PeekFileValueIterator it2) { if (it1.peek() < it2.peek()) { return -1; diff --git a/src/main/java/htsjdk/samtools/util/StringLineReader.java b/src/main/java/htsjdk/samtools/util/StringLineReader.java index ed383a2f2..cca3d9531 100644 --- a/src/main/java/htsjdk/samtools/util/StringLineReader.java +++ b/src/main/java/htsjdk/samtools/util/StringLineReader.java @@ -46,6 +46,7 @@ public StringLineReader(final String s) { /** * Read a line and remove the line terminator */ + @Override public String readLine() { return readLine(false); } @@ -77,6 +78,7 @@ private String readLine(final boolean includeTerminators) { /** * @return 1-based number of line most recently read */ + @Override public int getLineNumber() { return lineNumber; } @@ -86,6 +88,7 @@ public int getLineNumber() { * * @return If not eof, the next character that would be read. If eof, -1. */ + @Override public int peek() { if (curPos == theString.length()) { return -1; @@ -93,6 +96,7 @@ public int peek() { return theString.charAt(curPos); } + @Override public void close() { curPos = theString.length(); } diff --git a/src/main/java/htsjdk/samtools/util/WholeGenomeReferenceSequenceMask.java b/src/main/java/htsjdk/samtools/util/WholeGenomeReferenceSequenceMask.java index 1263285a8..b9ef975a8 100644 --- a/src/main/java/htsjdk/samtools/util/WholeGenomeReferenceSequenceMask.java +++ b/src/main/java/htsjdk/samtools/util/WholeGenomeReferenceSequenceMask.java @@ -41,6 +41,7 @@ public WholeGenomeReferenceSequenceMask(final SAMFileHeader header) { /** * @return true if the mask is set for the given sequence and position */ + @Override public boolean get(final int sequenceIndex, final int position) { if (sequenceIndex < 0) { throw new IllegalArgumentException("Negative sequence index " + sequenceIndex); @@ -55,6 +56,7 @@ public boolean get(final int sequenceIndex, final int position) { /** * @return the next pos on the given sequence >= position that is set, or -1 if there are no more set positions */ + @Override public int nextPosition(final int sequenceIndex, final int position) { if (get(sequenceIndex, position + 1)) { return position + 1; @@ -66,6 +68,7 @@ public int nextPosition(final int sequenceIndex, final int position) { /** * @return Largest sequence index for which there are set bits. */ + @Override public int getMaxSequenceIndex() { return header.getSequenceDictionary().size() - 1; } @@ -73,6 +76,7 @@ public int getMaxSequenceIndex() { /** * @return the largest position on the last sequence index */ + @Override public int getMaxPosition() { SAMSequenceRecord lastSequenceRecord = header.getSequence(getMaxSequenceIndex()); return lastSequenceRecord.getSequenceLength(); diff --git a/src/main/java/htsjdk/tribble/FeatureReader.java b/src/main/java/htsjdk/tribble/FeatureReader.java index 3471393b8..c7773a27e 100644 --- a/src/main/java/htsjdk/tribble/FeatureReader.java +++ b/src/main/java/htsjdk/tribble/FeatureReader.java @@ -32,6 +32,7 @@ public CloseableTribbleIterator iterator() throws IOException; + @Override public void close() throws IOException; public List getSequenceNames(); diff --git a/src/main/java/htsjdk/tribble/SimpleFeature.java b/src/main/java/htsjdk/tribble/SimpleFeature.java index ddc62fa10..0365dc594 100644 --- a/src/main/java/htsjdk/tribble/SimpleFeature.java +++ b/src/main/java/htsjdk/tribble/SimpleFeature.java @@ -39,14 +39,17 @@ public SimpleFeature(final String contig, final int start, final int end) { this.end = end; } + @Override public String getContig() { return contig; } + @Override public int getStart() { return start; } + @Override public int getEnd() { return end; } diff --git a/src/main/java/htsjdk/tribble/TribbleException.java b/src/main/java/htsjdk/tribble/TribbleException.java index 86202ebfb..18f1f81f8 100644 --- a/src/main/java/htsjdk/tribble/TribbleException.java +++ b/src/main/java/htsjdk/tribble/TribbleException.java @@ -54,6 +54,7 @@ public void setSource(String source) { * override the default message with ours, which attaches the source file in question * @return a string with our internal error, along with the causitive source file (or other input source) */ + @Override public String getMessage() { String ret = super.getMessage(); if ( source != null ) diff --git a/src/main/java/htsjdk/tribble/bed/FullBEDFeature.java b/src/main/java/htsjdk/tribble/bed/FullBEDFeature.java index eab568837..975777dc2 100644 --- a/src/main/java/htsjdk/tribble/bed/FullBEDFeature.java +++ b/src/main/java/htsjdk/tribble/bed/FullBEDFeature.java @@ -39,6 +39,7 @@ public FullBEDFeature(String chr, int start, int end) { } + @Override public java.util.List getExons() { return exons; } diff --git a/src/main/java/htsjdk/tribble/bed/SimpleBEDFeature.java b/src/main/java/htsjdk/tribble/bed/SimpleBEDFeature.java index 77a030fa9..4a6416867 100644 --- a/src/main/java/htsjdk/tribble/bed/SimpleBEDFeature.java +++ b/src/main/java/htsjdk/tribble/bed/SimpleBEDFeature.java @@ -56,14 +56,17 @@ public String getContig() { return chr; } + @Override public int getStart() { return start; } + @Override public int getEnd() { return end; } + @Override public Strand getStrand() { return strand; } @@ -84,6 +87,7 @@ public void setEnd(int end) { this.end = end; } + @Override public String getType() { return type; } @@ -92,6 +96,7 @@ public void setType(String type) { this.type = type; } + @Override public Color getColor() { return color; } @@ -100,6 +105,7 @@ public void setColor(Color color) { this.color = color; } + @Override public String getDescription() { return description; } @@ -108,6 +114,7 @@ public void setDescription(String description) { this.description = description; } + @Override public String getName() { return name; } @@ -116,6 +123,7 @@ public void setName(String name) { this.name = name; } + @Override public float getScore() { return score; } @@ -124,6 +132,7 @@ public void setScore(float score) { this.score = score; } + @Override public String getLink() { return link; } @@ -134,6 +143,7 @@ public void setLink(String link) { final static List emptyExonList = new ArrayList(); + @Override public java.util.List getExons() { return emptyExonList; } diff --git a/src/main/java/htsjdk/tribble/index/AbstractIndex.java b/src/main/java/htsjdk/tribble/index/AbstractIndex.java index 47e31ccef..5ae5492d6 100644 --- a/src/main/java/htsjdk/tribble/index/AbstractIndex.java +++ b/src/main/java/htsjdk/tribble/index/AbstractIndex.java @@ -101,6 +101,7 @@ public boolean hasMD5() { * @param obj * @return true if this and obj are 'effectively' equivalent data structures. */ + @Override public boolean equalsIgnoreProperties(final Object obj) { if (this == obj) return true; if (!(obj instanceof AbstractIndex)) { @@ -194,6 +195,7 @@ protected void validateIndexHeader(final int indexType, final LittleEndianInputS * * @return true if we're up to date, false otherwise */ + @Override public boolean isCurrentVersion() { return version == VERSION; } @@ -226,6 +228,7 @@ public void setMD5(final String md5) { this.indexedFileMD5 = md5; } + @Override public boolean containsChromosome(final String chr) { return chrIndices.containsKey(chr); } @@ -306,10 +309,12 @@ private void readSequenceDictionary(final LittleEndianInputStream dis) throws IO } } + @Override public List getSequenceNames() { return new ArrayList(chrIndices.keySet()); } + @Override public List getBlocks(final String chr, final int start, final int end) { return getChrIndex(chr).getBlocks(start, end); } @@ -332,6 +337,7 @@ private final ChrIndex getChrIndex(final String chr) { } } + @Override public void write(final LittleEndianOutputStream stream) throws IOException { writeHeader(stream); @@ -418,10 +424,12 @@ protected String statsSummary() { return String.format("%12d blocks (%12d empty (%.2f%%))", stats.total, stats.empty, (100.0 * stats.empty) / stats.total); } + @Override public void addProperty(final String key, final String value) { properties.put(key, value); } + @Override public void addProperties(final Map properties) { this.properties.putAll(properties); } @@ -431,6 +439,7 @@ public void addProperties(final Map properties) { * * @return the mapping of values as an unmodifiable map */ + @Override public Map getProperties() { return Collections.unmodifiableMap(properties); } diff --git a/src/main/java/htsjdk/tribble/index/DynamicIndexCreator.java b/src/main/java/htsjdk/tribble/index/DynamicIndexCreator.java index 52153a51f..3552fbb4f 100644 --- a/src/main/java/htsjdk/tribble/index/DynamicIndexCreator.java +++ b/src/main/java/htsjdk/tribble/index/DynamicIndexCreator.java @@ -65,6 +65,7 @@ public DynamicIndexCreator(final File inputFile, final IndexFactory.IndexBalance creators = getIndexCreators(inputFile,iba); } + @Override public Index finalizeIndex(final long finalFilePosition) { // finalize all of the indexes // return the score of the indexes we've generated @@ -123,6 +124,7 @@ public Index finalizeIndex(final long finalFilePosition) { } + @Override public void addFeature(final Feature f, final long filePosition) { // protected static Map createIndex(FileBasedFeatureIterator iterator, Map creators, IndexBalanceApproach iba) { // feed each feature to the indexes we've created diff --git a/src/main/java/htsjdk/tribble/index/IndexFactory.java b/src/main/java/htsjdk/tribble/index/IndexFactory.java index f53d9a82d..928236620 100644 --- a/src/main/java/htsjdk/tribble/index/IndexFactory.java +++ b/src/main/java/htsjdk/tribble/index/IndexFactory.java @@ -475,10 +475,12 @@ private PositionalBufferedStream initStream(final File inputFile, final long ski } } + @Override public boolean hasNext() { return nextFeature != null; } + @Override public Feature next() { final Feature ret = nextFeature; readNextFeature(); @@ -488,6 +490,7 @@ public Feature next() { /** * @throws UnsupportedOperationException */ + @Override public void remove() { throw new UnsupportedOperationException("We cannot remove"); } diff --git a/src/main/java/htsjdk/tribble/index/interval/Interval.java b/src/main/java/htsjdk/tribble/index/interval/Interval.java index 9d4787774..6c0e648ee 100644 --- a/src/main/java/htsjdk/tribble/index/interval/Interval.java +++ b/src/main/java/htsjdk/tribble/index/interval/Interval.java @@ -76,6 +76,7 @@ public int hashCode() { } + @Override public int compareTo(Object o) { Interval other = (Interval) o; if (this.start < other.start) diff --git a/src/main/java/htsjdk/tribble/index/interval/IntervalIndexCreator.java b/src/main/java/htsjdk/tribble/index/interval/IntervalIndexCreator.java index e826edaa7..01219040c 100644 --- a/src/main/java/htsjdk/tribble/index/interval/IntervalIndexCreator.java +++ b/src/main/java/htsjdk/tribble/index/interval/IntervalIndexCreator.java @@ -62,6 +62,7 @@ public IntervalIndexCreator(final File inputFile) { this(inputFile, DEFAULT_FEATURE_COUNT); } + @Override public void addFeature(final Feature feature, final long filePosition) { // if we don't have a chrIndex yet, or if the last one was for the previous contig, create a new one if (chrList.isEmpty() || !chrList.getLast().getName().equals(feature.getContig())) { @@ -105,6 +106,7 @@ private void addIntervalsToLastChr(final long currentPos) { * @param finalFilePosition the final file position, for indexes that have to close out with the final position * @return a Tree Index */ + @Override public Index finalizeIndex(final long finalFilePosition) { final IntervalTreeIndex featureIndex = new IntervalTreeIndex(inputFile.getAbsolutePath()); // dump the remaining bins to the index diff --git a/src/main/java/htsjdk/tribble/index/interval/IntervalTreeIndex.java b/src/main/java/htsjdk/tribble/index/interval/IntervalTreeIndex.java index 055888ecc..9a4206ebf 100644 --- a/src/main/java/htsjdk/tribble/index/interval/IntervalTreeIndex.java +++ b/src/main/java/htsjdk/tribble/index/interval/IntervalTreeIndex.java @@ -119,6 +119,7 @@ public ChrIndex(final String name) { tree = new IntervalTree(); } + @Override public String getName() { return name; } @@ -127,11 +128,13 @@ public void insert(final Interval iv) { tree.insert(iv); } + @Override public List getBlocks() { return null; } + @Override public List getBlocks(final int start, final int end) { // Get intervals and build blocks list @@ -148,6 +151,7 @@ public void insert(final Interval iv) { // Sort blocks by start position Arrays.sort(blocks, new Comparator() { + @Override public int compare(final Block b1, final Block b2) { // this is a little cryptic because the normal method (b1.getStartPosition() - b2.getStartPosition()) wraps in int space and we incorrectly sort the blocks in extreme cases return b1.getStartPosition() - b2.getStartPosition() < 1 ? -1 : (b1.getStartPosition() - b2.getStartPosition() > 1 ? 1 : 0); @@ -175,6 +179,7 @@ public void printTree() { System.out.println(tree.toString()); } + @Override public void write(final LittleEndianOutputStream dos) throws IOException { dos.writeString(name); @@ -190,6 +195,7 @@ public void write(final LittleEndianOutputStream dos) throws IOException { } + @Override public void read(final LittleEndianInputStream dis) throws IOException { tree = new IntervalTree(); diff --git a/src/main/java/htsjdk/tribble/index/linear/LinearIndex.java b/src/main/java/htsjdk/tribble/index/linear/LinearIndex.java index 4f4d9100e..5047ab61a 100644 --- a/src/main/java/htsjdk/tribble/index/linear/LinearIndex.java +++ b/src/main/java/htsjdk/tribble/index/linear/LinearIndex.java @@ -101,6 +101,7 @@ public LinearIndex(final InputStream inputStream) throws IOException { read(dis); } + @Override public boolean isCurrentVersion() { if (!super.isCurrentVersion()) return false; @@ -117,6 +118,7 @@ protected int getType() { return INDEX_TYPE; } + @Override public List getSequenceNames() { return (chrIndices == null ? Collections.EMPTY_LIST : Collections.unmodifiableList(new ArrayList(chrIndices.keySet()))); @@ -173,6 +175,7 @@ public ChrIndex() { this.nFeatures = 0; } + @Override public String getName() { return name; } @@ -186,10 +189,12 @@ public int getNBlocks() { return blocks.size(); } + @Override public List getBlocks() { return blocks; } + @Override public List getBlocks(final int start, final int end) { if (blocks.isEmpty()) { return Collections.emptyList(); @@ -231,6 +236,7 @@ public void incrementFeatureCount() { this.nFeatures++; } + @Override public void write(final LittleEndianOutputStream dos) throws IOException { // Chr name, binSize, # bins, longest feature @@ -253,6 +259,7 @@ public void write(final LittleEndianOutputStream dos) throws IOException { dos.writeLong(pos + size); } + @Override public void read(final LittleEndianInputStream dis) throws IOException { name = dis.readString(); binWidth = dis.readInt(); diff --git a/src/main/java/htsjdk/tribble/index/linear/LinearIndexCreator.java b/src/main/java/htsjdk/tribble/index/linear/LinearIndexCreator.java index 1158fdfd3..daad6cce6 100644 --- a/src/main/java/htsjdk/tribble/index/linear/LinearIndexCreator.java +++ b/src/main/java/htsjdk/tribble/index/linear/LinearIndexCreator.java @@ -64,6 +64,7 @@ public LinearIndexCreator(final File inputFile) { * @param feature the feature, from which we use the contig, start, and stop * @param filePosition the position of the file at the BEGINNING of the current feature */ + @Override public void addFeature(final Feature feature, final long filePosition) { // fi we don't have a chrIndex yet, or if the last one was for the previous contig, create a new one if (chrList.isEmpty() || !chrList.getLast().getName().equals(feature.getContig())) { @@ -97,6 +98,7 @@ public void addFeature(final Feature feature, final long filePosition) { * @param finalFilePosition the final file position, for indexes that have to close out with the final position * @return an Index object */ + @Override public Index finalizeIndex(final long finalFilePosition) { if (finalFilePosition == 0) throw new IllegalArgumentException("finalFilePosition != 0, -> " + finalFilePosition); diff --git a/src/main/java/htsjdk/tribble/readers/AsciiLineReader.java b/src/main/java/htsjdk/tribble/readers/AsciiLineReader.java index 8f06205a7..ad66a17c7 100644 --- a/src/main/java/htsjdk/tribble/readers/AsciiLineReader.java +++ b/src/main/java/htsjdk/tribble/readers/AsciiLineReader.java @@ -57,6 +57,7 @@ public AsciiLineReader(final PositionalBufferedStream is) { /** * @return The position of the InputStream */ + @Override public long getPosition(){ if(is == null){ throw new TribbleException("getPosition() called but no default stream was provided to the class on creation"); @@ -115,6 +116,7 @@ public final String readLine(final PositionalBufferedStream stream) throws IOExc * * @return */ + @Override public final String readLine() throws IOException{ if ( is == null ){ throw new TribbleException("readLine() called without an explicit stream argument but no default stream was provided to the class on creation"); diff --git a/src/main/java/htsjdk/tribble/readers/LineReader.java b/src/main/java/htsjdk/tribble/readers/LineReader.java index 969b6b511..2782afc96 100644 --- a/src/main/java/htsjdk/tribble/readers/LineReader.java +++ b/src/main/java/htsjdk/tribble/readers/LineReader.java @@ -39,5 +39,6 @@ public String readLine() throws IOException; + @Override public void close(); } diff --git a/src/main/java/htsjdk/tribble/readers/LongLineBufferedReader.java b/src/main/java/htsjdk/tribble/readers/LongLineBufferedReader.java index 5ca8e8d13..dbb659343 100644 --- a/src/main/java/htsjdk/tribble/readers/LongLineBufferedReader.java +++ b/src/main/java/htsjdk/tribble/readers/LongLineBufferedReader.java @@ -153,6 +153,7 @@ private void fill() throws IOException { * end of the stream has been reached * @throws IOException If an I/O error occurs */ + @Override public int read() throws IOException { synchronized (lock) { ensureOpen(); @@ -250,6 +251,7 @@ private int read1(char[] cbuf, int off, int len) throws IOException { * stream has been reached * @throws IOException If an I/O error occurs */ + @Override public int read(char cbuf[], int off, int len) throws IOException { synchronized (lock) { ensureOpen(); @@ -362,6 +364,7 @@ public String readLine() throws IOException { * @throws IllegalArgumentException If n is negative. * @throws IOException If an I/O error occurs */ + @Override public long skip(long n) throws IOException { if (n < 0L) { throw new IllegalArgumentException("skip value is negative"); @@ -401,6 +404,7 @@ public long skip(long n) throws IOException { * * @throws IOException If an I/O error occurs */ + @Override public boolean ready() throws IOException { synchronized (lock) { ensureOpen(); @@ -429,6 +433,7 @@ public boolean ready() throws IOException { /** * Tells whether this stream supports the mark() operation, which it does. */ + @Override public boolean markSupported() { return true; } @@ -448,6 +453,7 @@ public boolean markSupported() { * @throws IllegalArgumentException If readAheadLimit is < 0 * @throws IOException If an I/O error occurs */ + @Override public void mark(int readAheadLimit) throws IOException { if (readAheadLimit < 0) { throw new IllegalArgumentException("Read-ahead limit < 0"); @@ -466,6 +472,7 @@ public void mark(int readAheadLimit) throws IOException { * @throws IOException If the stream has never been marked, * or if the mark has been invalidated */ + @Override public void reset() throws IOException { synchronized (lock) { ensureOpen(); @@ -478,6 +485,7 @@ public void reset() throws IOException { } } + @Override public void close() throws IOException { synchronized (lock) { if (in == null) diff --git a/src/main/java/htsjdk/tribble/readers/PositionalBufferedStream.java b/src/main/java/htsjdk/tribble/readers/PositionalBufferedStream.java index ac642df98..4d7ae05eb 100644 --- a/src/main/java/htsjdk/tribble/readers/PositionalBufferedStream.java +++ b/src/main/java/htsjdk/tribble/readers/PositionalBufferedStream.java @@ -48,6 +48,7 @@ public PositionalBufferedStream(final InputStream is, final int bufferSize) { nextChar = nChars = 0; } + @Override public final long getPosition() { return position; } @@ -129,6 +130,7 @@ private final int fill() throws IOException { return nChars; } + @Override public final long skip(final long nBytes) throws IOException { long remainingToSkip = nBytes; @@ -156,6 +158,7 @@ public final long skip(final long nBytes) throws IOException { return actuallySkipped; } + @Override public final void close() { try { is.close(); diff --git a/src/main/java/htsjdk/tribble/readers/TabixIteratorLineReader.java b/src/main/java/htsjdk/tribble/readers/TabixIteratorLineReader.java index 49b6f0cfd..2a04725e7 100644 --- a/src/main/java/htsjdk/tribble/readers/TabixIteratorLineReader.java +++ b/src/main/java/htsjdk/tribble/readers/TabixIteratorLineReader.java @@ -40,6 +40,7 @@ public TabixIteratorLineReader(TabixReader.Iterator iterator) { this.iterator = iterator; } + @Override public String readLine() { try { return iterator != null ? iterator.next() : null; @@ -48,6 +49,7 @@ public String readLine() { } } + @Override public void close() { // Ignore - } diff --git a/src/main/java/htsjdk/tribble/readers/TabixReader.java b/src/main/java/htsjdk/tribble/readers/TabixReader.java index b4882e543..244fcd5d2 100644 --- a/src/main/java/htsjdk/tribble/readers/TabixReader.java +++ b/src/main/java/htsjdk/tribble/readers/TabixReader.java @@ -78,6 +78,7 @@ public TPair64(final TPair64 p) { v = p.v; } + @Override public int compareTo(final TPair64 p) { return u == p.u ? 0 : ((u < p.u) ^ (u < 0) ^ (p.u < 0)) ? -1 : 1; // unsigned 64-bit comparison } diff --git a/src/main/java/htsjdk/tribble/util/HTTPHelper.java b/src/main/java/htsjdk/tribble/util/HTTPHelper.java index 90e622859..1e89bc26b 100644 --- a/src/main/java/htsjdk/tribble/util/HTTPHelper.java +++ b/src/main/java/htsjdk/tribble/util/HTTPHelper.java @@ -57,6 +57,7 @@ public static synchronized void setProxy(Proxy p) { proxy = p; } + @Override public URL getUrl() { return url; } @@ -65,6 +66,7 @@ public URL getUrl() { * @return content length of the resource * @throws IOException */ + @Override public long getContentLength() throws IOException { HttpURLConnection con = null; @@ -84,6 +86,7 @@ public long getContentLength() throws IOException { } + @Override public InputStream openInputStream() throws IOException { HttpURLConnection connection = openConnection(); @@ -99,6 +102,7 @@ public InputStream openInputStream() throws IOException { * @return * @throws IOException */ + @Override @Deprecated public InputStream openInputStreamForRange(long start, long end) throws IOException { @@ -118,6 +122,7 @@ private HttpURLConnection openConnection() throws IOException { return connection; } + @Override public boolean exists() throws IOException { HttpURLConnection con = null; try { diff --git a/src/main/java/htsjdk/tribble/util/LittleEndianOutputStream.java b/src/main/java/htsjdk/tribble/util/LittleEndianOutputStream.java index 9bec07188..eab2f8785 100644 --- a/src/main/java/htsjdk/tribble/util/LittleEndianOutputStream.java +++ b/src/main/java/htsjdk/tribble/util/LittleEndianOutputStream.java @@ -25,11 +25,13 @@ public LittleEndianOutputStream(OutputStream out) { super(out); } + @Override public void write(int b) throws IOException { out.write(b); written++; } + @Override public void write(byte[] data, int offset, int length) throws IOException { out.write(data, offset, length); diff --git a/src/main/java/htsjdk/tribble/util/TabixUtils.java b/src/main/java/htsjdk/tribble/util/TabixUtils.java index aa365cd58..5ae9f8afd 100644 --- a/src/main/java/htsjdk/tribble/util/TabixUtils.java +++ b/src/main/java/htsjdk/tribble/util/TabixUtils.java @@ -55,6 +55,7 @@ public TPair64(final TPair64 p) { v = p.v; } + @Override public int compareTo(final TPair64 p) { return u == p.u ? 0 : ((u < p.u) ^ (u < 0) ^ (p.u < 0)) ? -1 : 1; // unsigned 64-bit comparison } diff --git a/src/main/java/htsjdk/variant/variantcontext/Allele.java b/src/main/java/htsjdk/variant/variantcontext/Allele.java index 44fc6aaa7..71aa20126 100644 --- a/src/main/java/htsjdk/variant/variantcontext/Allele.java +++ b/src/main/java/htsjdk/variant/variantcontext/Allele.java @@ -523,6 +523,7 @@ public static Allele getMatchingAllele(final Collection allAlleles, fina return null; // couldn't find anything } + @Override public int compareTo(final Allele other) { if ( isReference() && other.isNonReference() ) return -1; diff --git a/src/main/java/htsjdk/variant/variantcontext/FastGenotype.java b/src/main/java/htsjdk/variant/variantcontext/FastGenotype.java index 665e67242..495ba4192 100644 --- a/src/main/java/htsjdk/variant/variantcontext/FastGenotype.java +++ b/src/main/java/htsjdk/variant/variantcontext/FastGenotype.java @@ -154,6 +154,7 @@ protected FastGenotype(final String sampleName, // // --------------------------------------------------------------------------------------------------------- + @Override public Map getExtendedAttributes() { return extendedAttributes; } diff --git a/src/main/java/htsjdk/variant/variantcontext/JEXLMap.java b/src/main/java/htsjdk/variant/variantcontext/JEXLMap.java index 33ec59514..c4664b08a 100644 --- a/src/main/java/htsjdk/variant/variantcontext/JEXLMap.java +++ b/src/main/java/htsjdk/variant/variantcontext/JEXLMap.java @@ -78,6 +78,7 @@ public JEXLMap(final Collection jexlCollection, final VariantCon * @throws IllegalArgumentException when {@code key} is {@code null} or * when any of the JexlVCMatchExp (i.e. keys) contains invalid Jexl expressions. */ + @Override public Boolean get(Object key) { if (key == null) { throw new IllegalArgumentException("Query key is null"); @@ -101,8 +102,10 @@ public Boolean get(Object key) { * @param o the key * @return true if we have a value for that key */ + @Override public boolean containsKey(Object o) { return jexl.containsKey(o); } + @Override public Set keySet() { return jexl.keySet(); } @@ -119,6 +122,7 @@ public Boolean get(Object key) { * * @throws IllegalArgumentException when any of the JexlVCMatchExp (i.e. keys) contains invalid Jexl expressions. */ + @Override public Collection values() { for (final JexlVCMatchExp exp : jexl.keySet()) { jexl.computeIfAbsent(exp, k -> evaluateExpression(exp)); @@ -129,16 +133,20 @@ public Boolean get(Object key) { /** * @return the number of keys, i.e. {@link JexlVCMatchExp}'s held by this mapping. */ + @Override public int size() { return jexl.size(); } + @Override public boolean isEmpty() { return this.jexl.isEmpty(); } + @Override public Boolean put(JexlVCMatchExp jexlVCMatchExp, Boolean aBoolean) { return jexl.put(jexlVCMatchExp, aBoolean); } + @Override public void putAll(Map map) { jexl.putAll(map); } @@ -207,21 +215,25 @@ private JexlContext createContext() { // this doesn't make much sense to implement, boolean doesn't offer too much variety to deal // with evaluating every key in the internal map. + @Override public boolean containsValue(Object o) { throw new UnsupportedOperationException("containsValue() not supported on a JEXLMap"); } // this doesn't make much sense + @Override public Boolean remove(Object o) { throw new UnsupportedOperationException("remove() not supported on a JEXLMap"); } + @Override public Set> entrySet() { throw new UnsupportedOperationException("entrySet() not supported on a JEXLMap"); } // nope + @Override public void clear() { throw new UnsupportedOperationException("clear() not supported on a JEXLMap"); } diff --git a/src/main/java/htsjdk/variant/variantcontext/VariantContext.java b/src/main/java/htsjdk/variant/variantcontext/VariantContext.java index 55825fb4d..6def89ef9 100644 --- a/src/main/java/htsjdk/variant/variantcontext/VariantContext.java +++ b/src/main/java/htsjdk/variant/variantcontext/VariantContext.java @@ -1663,6 +1663,7 @@ public String getContig() { * underlying vcf file, VariantContexts representing the same biological event may have different start positions depending on the * specifics of the vcf file they are derived from */ + @Override public int getStart() { return (int)start; } @@ -1673,6 +1674,7 @@ public int getStart() { * For VariantContexts with a single alternate allele, if that allele is an insertion, the end position will be on the reference base * before the insertion event. If the single alt allele is a deletion, the end will be on the final deleted reference base. */ + @Override public int getEnd() { return (int)stop; } diff --git a/src/main/java/htsjdk/variant/variantcontext/VariantJEXLContext.java b/src/main/java/htsjdk/variant/variantcontext/VariantJEXLContext.java index 34cde3395..012586381 100644 --- a/src/main/java/htsjdk/variant/variantcontext/VariantJEXLContext.java +++ b/src/main/java/htsjdk/variant/variantcontext/VariantJEXLContext.java @@ -76,6 +76,7 @@ public VariantJEXLContext(VariantContext vc) { this.vc = vc; } + @Override public Object get(String name) { Object result = null; if ( attributes.containsKey(name) ) { // dynamic resolution of name -> value via map @@ -89,6 +90,7 @@ public Object get(String name) { return result; } + @Override public boolean has(String name) { return get(name) != null; } @@ -96,6 +98,7 @@ public boolean has(String name) { /** * @throws UnsupportedOperationException */ + @Override public void set(String name, Object value) { throw new UnsupportedOperationException("remove() not supported on a VariantJEXLContext"); } diff --git a/src/main/java/htsjdk/variant/variantcontext/writer/AsyncVariantContextWriter.java b/src/main/java/htsjdk/variant/variantcontext/writer/AsyncVariantContextWriter.java index 4604316b2..481ab871e 100644 --- a/src/main/java/htsjdk/variant/variantcontext/writer/AsyncVariantContextWriter.java +++ b/src/main/java/htsjdk/variant/variantcontext/writer/AsyncVariantContextWriter.java @@ -39,10 +39,12 @@ public AsyncVariantContextWriter(final VariantContextWriter out, final int queue @Override protected final String getThreadNamePrefix() { return "VariantContextWriterThread-"; } + @Override public void add(final VariantContext vc) { write(vc); } + @Override public void writeHeader(final VCFHeader header) { this.underlyingWriter.writeHeader(header); } diff --git a/src/main/java/htsjdk/variant/variantcontext/writer/BCF2FieldWriter.java b/src/main/java/htsjdk/variant/variantcontext/writer/BCF2FieldWriter.java index f9dd458d0..9582e00ab 100644 --- a/src/main/java/htsjdk/variant/variantcontext/writer/BCF2FieldWriter.java +++ b/src/main/java/htsjdk/variant/variantcontext/writer/BCF2FieldWriter.java @@ -231,6 +231,7 @@ public FTGenotypesWriter(final VCFHeader header, final BCF2FieldEncoder fieldEnc super(header, fieldEncoder); } + @Override public void addGenotype(final BCF2Encoder encoder, final VariantContext vc, final Genotype g) throws IOException { final String fieldValue = g.getFilters(); getFieldEncoder().encodeValue(encoder, fieldValue, encodingType, nValuesPerGenotype); diff --git a/src/main/java/htsjdk/variant/variantcontext/writer/IndexingVariantContextWriter.java b/src/main/java/htsjdk/variant/variantcontext/writer/IndexingVariantContextWriter.java index 6a77f6b3b..eece2d1ac 100644 --- a/src/main/java/htsjdk/variant/variantcontext/writer/IndexingVariantContextWriter.java +++ b/src/main/java/htsjdk/variant/variantcontext/writer/IndexingVariantContextWriter.java @@ -126,11 +126,13 @@ public String getStreamName() { return name; } + @Override public abstract void writeHeader(VCFHeader header); /** * attempt to close the VCF file */ + @Override public void close() { try { // close the underlying output stream @@ -161,6 +163,7 @@ public SAMSequenceDictionary getRefDict() { * * @param vc the Variant Context object */ + @Override public void add(final VariantContext vc) { // if we are doing on the fly indexing, add the record ***before*** we write any bytes if ( indexer != null ) diff --git a/src/main/java/htsjdk/variant/variantcontext/writer/SortingVariantContextWriter.java b/src/main/java/htsjdk/variant/variantcontext/writer/SortingVariantContextWriter.java index 21854827b..edc70c4ff 100644 --- a/src/main/java/htsjdk/variant/variantcontext/writer/SortingVariantContextWriter.java +++ b/src/main/java/htsjdk/variant/variantcontext/writer/SortingVariantContextWriter.java @@ -51,6 +51,7 @@ public SortingVariantContextWriter(VariantContextWriter innerWriter, int maxCach this(innerWriter, maxCachingStartDistance, false); // by default, don't own inner } + @Override protected void noteCurrentRecord(VariantContext vc) { super.noteCurrentRecord(vc); // first, check for errors diff --git a/src/main/java/htsjdk/variant/variantcontext/writer/SortingVariantContextWriterBase.java b/src/main/java/htsjdk/variant/variantcontext/writer/SortingVariantContextWriterBase.java index 690a7813c..7d9273f97 100644 --- a/src/main/java/htsjdk/variant/variantcontext/writer/SortingVariantContextWriterBase.java +++ b/src/main/java/htsjdk/variant/variantcontext/writer/SortingVariantContextWriterBase.java @@ -186,6 +186,7 @@ private synchronized void emitRecords(boolean emitUnsafe) { private static class VariantContextComparator implements Comparator, Serializable { private static final long serialVersionUID = 1L; + @Override public int compare(VCFRecord r1, VCFRecord r2) { return r1.vc.getStart() - r2.vc.getStart(); } diff --git a/src/main/java/htsjdk/variant/variantcontext/writer/VariantContextWriter.java b/src/main/java/htsjdk/variant/variantcontext/writer/VariantContextWriter.java index 187ff17c3..843901a20 100644 --- a/src/main/java/htsjdk/variant/variantcontext/writer/VariantContextWriter.java +++ b/src/main/java/htsjdk/variant/variantcontext/writer/VariantContextWriter.java @@ -40,6 +40,7 @@ /** * attempt to close the VCF file */ + @Override public void close(); /** diff --git a/src/main/java/htsjdk/variant/vcf/AbstractVCFCodec.java b/src/main/java/htsjdk/variant/vcf/AbstractVCFCodec.java index 04887aeea..8a55a1946 100644 --- a/src/main/java/htsjdk/variant/vcf/AbstractVCFCodec.java +++ b/src/main/java/htsjdk/variant/vcf/AbstractVCFCodec.java @@ -257,6 +257,7 @@ public Feature decodeLoc(String line) { * @param line the line * @return a VariantContext */ + @Override public VariantContext decode(String line) { return decodeLine(line, true); } @@ -367,6 +368,7 @@ else if ( parts[2].equals(VCFConstants.EMPTY_ID_FIELD) ) * get the name of this codec * @return our set name */ + @Override public String getName() { return name; } @@ -375,6 +377,7 @@ public String getName() { * set the name of this codec * @param name new name */ + @Override public void setName(String name) { this.name = name; } diff --git a/src/main/java/htsjdk/variant/vcf/VCF3Codec.java b/src/main/java/htsjdk/variant/vcf/VCF3Codec.java index 5f4f48ec5..e9ca3abdf 100644 --- a/src/main/java/htsjdk/variant/vcf/VCF3Codec.java +++ b/src/main/java/htsjdk/variant/vcf/VCF3Codec.java @@ -56,6 +56,7 @@ * @param reader the line reader to take header lines from * @return the number of header lines */ + @Override public Object readActualHeader(final LineIterator reader) { final List headerStrings = new ArrayList(); @@ -97,6 +98,7 @@ else if (line.startsWith(VCFHeader.HEADER_INDICATOR)) { * @param filterString the string to parse * @return a set of the filters applied */ + @Override protected List parseFilters(String filterString) { // null for unfiltered diff --git a/src/main/java/htsjdk/variant/vcf/VCFCodec.java b/src/main/java/htsjdk/variant/vcf/VCFCodec.java index 89d68813e..6e5d3b7d2 100644 --- a/src/main/java/htsjdk/variant/vcf/VCFCodec.java +++ b/src/main/java/htsjdk/variant/vcf/VCFCodec.java @@ -125,6 +125,7 @@ else if (line.startsWith(VCFHeader.HEADER_INDICATOR)) { * @param filterString the string to parse * @return a set of the filters applied or null if filters were not applied to the record (e.g. as per the missing value in a VCF) */ + @Override protected List parseFilters(final String filterString) { // null for unfiltered if ( filterString.equals(VCFConstants.UNFILTERED) ) diff --git a/src/main/java/htsjdk/variant/vcf/VCFCompoundHeaderLine.java b/src/main/java/htsjdk/variant/vcf/VCFCompoundHeaderLine.java index 48e0cdf0d..4d8c3447f 100644 --- a/src/main/java/htsjdk/variant/vcf/VCFCompoundHeaderLine.java +++ b/src/main/java/htsjdk/variant/vcf/VCFCompoundHeaderLine.java @@ -57,6 +57,7 @@ private VCFHeaderLineType type; // access methods + @Override public String getID() { return name; } public String getDescription() { return description; } public VCFHeaderLineType getType() { return type; } @@ -221,6 +222,7 @@ private void validate() { * make a string representation of this header line * @return a string representation */ + @Override protected String toStringEncoding() { Map map = new LinkedHashMap(); map.put("ID", name); diff --git a/src/main/java/htsjdk/variant/vcf/VCFFileReader.java b/src/main/java/htsjdk/variant/vcf/VCFFileReader.java index 9024f34fc..b43935880 100644 --- a/src/main/java/htsjdk/variant/vcf/VCFFileReader.java +++ b/src/main/java/htsjdk/variant/vcf/VCFFileReader.java @@ -129,7 +129,8 @@ public VCFHeader getFileHeader() { } /** Returns an iterator over all records in this VCF/BCF file. */ - public CloseableIterator iterator() { + @Override + public CloseableIterator iterator() { try { return reader.iterator(); } catch (final IOException ioe) { throw new TribbleException("Could not create an iterator from a feature reader.", ioe); @@ -144,7 +145,8 @@ public VCFHeader getFileHeader() { } } - public void close() { + @Override + public void close() { try { this.reader.close(); } catch (final IOException ioe) { throw new TribbleException("Could not close a variant context feature reader.", ioe); diff --git a/src/main/java/htsjdk/variant/vcf/VCFHeaderLine.java b/src/main/java/htsjdk/variant/vcf/VCFHeaderLine.java index c4c1e3bdf..ce12c4273 100644 --- a/src/main/java/htsjdk/variant/vcf/VCFHeaderLine.java +++ b/src/main/java/htsjdk/variant/vcf/VCFHeaderLine.java @@ -127,6 +127,7 @@ public int hashCode() { return result; } + @Override public int compareTo(Object other) { return toString().compareTo(other.toString()); } diff --git a/src/main/java/htsjdk/variant/vcf/VCFHeaderLineTranslator.java b/src/main/java/htsjdk/variant/vcf/VCFHeaderLineTranslator.java index 071d815ca..3ac72b28c 100644 --- a/src/main/java/htsjdk/variant/vcf/VCFHeaderLineTranslator.java +++ b/src/main/java/htsjdk/variant/vcf/VCFHeaderLineTranslator.java @@ -67,6 +67,7 @@ * @param valueLine the line * @return a mapping of the tags parsed out */ + @Override public Map parseLine(String valueLine, List expectedTagOrder) { // our return map Map ret = new LinkedHashMap(); @@ -145,6 +146,7 @@ class VCF3Parser implements VCFLineParser { + @Override public Map parseLine(String valueLine, List expectedTagOrder) { // our return map Map ret = new LinkedHashMap(); diff --git a/src/main/java/htsjdk/variant/vcf/VCFSimpleHeaderLine.java b/src/main/java/htsjdk/variant/vcf/VCFSimpleHeaderLine.java index a5da687e6..1c36f9e95 100644 --- a/src/main/java/htsjdk/variant/vcf/VCFSimpleHeaderLine.java +++ b/src/main/java/htsjdk/variant/vcf/VCFSimpleHeaderLine.java @@ -92,6 +92,7 @@ protected void initialize(String name, Map genericFields) { this.genericFields.putAll(genericFields); } + @Override protected String toStringEncoding() { Map map = new LinkedHashMap(); map.put("ID", name); @@ -121,6 +122,7 @@ public int hashCode() { return result; } + @Override public String getID() { return name; } diff --git a/src/test/java/htsjdk/samtools/MergingSamRecordIteratorGroupCollisionTest.java b/src/test/java/htsjdk/samtools/MergingSamRecordIteratorGroupCollisionTest.java index 18c10c70b..067f853ab 100644 --- a/src/test/java/htsjdk/samtools/MergingSamRecordIteratorGroupCollisionTest.java +++ b/src/test/java/htsjdk/samtools/MergingSamRecordIteratorGroupCollisionTest.java @@ -424,18 +424,22 @@ SamReader newFileReader() { } class ProgramGroupAdapter extends GroupAdapter { + @Override String getGroupId(AbstractSAMHeaderRecord group) { return ((SAMProgramRecord) group).getProgramGroupId(); } + @Override List getGroups(SAMFileHeader header) { return header.getProgramRecords(); } + @Override String getTagName() { return SAMTag.PG.toString(); } + @Override List createGroups(final String[] groupIds) { final List readers = new ArrayList(); for (final String groupId : groupIds) { @@ -457,36 +461,44 @@ String getTagName() { return fileHeaderMerger.getMergedHeader().getProgramRecords(); } + @Override void setAttribute(AbstractSAMHeaderRecord group, String value) { ((SAMProgramRecord) group).setCommandLine(value); } + @Override AbstractSAMHeaderRecord newGroup(String id) { return new SAMProgramRecord(id); } + @Override void setBuilderGroup(SAMRecordSetBuilder builder, AbstractSAMHeaderRecord group) { builder.setProgramRecord((SAMProgramRecord) group); } + @Override boolean equivalent(AbstractSAMHeaderRecord group1, AbstractSAMHeaderRecord group2) { return ((SAMProgramRecord) group1).equivalent((SAMProgramRecord) group2); } } class ReadGroupAdapter extends GroupAdapter { + @Override String getGroupId(AbstractSAMHeaderRecord group) { return ((SAMReadGroupRecord) group).getReadGroupId(); } + @Override List getGroups(SAMFileHeader header) { return header.getReadGroups(); } + @Override String getTagName() { return SAMTag.RG.toString(); } + @Override List createGroups(final String[] groupIds) { final List readers = new ArrayList(); @@ -507,20 +519,24 @@ String getTagName() { return fileHeaderMerger.getMergedHeader().getReadGroups(); } + @Override void setAttribute(AbstractSAMHeaderRecord group, String value) { ((SAMReadGroupRecord) group).setPlatformUnit(value); } + @Override AbstractSAMHeaderRecord newGroup(String id) { SAMReadGroupRecord group = new SAMReadGroupRecord(id); group.setAttribute(SAMTag.SM.name(), id); return group; } + @Override void setBuilderGroup(SAMRecordSetBuilder builder, AbstractSAMHeaderRecord group) { builder.setReadGroup((SAMReadGroupRecord) group); } + @Override boolean equivalent(AbstractSAMHeaderRecord group1, AbstractSAMHeaderRecord group2) { return ((SAMReadGroupRecord) group1).equivalent((SAMReadGroupRecord) group2); } diff --git a/src/test/java/htsjdk/samtools/SamReaderFactoryTest.java b/src/test/java/htsjdk/samtools/SamReaderFactoryTest.java index 43d37bdd3..5b86c8a59 100644 --- a/src/test/java/htsjdk/samtools/SamReaderFactoryTest.java +++ b/src/test/java/htsjdk/samtools/SamReaderFactoryTest.java @@ -59,6 +59,7 @@ public int inflate(byte[] b, int off, int len) throws java.util.zip.DataFormatEx } } final InflaterFactory myInflaterFactory = new InflaterFactory() { + @Override public Inflater makeInflater(final boolean gzipCompatible) { return new MyInflater(gzipCompatible); } @@ -162,11 +163,13 @@ public void queryIntervalIssue76(final String sequenceName, final int start, fin int samRecordsCreated; int bamRecordsCreated; + @Override public SAMRecord createSAMRecord(final SAMFileHeader header) { ++samRecordsCreated; return super.createSAMRecord(header); } + @Override public BAMRecord createBAMRecord(final SAMFileHeader header, final int referenceSequenceIndex, final int alignmentStart, final short readNameLength, final short mappingQuality, final int indexingBin, final int cigarLen, final int flags, final int readLen, final int mateReferenceSequenceIndex, final int mateAlignmentStart, final int insertSize, final byte[] variableLengthBlock) { ++bamRecordsCreated; return super.createBAMRecord(header, referenceSequenceIndex, alignmentStart, readNameLength, mappingQuality, indexingBin, cigarLen, flags, readLen, mateReferenceSequenceIndex, mateAlignmentStart, insertSize, variableLengthBlock); diff --git a/src/test/java/htsjdk/samtools/SamReaderTest.java b/src/test/java/htsjdk/samtools/SamReaderTest.java index 02364f318..5af88214e 100644 --- a/src/test/java/htsjdk/samtools/SamReaderTest.java +++ b/src/test/java/htsjdk/samtools/SamReaderTest.java @@ -103,11 +103,13 @@ public void CRAMNoIndexTest(final String inputFile, final String referenceFile) int samRecordsCreated; int bamRecordsCreated; + @Override public SAMRecord createSAMRecord(final SAMFileHeader header) { ++samRecordsCreated; return super.createSAMRecord(header); } + @Override public BAMRecord createBAMRecord(final SAMFileHeader header, final int referenceSequenceIndex, final int alignmentStart, final short readNameLength, final short mappingQuality, final int indexingBin, final int cigarLen, final int flags, final int readLen, final int mateReferenceSequenceIndex, final int mateAlignmentStart, final int insertSize, final byte[] variableLengthBlock) { ++bamRecordsCreated; return super.createBAMRecord(header, referenceSequenceIndex, alignmentStart, readNameLength, mappingQuality, indexingBin, cigarLen, flags, readLen, mateReferenceSequenceIndex, mateAlignmentStart, insertSize, variableLengthBlock); diff --git a/src/test/java/htsjdk/samtools/ValidateSamFileTest.java b/src/test/java/htsjdk/samtools/ValidateSamFileTest.java index 4ce0b7a29..e577ed876 100644 --- a/src/test/java/htsjdk/samtools/ValidateSamFileTest.java +++ b/src/test/java/htsjdk/samtools/ValidateSamFileTest.java @@ -237,26 +237,32 @@ public void testNmFlagValidation() throws IOException { final Histogram results = executeValidation(samBuilder.getSamReader(), new ReferenceSequenceFile() { private int index = 0; + @Override public SAMSequenceDictionary getSequenceDictionary() { return null; } + @Override public ReferenceSequence nextSequence() { final byte[] bases = new byte[10000]; Arrays.fill(bases, (byte) 'A'); return new ReferenceSequence("foo", index++, bases); } + @Override public void reset() { this.index = 0; } + @Override public boolean isIndexed() { return false; } + @Override public ReferenceSequence getSequence(final String contig) { throw new UnsupportedOperationException(); } + @Override public ReferenceSequence getSubsequenceAt(final String contig, final long start, final long stop) { throw new UnsupportedOperationException(); } diff --git a/src/test/java/htsjdk/samtools/util/BlockCompressedOutputStreamTest.java b/src/test/java/htsjdk/samtools/util/BlockCompressedOutputStreamTest.java index f90af4b01..69d72565f 100644 --- a/src/test/java/htsjdk/samtools/util/BlockCompressedOutputStreamTest.java +++ b/src/test/java/htsjdk/samtools/util/BlockCompressedOutputStreamTest.java @@ -181,6 +181,7 @@ public int deflate(byte[] b, int off, int len) { } final DeflaterFactory myDeflaterFactory= new DeflaterFactory(){ + @Override public Deflater makeDeflater(final int compressionLevel, final boolean gzipCompatible) { return new MyDeflater(compressionLevel, gzipCompatible); } diff --git a/src/test/java/htsjdk/samtools/util/DiskBackedQueueTest.java b/src/test/java/htsjdk/samtools/util/DiskBackedQueueTest.java index 88b05e2b7..95966520b 100644 --- a/src/test/java/htsjdk/samtools/util/DiskBackedQueueTest.java +++ b/src/test/java/htsjdk/samtools/util/DiskBackedQueueTest.java @@ -50,7 +50,9 @@ }; } + @Override @BeforeMethod void setup() { resetTmpDir(); } + @Override @AfterMethod void tearDown() { resetTmpDir(); } /** @@ -59,6 +61,7 @@ * @param numStringsToGenerate * @param maxRecordsInRam */ + @Override @Test(dataProvider = "diskBackedQueueProvider") public void testPositive(final String testName, final int numStringsToGenerate, final int maxRecordsInRam) { final String[] strings = new String[numStringsToGenerate]; diff --git a/src/test/java/htsjdk/samtools/util/SortingCollectionTest.java b/src/test/java/htsjdk/samtools/util/SortingCollectionTest.java index 1ec928d3b..dc9e063cd 100644 --- a/src/test/java/htsjdk/samtools/util/SortingCollectionTest.java +++ b/src/test/java/htsjdk/samtools/util/SortingCollectionTest.java @@ -130,19 +130,23 @@ private void assertIteratorEqualsList(final String[] strings, final Iterator iterator() { return this; } + @Override public boolean hasNext() { return numElementsGenerated < numElementsToGenerate; } + @Override public String next() { ++numElementsGenerated; return Integer.toString(random.nextInt()); } + @Override public void remove() { throw new UnsupportedOperationException(); } @@ -150,6 +154,7 @@ public void remove() { static class StringComparator implements Comparator { + @Override public int compare(final String s, final String s1) { return s.compareTo(s1); } @@ -160,6 +165,7 @@ public int compare(final String s, final String s1) { OutputStream os; InputStream is; + @Override public SortingCollection.Codec clone() { return new StringCodec(); } @@ -169,6 +175,7 @@ public int compare(final String s, final String s1) { * * @param os */ + @Override public void setOutputStream(final OutputStream os) { this.os = os; } @@ -178,6 +185,7 @@ public void setOutputStream(final OutputStream os) { * * @param is */ + @Override public void setInputStream(final InputStream is) { this.is = is; } @@ -187,6 +195,7 @@ public void setInputStream(final InputStream is) { * * @param val what to write */ + @Override public void encode(final String val) { try { byteBuffer.clear(); @@ -204,6 +213,7 @@ public void encode(final String val) { * @return null if no more records. Should throw exception if EOF is encountered in the middle of * a record. */ + @Override public String decode() { try { byteBuffer.clear();