package com.ibm.nmon.file; import java.io.FileFilter; import java.io.File; import java.util.List; /** * FileFilter that delegates to a list of {@link SwingAndIOFileFilter SwingAndIOFileFilters}. */ public final class CombinedFileFilter implements FileFilter { private final List<SwingAndIOFileFilter> filters = new java.util.ArrayList<SwingAndIOFileFilter>(); @Override public boolean accept(File pathname) { // note first filter will accept a directory if needed // no need for an explicit check here for (SwingAndIOFileFilter filter : filters) { if (filter.accept(pathname)) { return true; } } return false; } public Iterable<SwingAndIOFileFilter> getFilters() { return java.util.Collections.unmodifiableList(filters); } public NMONFileFilter getNMONFileFilter() { return (NMONFileFilter) filters.get(0).getFilter(); } public GCFileFilter getGCFileFilter() { return (GCFileFilter) filters.get(1).getFilter(); } public IOStatFileFilter getIOStatFileFilter() { return (IOStatFileFilter) filters.get(2).getFilter(); } public JSONFileFilter getJSONFileFilter() { return (JSONFileFilter) filters.get(3).getFilter(); } public HATJFileFilter getHATJFileFilter() { return (HATJFileFilter) filters.get(4).getFilter(); } public PerfmonFileFilter getPerfmonFileFilter() { return (PerfmonFileFilter) filters.get(5).getFilter(); } public ZPoolIOStatFileFilter getZPoolIOStatOutFileFilter() { return (ZPoolIOStatFileFilter) filters.get(6).getFilter(); } public TopasOutFileFilter getTopasOutFileFilter() { return (TopasOutFileFilter) filters.get(7).getFilter(); } public FIOFileFilter getFIOFileFilter() { return (FIOFileFilter) filters.get(8).getFilter(); } private CombinedFileFilter(boolean acceptDirectories) { filters.add(new SwingAndIOFileFilter("NMON Files", new NMONFileFilter(), acceptDirectories)); filters.add(new SwingAndIOFileFilter("Verbose GC Logs", new GCFileFilter(), acceptDirectories)); filters.add(new SwingAndIOFileFilter("IOStat Files", new IOStatFileFilter(), acceptDirectories)); filters.add(new SwingAndIOFileFilter("JSON Files", new JSONFileFilter(), acceptDirectories)); filters.add(new SwingAndIOFileFilter("HATJ CSV Files", new HATJFileFilter(), acceptDirectories)); filters.add(new SwingAndIOFileFilter("Perfmon CSV Files", new PerfmonFileFilter(), acceptDirectories)); filters.add(new SwingAndIOFileFilter("ZPool IOStat Files", new ZPoolIOStatFileFilter(), acceptDirectories)); filters.add(new SwingAndIOFileFilter("topasout -a Files", new TopasOutFileFilter(), acceptDirectories)); filters.add(new SwingAndIOFileFilter("FIO Files", new FIOFileFilter(), acceptDirectories)); } private static final CombinedFileFilter INSTANCE = new CombinedFileFilter(false); private static final CombinedFileFilter INSTANCE_WITH_DIRECTORIES = new CombinedFileFilter(true); public static CombinedFileFilter getInstance(boolean acceptDirectories) { if (acceptDirectories) { return INSTANCE_WITH_DIRECTORIES; } else { return INSTANCE; } } }