diff --git a/public/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java b/public/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java index 516ea8451..bc37b0557 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java +++ b/public/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java @@ -63,6 +63,7 @@ import org.broadinstitute.sting.utils.recalibration.BaseRecalibration; import org.broadinstitute.sting.utils.threading.ThreadEfficiencyMonitor; import java.io.File; +import java.io.OutputStream; import java.util.*; /** @@ -731,6 +732,21 @@ public class GenomeAnalysisEngine { outputs.add(stub); } + /** + * Iterates over all registered output stubs and tries to find the one representing the given OutputStream. + * + * @param output the stream to check for + * @return the file associated with the given stream/stub if available, null otherwise + */ + public File getFilenameFromAssociatedOutputStream(final OutputStream output) { + for ( final Stub stub : outputs ) { + if ( stub.getOutputStream() == output ) + return stub.getOutputFile(); + } + + return null; + } + /** * Returns the tag associated with a given command-line argument. * @param key Object for which to inspect the tag. diff --git a/public/java/src/org/broadinstitute/sting/gatk/io/storage/SAMFileWriterStorage.java b/public/java/src/org/broadinstitute/sting/gatk/io/storage/SAMFileWriterStorage.java index 300e801e6..9f69a4144 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/io/storage/SAMFileWriterStorage.java +++ b/public/java/src/org/broadinstitute/sting/gatk/io/storage/SAMFileWriterStorage.java @@ -50,7 +50,7 @@ public class SAMFileWriterStorage implements SAMFileWriter, Storage, StingSAMFileWrite * Retrieves the SAM file to (ultimately) be created. * @return The SAM file. Must not be null. */ - public File getSAMFile() { + public File getOutputFile() { return samFile; } @@ -162,7 +162,7 @@ public class SAMFileWriterStub implements Stub, StingSAMFileWrite simplifyBAM = v; } - public OutputStream getSAMOutputStream() { + public OutputStream getOutputStream() { return samOutputStream; } @@ -220,7 +220,7 @@ public class SAMFileWriterStub implements Stub, StingSAMFileWrite /** * Gets whether to generate an md5 on-the-fly for this BAM. - * @return True generates the md5. False means skip writing the file. + * @param generateMD5 True generates the md5. False means skip writing the file. */ public void setGenerateMD5(boolean generateMD5) { if(writeStarted) diff --git a/public/java/src/org/broadinstitute/sting/gatk/io/stubs/Stub.java b/public/java/src/org/broadinstitute/sting/gatk/io/stubs/Stub.java index b042144b6..873f5b7c8 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/io/stubs/Stub.java +++ b/public/java/src/org/broadinstitute/sting/gatk/io/stubs/Stub.java @@ -27,6 +27,9 @@ package org.broadinstitute.sting.gatk.io.stubs; import org.broadinstitute.sting.gatk.io.OutputTracker; +import java.io.File; +import java.io.OutputStream; + /** * A stub used for managing IO. Acts as a proxy for IO streams * not yet created or streams that need significant external @@ -43,4 +46,14 @@ public interface Stub { * @param outputTracker The connector used to provide an appropriate stream. */ public void register( OutputTracker outputTracker ); + + /** + * Returns the OutputStream represented by this stub or null if not available. + */ + public OutputStream getOutputStream(); + + /** + * Returns the File represented by this stub or null if not available. + */ + public File getOutputFile(); } diff --git a/public/java/src/org/broadinstitute/sting/gatk/io/stubs/VariantContextWriterStub.java b/public/java/src/org/broadinstitute/sting/gatk/io/stubs/VariantContextWriterStub.java index ee1dc63e6..f92d78bb5 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/io/stubs/VariantContextWriterStub.java +++ b/public/java/src/org/broadinstitute/sting/gatk/io/stubs/VariantContextWriterStub.java @@ -140,7 +140,7 @@ public class VariantContextWriterStub implements Stub, Var * Retrieves the file to (ultimately) be created. * @return The file. Can be null if genotypeStream is not. */ - public File getFile() { + public File getOutputFile() { return genotypeFile; } @@ -148,7 +148,7 @@ public class VariantContextWriterStub implements Stub, Var * Retrieves the output stearm to which to (ultimately) write. * @return The file. Can be null if genotypeFile is not. */ - public PrintStream getOutputStream() { + public OutputStream getOutputStream() { return genotypeStream; } @@ -196,7 +196,7 @@ public class VariantContextWriterStub implements Stub, Var if ( engine.lenientVCFProcessing() ) options.add(Options.ALLOW_MISSING_FIELDS_IN_HEADER); if ( indexOnTheFly && ! isCompressed() ) options.add(Options.INDEX_ON_THE_FLY); - if ( forceBCF || (getFile() != null && VariantContextWriterFactory.isBCFOutput(getFile())) ) + if ( forceBCF || (getOutputFile() != null && VariantContextWriterFactory.isBCFOutput(getOutputFile())) ) options.add(Options.FORCE_BCF); return options.isEmpty() ? EnumSet.noneOf(Options.class) : EnumSet.copyOf(options); @@ -271,7 +271,7 @@ public class VariantContextWriterStub implements Stub, Var public boolean alsoWriteBCFForTest() { return engine.getArguments().numberOfDataThreads == 1 && // only works single threaded ! isCompressed() && // for non-compressed outputs - getFile() != null && // that are going to disk + getOutputFile() != null && // that are going to disk engine.getArguments().generateShadowBCF; // and we actually want to do it }