
package edu.umd.cs.findbugs;

import java.io.IOException;

import edu.umd.cs.findbugs.filter.Matcher;
import edu.umd.cs.findbugs.xml.XMLOutput;

abstract public class WarningSuppressor implements Matcher {

	final static boolean DEBUG = SystemProperties.getBoolean("warning.suppressor");

	String bugPattern;

	public WarningSuppressor(String bugPattern) {
		this.bugPattern = bugPattern;
		if (DEBUG)
		System.out.println("Suppressing " + bugPattern);
		}

	public boolean match(BugInstance bugInstance) {

		if (DEBUG) {
	System.out.println("Checking " + bugInstance);
	System.out.println("    type:" + bugInstance.getType());
	System.out.println(" against: " + bugPattern);

	}
	if (!(
		bugPattern == null
		|| bugInstance.getType().startsWith(bugPattern)
		|| bugInstance.getBugPattern().getCategory().equalsIgnoreCase(bugPattern)
		|| bugInstance.getBugPattern().getAbbrev().equalsIgnoreCase(bugPattern)))
	return false;
	if (DEBUG)
	System.out.println(" pattern matches");
	return true;
	}
	
	public void writeXML(XMLOutput xmlOutput, boolean disabled) throws IOException {
	  // no-op; these aren't saved to XML
	}
}

