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() {
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;
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<String> createApplicationHeader() {
List<String> header = new ArrayList<String>();
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") : "<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.
* 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;
/**
* Stores additional attribution for a given walker.
*/
final List<String> attribution;
/**
* Extract details covering exactly how to run this executable.
*/
@ -57,12 +62,9 @@ public class ApplicationDetails {
*/
final String additionalHelp;
public ApplicationDetails( List<String> applicationHeader, String runningInstructions ) {
this(applicationHeader,runningInstructions,null);
}
public ApplicationDetails( List<String> applicationHeader, String runningInstructions, String additionalHelp ) {
public ApplicationDetails( List<String> applicationHeader, List<String> attribution, String runningInstructions, String additionalHelp ) {
this.applicationHeader = applicationHeader;
this.attribution = attribution;
this.runningInstructions = runningInstructions;
this.additionalHelp = additionalHelp;
}

View File

@ -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);
}
/**