Allow walkers to enforce the ordering in which ReadFilters are applied (so that they're now done in the order specified in the walker). Useful if you have a computationally expensive filter (like adaptor clipping) that should only be applied to reads passing all other filters.
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@5600 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
53db7b8faa
commit
4f17004590
|
|
@ -445,10 +445,14 @@ public class WalkerManager extends PluginManager<Walker> {
|
||||||
* @return An array of types extending from SamRecordFilter. Will never be null.
|
* @return An array of types extending from SamRecordFilter. Will never be null.
|
||||||
*/
|
*/
|
||||||
public static Collection<Class<? extends SamRecordFilter>> getReadFilterTypes(Class<?> walkerClass) {
|
public static Collection<Class<? extends SamRecordFilter>> getReadFilterTypes(Class<?> walkerClass) {
|
||||||
Set<Class<? extends SamRecordFilter>> filterTypes = new HashSet<Class<? extends SamRecordFilter>>();
|
List<Class<? extends SamRecordFilter>> filterTypes = new ArrayList<Class<? extends SamRecordFilter>>();
|
||||||
while(walkerClass != null) {
|
while(walkerClass != null) {
|
||||||
if(walkerClass.isAnnotationPresent(ReadFilters.class))
|
if(walkerClass.isAnnotationPresent(ReadFilters.class)) {
|
||||||
filterTypes.addAll(Arrays.asList(walkerClass.getAnnotation(ReadFilters.class).value()));
|
for ( Class c : walkerClass.getAnnotation(ReadFilters.class).value() ) {
|
||||||
|
if( !filterTypes.contains(c) )
|
||||||
|
filterTypes.add(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
walkerClass = walkerClass.getSuperclass();
|
walkerClass = walkerClass.getSuperclass();
|
||||||
}
|
}
|
||||||
return filterTypes;
|
return filterTypes;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue