Configure the plugin directory.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@103 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
hanna 2009-03-19 22:12:25 +00:00
parent 6bcdac5c62
commit 104e2811ec
2 changed files with 20 additions and 17 deletions

View File

@ -15,7 +15,7 @@ import java.util.HashMap;
public class GenomeAnalysisTK extends CommandLineProgram {
// Usage and parameters
@Usage(programVersion="0.1") public String USAGE = "SAM Validator\n";
@Usage(programVersion="0.1") public String USAGE = "Genome Analysis Toolkit\n";
@Option(shortName="I", doc="SAM or BAM file for validation") public File INPUT_FILE;
@Option(shortName="M", doc="Maximum number of reads to process before exiting", optional=true) public String MAX_READS_ARG = "-1";
@Option(shortName="S", doc="How strict should we be with validation", optional=true) public String STRICTNESS_ARG = "strict";
@ -28,7 +28,10 @@ public class GenomeAnalysisTK extends CommandLineProgram {
@Option(shortName="U", doc="If true, enables unsafe operations, nothing will be checked at runtime. You better know what you are doing if you set this flag.", optional=false) public String UNSAFE = "false";
@Option(shortName="SORT_ON_FLY", doc="If true, enables on fly sorting of reads file.", optional=false) public String ENABLED_SORT_ON_FLY = "false";
private WalkerManager walkerManager = new WalkerManager();
@Option(shortName="PLUGINS", doc="Directory where plugin class files live.", optional=true)
public String pluginPathName = null;
private WalkerManager walkerManager = null;
private TraversalEngine engine = null;
public boolean DEBUGGING = false;
@ -39,6 +42,8 @@ public class GenomeAnalysisTK extends CommandLineProgram {
}
protected int doWork() {
walkerManager = new WalkerManager(pluginPathName);
final boolean TEST_ROD = false;
ReferenceOrderedData[] rods = null;

View File

@ -29,17 +29,25 @@ import org.broadinstitute.sting.gatk.walkers.Walker;
* To change this template use File | Settings | File Templates.
*/
public class WalkerManager {
private Map<String,Walker> walkers = null;
public WalkerManager() {
public WalkerManager( String pluginDirectory ) {
try {
final File jarFile = getThisJarFile();
if(pluginDirectory == null)
pluginDirectory = jarFile.getParent() + File.separator + "walkers";
System.out.println("plugin directory: " + pluginDirectory);
List<Class> walkerClasses = new ArrayList<Class>();
walkerClasses.addAll( loadClassesFromJar( jarFile, getPackagePrefix(Walker.class) ) );
// Load all classes that live in this jar.
walkerClasses.addAll( loadClassesFromJar( jarFile ) );
File extensionPath = new File( jarFile.getParent() + File.separator + "walkers" );
// Load all classes that live in the extension path.
File extensionPath = new File( pluginDirectory );
if(extensionPath.exists())
walkerClasses.addAll( loadClassesFromPath( extensionPath ) );
@ -102,10 +110,9 @@ public class WalkerManager {
* Loads concrete classes from a jar which are both in the same package or 'sub-package' of baseClass,
* and which extend from baseClass.
* @param jarFile The jar file to search.
* @param packagePrefix Filter out classes in the jar that don't start with this package.
* @return A list of classes derived from baseClass.
*/
private List<Class> loadClassesFromJar(final File jarFile, String packagePrefix)
private List<Class> loadClassesFromJar(final File jarFile)
throws IOException {
List<Class> subclasses = new ArrayList<Class>();
@ -116,7 +123,7 @@ public class WalkerManager {
while(jarEntry != null) {
String jarEntryName = jarEntry.getName();
if(jarEntryName.startsWith(packagePrefix) && jarEntryName.endsWith(".class"))
if(jarEntryName.endsWith(".class"))
{
String className = jarEntryName.substring(0,jarEntryName.lastIndexOf(".class")).replace('/','.');
subclasses.add( Class.forName(className) );
@ -135,15 +142,6 @@ public class WalkerManager {
return subclasses;
}
/**
* Get the package prefix for a class, in directory format.
* @param clazz The class.
* @return Package prefix, in directory format.
*/
private String getPackagePrefix(Class clazz) {
return clazz.getPackage().getName().replace('.','/');
}
/**
* Load loose classes from the specified directory.
* @param path source path from which to load classes.