diff --git a/java/src/org/broadinstitute/sting/commandline/CommandLineProgram.java b/java/src/org/broadinstitute/sting/commandline/CommandLineProgram.java index dd4b74e42..6f3a88424 100644 --- a/java/src/org/broadinstitute/sting/commandline/CommandLineProgram.java +++ b/java/src/org/broadinstitute/sting/commandline/CommandLineProgram.java @@ -95,7 +95,9 @@ public abstract class CommandLineProgram { */ protected ApplicationDetails getApplicationDetails() { return new ApplicationDetails(ApplicationDetails.createDefaultHeader(getClass()), - ApplicationDetails.createDefaultRunningInstructions(getClass())); + Collections.emptyList(), + ApplicationDetails.createDefaultRunningInstructions(getClass()), + null); } /** diff --git a/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java b/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java index 5830696d1..3e3f974a9 100755 --- a/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java +++ b/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java @@ -26,6 +26,7 @@ package org.broadinstitute.sting.gatk; import org.broadinstitute.sting.gatk.arguments.GATKArgumentCollection; +import org.broadinstitute.sting.gatk.walkers.Attribution; import org.broadinstitute.sting.utils.exceptions.UserException; import org.broadinstitute.sting.utils.text.TextFormattingUtils; import org.broadinstitute.sting.utils.help.ApplicationDetails; @@ -61,6 +62,7 @@ public class CommandLineGATK extends CommandLineExecutable { @Override protected ApplicationDetails getApplicationDetails() { return new ApplicationDetails(createApplicationHeader(), + getAttribution(), ApplicationDetails.createDefaultRunningInstructions(getClass()), getAdditionalHelp()); } @@ -98,7 +100,7 @@ public class CommandLineGATK extends CommandLineExecutable { public static List createApplicationHeader() { List header = new ArrayList(); header.add(String.format("The Genome Analysis Toolkit (GATK) v%s, Compiled %s",getVersionNumber(), getBuildTime())); - header.add("Copyright (c) 2009 The Broad Institute"); + header.add("Copyright (c) 2010 The Broad Institute"); header.add("Please view our documentation at http://www.broadinstitute.org/gsa/wiki"); header.add("For support, please view our support site at http://getsatisfaction.com/gsa"); return header; @@ -114,6 +116,24 @@ public class CommandLineGATK extends CommandLineExecutable { return headerInfo.containsKey("build.timestamp") ? headerInfo.getString("build.timestamp") : ""; } + /** + * If the user supplied any additional attribution, return it here. + * @return Additional attribution if supplied by the user. Empty (non-null) list otherwise. + */ + private List getAttribution() { + List attributionLines = new ArrayList(); + + // If no analysis name is present, fill in extra help on the walkers. + WalkerManager walkerManager = engine.getWalkerManager(); + String analysisName = getAnalysisName(); + if(analysisName != null && walkerManager.exists(analysisName)) { + Class walkerType = walkerManager.getWalkerClassByName(analysisName); + if(walkerType.isAnnotationPresent(Attribution.class)) + attributionLines.addAll(Arrays.asList(walkerType.getAnnotation(Attribution.class).value())); + } + return attributionLines; + } + /** * Retrieves additional information about GATK walkers. * the code in HelpFormatter and supply it as a helper to this method. diff --git a/java/src/org/broadinstitute/sting/utils/help/ApplicationDetails.java b/java/src/org/broadinstitute/sting/utils/help/ApplicationDetails.java index b948b2eb5..d9e74640f 100644 --- a/java/src/org/broadinstitute/sting/utils/help/ApplicationDetails.java +++ b/java/src/org/broadinstitute/sting/utils/help/ApplicationDetails.java @@ -47,6 +47,11 @@ public class ApplicationDetails { */ final List applicationHeader; + /** + * Stores additional attribution for a given walker. + */ + final List attribution; + /** * Extract details covering exactly how to run this executable. */ @@ -57,12 +62,9 @@ public class ApplicationDetails { */ final String additionalHelp; - public ApplicationDetails( List applicationHeader, String runningInstructions ) { - this(applicationHeader,runningInstructions,null); - } - - public ApplicationDetails( List applicationHeader, String runningInstructions, String additionalHelp ) { + public ApplicationDetails( List applicationHeader, List attribution, String runningInstructions, String additionalHelp ) { this.applicationHeader = applicationHeader; + this.attribution = attribution; this.runningInstructions = runningInstructions; this.additionalHelp = additionalHelp; } diff --git a/java/src/org/broadinstitute/sting/utils/help/HelpFormatter.java b/java/src/org/broadinstitute/sting/utils/help/HelpFormatter.java index 6ee85528b..799139832 100755 --- a/java/src/org/broadinstitute/sting/utils/help/HelpFormatter.java +++ b/java/src/org/broadinstitute/sting/utils/help/HelpFormatter.java @@ -65,6 +65,9 @@ public class HelpFormatter { for(String headerLine: header) System.out.printf("%s%n",headerLine); System.out.printf("%s%n",barrier); + for(String attributionLine: applicationDetails.attribution) + System.out.printf("%s%n",attributionLine); + System.out.printf("%s%n",barrier); String synopsis = getSynopsis(applicationDetails.runningInstructions,argumentGroups); String additionalDetails = applicationDetails.additionalHelp != null ? applicationDetails.additionalHelp : ""; @@ -293,6 +296,10 @@ public class HelpFormatter { logger.info("Program Args: " + output); logger.info("Date/Time: " + dateFormat.format(date)); logger.info(barrier); + + for(String attribution: applicationDetails.attribution) + logger.info(attribution); + logger.info(barrier); } /**