package com.github.lindenb.jvarkit.util.picard; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStream; import htsjdk.samtools.fastq.FastqRecord; import htsjdk.samtools.util.SortingCollection.Codec; public class FastQPairCodec implements Codec<FastQPairCodec.PairedFastq> { private FastQCodec fastqCodec=new FastQCodec(); private DataInputStream dis; private DataOutputStream dos; public static class PairedFastq { private FastqRecord fq1; private FastqRecord fq2; PairedFastq(FastqRecord r1,FastqRecord r2) { this.fq1=r1; this.fq2=r2; } public FastqRecord getFirst() { return this.fq1;} public FastqRecord getSecond() { return this.fq2;} } @Override public FastQPairCodec clone() { return new FastQPairCodec(); } @Override public PairedFastq decode() { FastqRecord fq1=this.fastqCodec.decode(); if(fq1==null) return null; FastqRecord fq2=this.fastqCodec.decode(); return new PairedFastq(fq1, fq2); } @Override public void encode(PairedFastq p) { this.fastqCodec.encode(p.getFirst()); this.fastqCodec.encode(p.getSecond()); } @Override public void setInputStream(InputStream in) { this.dis=(in instanceof DataInputStream? DataInputStream.class.cast(in): new DataInputStream(in) ); this.fastqCodec.setInputStream(this.dis); } @Override public void setOutputStream(OutputStream out) { this.dos=( out instanceof DataOutputStream ? DataOutputStream.class.cast(out): new DataOutputStream(out) ); this.fastqCodec.setOutputStream(this.dos); } }