package hudson.plugins.warnings.parser;
import hudson.plugins.analysis.util.model.Priority;
import java.util.regex.Matcher;
/**
* A parser for the tnsdl translator warnings.
*
* @author Shaohua Wen
*/
public class TnsdlParser extends RegexpLineParser {
/** A TNSDL Translator error. */
static final String WARNING_CATEGORY = "Tnsdl Error";
/** Warning type of this parser. */
static final String WARNING_TYPE = "TNSDL Translator";
/** Pattern of tnsdl translator warnings. */
private static final String TNSDL_WARNING_PATTERN = "^tnsdl((.*)?):\\(.*\\) (.*) \\((.*)\\):(.*)$";
/**
* Creates a new instance of <code>TnsdlParser</code>.
*/
public TnsdlParser() {
super(TNSDL_WARNING_PATTERN, WARNING_TYPE, true);
}
/** {@inheritDoc} */
@Override
protected boolean isLineInteresting(final String line) {
return line.contains("tnsdl");
}
/**
* Creates a new annotation for the specified pattern.
*
* @param matcher
* the regular expression matcher
* @return a new annotation for the specified pattern
*/
@Override
protected Warning createWarning(final Matcher matcher) {
String fileName = matcher.group(3);
int lineNumber = getLineNumber(matcher.group(4));
String message = matcher.group(5);
Priority priority;
if (matcher.group().contains("(E)")) {
priority = Priority.HIGH;
}
else {
priority = Priority.NORMAL;
}
return new Warning(fileName, lineNumber, WARNING_TYPE, WARNING_CATEGORY, message, priority);
}
}