X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Feclipse%2Fjdt%2Finternal%2Fcompiler%2Fproblem%2FDefaultProblemFactory.java;fp=src%2Forg%2Feclipse%2Fjdt%2Finternal%2Fcompiler%2Fproblem%2FDefaultProblemFactory.java;h=0000000000000000000000000000000000000000;hb=6f0cd02d46e011bd5599e1b7fefc6159cb811135;hp=065c52504a0cede68e46309eaa971ea1aa5e22a2;hpb=622d0e5a4b1b35b6918a516a79a0cc22272a919e;p=org.ibex.tool.git diff --git a/src/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.java b/src/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.java deleted file mode 100644 index 065c525..0000000 --- a/src/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.java +++ /dev/null @@ -1,197 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jdt.internal.compiler.problem; - -import java.util.Enumeration; -import java.util.Locale; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -import org.eclipse.jdt.core.compiler.*; -import org.eclipse.jdt.core.compiler.IProblem; -import org.eclipse.jdt.internal.compiler.IProblemFactory; -import org.eclipse.jdt.internal.compiler.util.HashtableOfInt; -import org.eclipse.jdt.internal.compiler.util.Util; - -public class DefaultProblemFactory implements IProblemFactory { - - public HashtableOfInt messageTemplates; - private Locale locale; - private static HashtableOfInt DEFAULT_LOCALE_TEMPLATES; - private final static char[] DOUBLE_QUOTES = "''".toCharArray(); //$NON-NLS-1$ - private final static char[] SINGLE_QUOTE = "'".toCharArray(); //$NON-NLS-1$ - -public DefaultProblemFactory() { - this(Locale.getDefault()); -} -/** - * @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); - } -} -/** - * Answer a new IProblem created according to the parameters value - * - * @param originatingFileName char[] - * @param problemId int - * @param problemArguments String[] - * @param messageArguments String[] - * @param severity int - * @param startPosition int - * @param endPosition int - * @param lineNumber int - * @return org.eclipse.jdt.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); -} -private final static int keyFromID(int id) { - return id + 1; // keys are offsetted by one in table, since it cannot handle 0 key -} -/** - * Answer the locale used to retrieve the error messages - * @return java.util.Locale - */ -public Locale getLocale() { - return this.locale; -} -public final String getLocalizedMessage(int id, String[] problemArguments) { - String message = (String) this.messageTemplates.get(keyFromID(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); - - if (problemArguments == null) return new String(messageWithNoDoubleQuotes); - - int length = messageWithNoDoubleQuotes.length; - int start = 0; - int end = length; - StringBuffer output = null; - if ((id & IProblem.Javadoc) != 0) { - if (output == null) output = new StringBuffer(10+length+problemArguments.length*20); - output.append((String) this.messageTemplates.get(keyFromID(IProblem.JavadocMessagePrefix & IProblem.IgnoreCategoriesMask))); - } - while (true) { - if ((end = CharOperation.indexOf('{', messageWithNoDoubleQuotes, start)) > -1) { - if (output == null) output = new StringBuffer(length+problemArguments.length*20); - output.append(messageWithNoDoubleQuotes, start, end - start); - if ((start = CharOperation.indexOf('}', messageWithNoDoubleQuotes, end + 1)) > -1) { - int index = -1; - String argId = new String(messageWithNoDoubleQuotes, end + 1, start - end - 1); - try { - index = Integer.parseInt(argId); - output.append(problemArguments[index]); - } catch (NumberFormatException nfe) { - output.append(messageWithNoDoubleQuotes, end + 1, start - end); - } catch (ArrayIndexOutOfBoundsException e) { - return "Cannot bind message for problem (id: " //$NON-NLS-1$ - + (id & IProblem.IgnoreCategoriesMask) - + ") \"" //$NON-NLS-1$ - + message - + "\" with arguments: {" //$NON-NLS-1$ - + Util.toString(problemArguments) - +"}"; //$NON-NLS-1$ - } - start++; - } else { - output.append(messageWithNoDoubleQuotes, end, length); - break; - } - } else { - if (output == null) return new String(messageWithNoDoubleQuotes); - output.append(messageWithNoDoubleQuotes, start, length - start); - break; - } - } - - return output.toString(); -} -/** - * @param problem org.eclipse.jdt.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. - * @param loc Locale - * @return HashtableOfInt - */ -public static HashtableOfInt loadMessageTemplates(Locale loc) { - ResourceBundle bundle = null; - String bundleName = "org.eclipse.jdt.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; - } - HashtableOfInt templates = new HashtableOfInt(700); - Enumeration keys = bundle.getKeys(); - while (keys.hasMoreElements()) { - String key = (String)keys.nextElement(); - try { - int messageID = Integer.parseInt(key); - templates.put(keyFromID(messageID), bundle.getString(key)); - } catch(NumberFormatException e) { - // key ill-formed - } catch (MissingResourceException e) { - // available ID - } - } - return templates; -} - -}