totally new file layout
[org.ibex.tool.git] / src / org / eclipse / jdt / internal / compiler / problem / DefaultProblemFactory.java
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 (file)
index 065c525..0000000
+++ /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
- * <ul>
- * <li>originatingFileName the name of the file name from which the problem is originated
- * <li>problemId the problem id
- * <li>problemArguments the fully qualified arguments recorded inside the problem
- * <li>messageArguments the arguments needed to set the error message (shorter names than problemArguments ones)
- * <li>severity the severity of the problem
- * <li>startPosition the starting position of the problem
- * <li>endPosition the end position of the problem
- * <li>lineNumber the line on which the problem occured
- * </ul>
- * @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;
-}
-
-}