package hudson.plugins.mantis; import java.io.PrintStream; import java.util.Arrays; /** * Utility class. * * @author Seiji Sogabe */ public final class Utility { private static final char[] REGEXP_CHARS = new char[] { '\\', '[', ']', '(', ')', '{', '}', '^', '$', '|', '?', '*', '+', '-', ':', ',', '.', '&' }; static { Arrays.sort(REGEXP_CHARS); } private Utility() { // } public static String escape(final String str) { if (str == null) { return null; } final int len = str.length(); final StringBuffer buf = new StringBuffer(len); for (int i = 0; i < len; i++) { final char c = str.charAt(i); switch (c) { case '<': buf.append("<"); break; case '>': buf.append(">"); break; case '&': if ((i < len - 1) && (str.charAt(i + 1) == '#')) { buf.append(c); } else { buf.append("&"); } break; case '"': buf.append("""); break; case '\'': buf.append("'"); break; default: buf.append(c); break; } } return buf.toString(); } public static void log(final PrintStream logger, final String message) { final StringBuffer buf = new StringBuffer(); buf.append("[MANTIS] ").append(message); logger.println(buf.toString()); } public static String escapeRegexp(final String str) { if (str == null) { return null; } final StringBuffer buf = new StringBuffer(); final int len = str.length(); for (int i = 0; i < len; i++) { final char c = str.charAt(i); if (Arrays.binarySearch(REGEXP_CHARS, c) >= 0) { buf.append("\\"); } buf.append(c); } return buf.toString(); } }