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:
parent
6bcdac5c62
commit
104e2811ec
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Reference in New Issue