A mechanism for supplying attribution text -- mainly useful for external

walkers.


git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@4402 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
hanna 2010-10-01 18:31:19 +00:00
parent e920badcc4
commit 8d25a5f9f2
4 changed files with 38 additions and 7 deletions

View File

@ -95,7 +95,9 @@ public abstract class CommandLineProgram {
*/ */
protected ApplicationDetails getApplicationDetails() { protected ApplicationDetails getApplicationDetails() {
return new ApplicationDetails(ApplicationDetails.createDefaultHeader(getClass()), return new ApplicationDetails(ApplicationDetails.createDefaultHeader(getClass()),
ApplicationDetails.createDefaultRunningInstructions(getClass())); Collections.<String>emptyList(),
ApplicationDetails.createDefaultRunningInstructions(getClass()),
null);
} }
/** /**

View File

@ -26,6 +26,7 @@
package org.broadinstitute.sting.gatk; package org.broadinstitute.sting.gatk;
import org.broadinstitute.sting.gatk.arguments.GATKArgumentCollection; 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.exceptions.UserException;
import org.broadinstitute.sting.utils.text.TextFormattingUtils; import org.broadinstitute.sting.utils.text.TextFormattingUtils;
import org.broadinstitute.sting.utils.help.ApplicationDetails; import org.broadinstitute.sting.utils.help.ApplicationDetails;
@ -61,6 +62,7 @@ public class CommandLineGATK extends CommandLineExecutable {
@Override @Override
protected ApplicationDetails getApplicationDetails() { protected ApplicationDetails getApplicationDetails() {
return new ApplicationDetails(createApplicationHeader(), return new ApplicationDetails(createApplicationHeader(),
getAttribution(),
ApplicationDetails.createDefaultRunningInstructions(getClass()), ApplicationDetails.createDefaultRunningInstructions(getClass()),
getAdditionalHelp()); getAdditionalHelp());
} }
@ -98,7 +100,7 @@ public class CommandLineGATK extends CommandLineExecutable {
public static List<String> createApplicationHeader() { public static List<String> createApplicationHeader() {
List<String> header = new ArrayList<String>(); List<String> header = new ArrayList<String>();
header.add(String.format("The Genome Analysis Toolkit (GATK) v%s, Compiled %s",getVersionNumber(), getBuildTime())); 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("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"); header.add("For support, please view our support site at http://getsatisfaction.com/gsa");
return header; return header;
@ -114,6 +116,24 @@ public class CommandLineGATK extends CommandLineExecutable {
return headerInfo.containsKey("build.timestamp") ? headerInfo.getString("build.timestamp") : "<unknown>"; return headerInfo.containsKey("build.timestamp") ? headerInfo.getString("build.timestamp") : "<unknown>";
} }
/**
* 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<String> getAttribution() {
List<String> attributionLines = new ArrayList<String>();
// 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<? extends Walker> 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. * Retrieves additional information about GATK walkers.
* the code in HelpFormatter and supply it as a helper to this method. * the code in HelpFormatter and supply it as a helper to this method.

View File

@ -47,6 +47,11 @@ public class ApplicationDetails {
*/ */
final List<String> applicationHeader; final List<String> applicationHeader;
/**
* Stores additional attribution for a given walker.
*/
final List<String> attribution;
/** /**
* Extract details covering exactly how to run this executable. * Extract details covering exactly how to run this executable.
*/ */
@ -57,12 +62,9 @@ public class ApplicationDetails {
*/ */
final String additionalHelp; final String additionalHelp;
public ApplicationDetails( List<String> applicationHeader, String runningInstructions ) { public ApplicationDetails( List<String> applicationHeader, List<String> attribution, String runningInstructions, String additionalHelp ) {
this(applicationHeader,runningInstructions,null);
}
public ApplicationDetails( List<String> applicationHeader, String runningInstructions, String additionalHelp ) {
this.applicationHeader = applicationHeader; this.applicationHeader = applicationHeader;
this.attribution = attribution;
this.runningInstructions = runningInstructions; this.runningInstructions = runningInstructions;
this.additionalHelp = additionalHelp; this.additionalHelp = additionalHelp;
} }

View File

@ -65,6 +65,9 @@ public class HelpFormatter {
for(String headerLine: header) for(String headerLine: header)
System.out.printf("%s%n",headerLine); System.out.printf("%s%n",headerLine);
System.out.printf("%s%n",barrier); 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 synopsis = getSynopsis(applicationDetails.runningInstructions,argumentGroups);
String additionalDetails = applicationDetails.additionalHelp != null ? applicationDetails.additionalHelp : ""; String additionalDetails = applicationDetails.additionalHelp != null ? applicationDetails.additionalHelp : "";
@ -293,6 +296,10 @@ public class HelpFormatter {
logger.info("Program Args: " + output); logger.info("Program Args: " + output);
logger.info("Date/Time: " + dateFormat.format(date)); logger.info("Date/Time: " + dateFormat.format(date));
logger.info(barrier); logger.info(barrier);
for(String attribution: applicationDetails.attribution)
logger.info(attribution);
logger.info(barrier);
} }
/** /**