X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/problem/DefaultProblemFactory.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/problem/DefaultProblemFactory.java index 33b6b24..a9bcabc 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/problem/DefaultProblemFactory.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/problem/DefaultProblemFactory.java @@ -20,150 +20,161 @@ import net.sourceforge.phpdt.internal.compiler.IProblemFactory; public class DefaultProblemFactory implements IProblemFactory { - public String[] messageTemplates; + private Locale locale; + private static String[] DEFAULT_LOCALE_TEMPLATES; + private final static char[] DOUBLE_QUOTES = "''".toCharArray(); //$NON-NLS-1$ + private final static char[] SINGLE_QUOTE = "'".toCharArray(); //$NON-NLS-1$ -/** - * @param loc the locale used to get the right message - */ -public DefaultProblemFactory(Locale loc) { - this.locale = loc; - if (Locale.getDefault().equals(loc)){ - if (DEFAULT_LOCALE_TEMPLATES == null){ - DEFAULT_LOCALE_TEMPLATES = loadMessageTemplates(loc); + /** + * @param loc + * the locale used to get the right message + */ + public DefaultProblemFactory(Locale loc) { + this.locale = loc; + if (Locale.getDefault().equals(loc)) { + if (DEFAULT_LOCALE_TEMPLATES == null) { + DEFAULT_LOCALE_TEMPLATES = loadMessageTemplates(loc); + } + this.messageTemplates = DEFAULT_LOCALE_TEMPLATES; + } else { + this.messageTemplates = loadMessageTemplates(loc); } - this.messageTemplates = DEFAULT_LOCALE_TEMPLATES; - } else { - this.messageTemplates = loadMessageTemplates(loc); } -} -/** - * Answer a new IProblem created according to the parameters value - * - * @param originatingFileName char[] - * @param problemId int - * @param arguments String[] - * @param severity int - * @param startPosition int - * @param endPosition int - * @param lineNumber int - * @return net.sourceforge.phpdt.internal.compiler.IProblem - */ -public IProblem createProblem( - char[] originatingFileName, - int problemId, - String[] problemArguments, - String[] messageArguments, - int severity, - int startPosition, - int endPosition, - int lineNumber) { - - return new DefaultProblem( - originatingFileName, - this.getLocalizedMessage(problemId, messageArguments), - problemId, - problemArguments, - severity, - startPosition, - endPosition, - lineNumber); -} -/** - * Answer the locale used to retrieve the error messages - * @return java.util.Locale - */ -public Locale getLocale() { - return locale; -} -public final String getLocalizedMessage(int id, String[] problemArguments) { - StringBuffer output = new StringBuffer(80); - String message = - messageTemplates[(id & IProblem.IgnoreCategoriesMask)]; - if (message == null) { - return "Unable to retrieve the error message for problem id: " //$NON-NLS-1$ - + (id & IProblem.IgnoreCategoriesMask) - + ". Check compiler resources."; //$NON-NLS-1$ + + /** + * Answer a new IProblem created according to the parameters value + * + * + * @param originatingFileName + * char[] + * @param problemId + * int + * @param arguments + * String[] + * @param severity + * int + * @param startPosition + * int + * @param endPosition + * int + * @param lineNumber + * int + * @return net.sourceforge.phpdt.internal.compiler.IProblem + */ + public IProblem createProblem(char[] originatingFileName, int problemId, + String[] problemArguments, String[] messageArguments, int severity, + int startPosition, int endPosition, int lineNumber) { + + return new DefaultProblem(originatingFileName, this + .getLocalizedMessage(problemId, messageArguments), problemId, + problemArguments, severity, startPosition, endPosition, + lineNumber); + } + + /** + * Answer the locale used to retrieve the error messages + * + * @return java.util.Locale + */ + public Locale getLocale() { + return locale; } - // for compatibility with MessageFormat which eliminates double quotes in original message - char[] messageWithNoDoubleQuotes = - CharOperation.replace(message.toCharArray(), DOUBLE_QUOTES, SINGLE_QUOTE); - message = new String(messageWithNoDoubleQuotes); - - int length = message.length(); - int start = -1, end = length; - while (true) { - if ((end = message.indexOf('{', start)) > -1) { - output.append(message.substring(start + 1, end)); - if ((start = message.indexOf('}', end)) > -1) { - try { - output.append( - problemArguments[Integer.parseInt(message.substring(end + 1, start))]); - } catch (NumberFormatException nfe) { - output.append(message.substring(end + 1, start + 1)); - } catch (ArrayIndexOutOfBoundsException e) { - return "Corrupted compiler resources for problem id: " //$NON-NLS-1$ - + (id & IProblem.IgnoreCategoriesMask) - + ". Check compiler resources."; //$NON-NLS-1$ + public final String getLocalizedMessage(int id, String[] problemArguments) { + StringBuffer output = new StringBuffer(80); + String message = messageTemplates[(id & IProblem.IgnoreCategoriesMask)]; + if (message == null) { + return "Unable to retrieve the error message for problem id: " //$NON-NLS-1$ + + (id & IProblem.IgnoreCategoriesMask) + + ". Check compiler resources."; //$NON-NLS-1$ + } + + // for compatibility with MessageFormat which eliminates double quotes + // in original message + char[] messageWithNoDoubleQuotes = CharOperation.replace(message + .toCharArray(), DOUBLE_QUOTES, SINGLE_QUOTE); + message = new String(messageWithNoDoubleQuotes); + + int length = message.length(); + int start = -1, end = length; + while (true) { + if ((end = message.indexOf('{', start)) > -1) { + output.append(message.substring(start + 1, end)); + if ((start = message.indexOf('}', end)) > -1) { + try { + output.append(problemArguments[Integer.parseInt(message + .substring(end + 1, start))]); + } catch (NumberFormatException nfe) { + output.append(message.substring(end + 1, start + 1)); + } catch (ArrayIndexOutOfBoundsException e) { + return "Corrupted compiler resources for problem id: " //$NON-NLS-1$ + + (id & IProblem.IgnoreCategoriesMask) + + ". Check compiler resources."; //$NON-NLS-1$ + } + } else { + output.append(message.substring(end, length)); + break; } } else { - output.append(message.substring(end, length)); + output.append(message.substring(start + 1, length)); break; } - } else { - output.append(message.substring(start + 1, length)); - break; } + return output.toString(); } - return output.toString(); -} -/** - * @param problem net.sourceforge.phpdt.internal.compiler.IProblem - * @return String - */ -public final String localizedMessage(IProblem problem) { - return getLocalizedMessage(problem.getID(), problem.getArguments()); -} -/** - * This method initializes the MessageTemplates class variable according - * to the current Locale. - */ -public static String[] loadMessageTemplates(Locale loc) { - ResourceBundle bundle = null; - String bundleName = "net.sourceforge.phpdt.internal.compiler.problem.messages"; //$NON-NLS-1$ - try { - bundle = ResourceBundle.getBundle(bundleName, loc); - } catch(MissingResourceException e) { - System.out.println("Missing resource : " + bundleName.replace('.', '/') + ".properties for locale " + loc); //$NON-NLS-1$//$NON-NLS-2$ - throw e; + /** + * @param problem + * net.sourceforge.phpdt.internal.compiler.IProblem + * @return String + */ + public final String localizedMessage(IProblem problem) { + return getLocalizedMessage(problem.getID(), problem.getArguments()); } - String[] templates = new String[500]; - for (int i = 0, max = templates.length; i < max; i++) { + + /** + * This method initializes the MessageTemplates class variable according to + * the current Locale. + */ + public static String[] loadMessageTemplates(Locale loc) { + ResourceBundle bundle = null; + String bundleName = "net.sourceforge.phpdt.internal.compiler.problem.messages"; //$NON-NLS-1$ try { - templates[i] = bundle.getString(String.valueOf(i)); + bundle = ResourceBundle.getBundle(bundleName, loc); } catch (MissingResourceException e) { - // available ID + System.out + .println("Missing resource : " + bundleName.replace('.', '/') + ".properties for locale " + loc); //$NON-NLS-1$//$NON-NLS-2$ + throw e; + } + String[] templates = new String[500]; + for (int i = 0, max = templates.length; i < max; i++) { + try { + templates[i] = bundle.getString(String.valueOf(i)); + } catch (MissingResourceException e) { + // available ID + } } + return templates; } - return templates; -} -public DefaultProblemFactory() { - this(Locale.getDefault()); -} + public DefaultProblemFactory() { + this(Locale.getDefault()); + } }