added "new PHP project" shortcut to PHP perspective
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / builder / IdentifierIndexManager.java
index 8e859cf..1a38bc6 100644 (file)
@@ -11,7 +11,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -33,7 +32,7 @@ import org.eclipse.core.runtime.IStatus;
 
 /**
  * Manages the identifer index information for a specific project
- *  
+ *
  */
 public class IdentifierIndexManager {
   public class LineCreator implements ITerminalSymbols {
@@ -47,7 +46,7 @@ public class IdentifierIndexManager {
 
     /**
      * Add the information of the current identifier to the line
-     * 
+     *
      * @param typeOfIdentifier
      *          the type of the identifier ('c'lass, 'd'efine, 'f'unction, 'm'ethod(class), 'v'ariable(class) 'g'lobal variable)
      * @param identifier
@@ -65,7 +64,7 @@ public class IdentifierIndexManager {
 
     /**
      * Add the information of the current identifier to the line
-     * 
+     *
      * @param typeOfIdentifier
      *          the type of the identifier ('c'lass, 'd'efine, 'f'unction, 'm'ethod(class), 'v'ariable(class) 'g'lobal variable)
      * @param identifier
@@ -111,21 +110,21 @@ public class IdentifierIndexManager {
     /**
      * Get the next token from input
      */
-    private void getNextToken() {
-      try {
-        fToken = fScanner.getNextToken();
-        if (Scanner.DEBUG) {
-          int currentEndPosition = fScanner.getCurrentTokenEndPosition();
-          int currentStartPosition = fScanner.getCurrentTokenStartPosition();
-          System.out.print(currentStartPosition + "," + currentEndPosition + ": ");
-          System.out.println(fScanner.toStringAction(fToken));
-        }
-        return;
-      } catch (InvalidInputException e) {
-        // ignore errors
-        //        e.printStackTrace();
+    private void getNextToken() throws InvalidInputException {
+      //      try {
+      fToken = fScanner.getNextToken();
+      if (Scanner.DEBUG) {
+        int currentEndPosition = fScanner.getCurrentTokenEndPosition();
+        int currentStartPosition = fScanner.getCurrentTokenStartPosition();
+        System.out.print(currentStartPosition + "," + currentEndPosition + ": ");
+        System.out.println(fScanner.toStringAction(fToken));
       }
-      fToken = TokenNameERROR;
+      return;
+      //      } catch (InvalidInputException e) {
+      //        // ignore errors
+      //        // e.printStackTrace();
+      //      }
+      //      fToken = TokenNameERROR;
     }
 
     private void parseDeclarations(char[] parent, StringBuffer buf, boolean goBack) {
@@ -268,6 +267,8 @@ public class IdentifierIndexManager {
             getNextToken();
           }
         }
+      } catch (InvalidInputException e) {
+        // ignore errors
       } catch (SyntaxError e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
@@ -284,8 +285,8 @@ public class IdentifierIndexManager {
       fScanner.setSource(charArray);
       fScanner.setPHPMode(false);
       fToken = TokenNameEOF;
-      getNextToken();
       try {
+        getNextToken();
         while (fToken != TokenNameEOF) { // && fToken != TokenNameERROR) {
           phpdocOffset = -1;
           hasModifiers = false;
@@ -377,6 +378,8 @@ public class IdentifierIndexManager {
             getNextToken();
           }
         }
+      } catch (InvalidInputException e) {
+        // ignore errors
       } catch (SyntaxError e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
@@ -412,7 +415,7 @@ public class IdentifierIndexManager {
 
   /**
    * Check if 2 char arrays are equal
-   * 
+   *
    * @param a
    * @param b
    * @return
@@ -435,7 +438,7 @@ public class IdentifierIndexManager {
 
   /**
    * Add the information for a given IFile resource
-   *  
+   *
    */
   public void addFile(IFile fileToParse) {
     //    InputStream iStream;
@@ -478,7 +481,7 @@ public class IdentifierIndexManager {
 
   /**
    * Adds a line of the index file for function, class, class-method and class-variable names
-   * 
+   *
    * @param line
    */
   private void addLine(String line) {
@@ -490,20 +493,21 @@ public class IdentifierIndexManager {
     addIdentifiers(treeMap, file);
     return treeMap;
   }
+
   public TreeMap getIdentifiers(String startClazz) {
     TreeMap treeMap = new TreeMap(new StringComparator());
     addIdentifiers(treeMap, startClazz);
     return treeMap;
   }
-  
+
   public void addIdentifiers(TreeMap treeMap, IFile file) {
     String line = (String) fFileMap.get(file.getProjectRelativePath().toString());
     if (line != null) {
       PHPIdentifierLocation ident;
       ArrayList allClassNames = new ArrayList();
       addLine(treeMap, null, line, allClassNames);
-      int i=0;
-      while (i<allClassNames.size()) {
+      int i = 0;
+      while (i < allClassNames.size()) {
         String clazz = (String) allClassNames.get(i++);
         addClassName(treeMap, clazz, allClassNames);
       }
@@ -514,8 +518,8 @@ public class IdentifierIndexManager {
     PHPIdentifierLocation ident;
     ArrayList allClassNames = new ArrayList();
     addClassName(treeMap, startClazz, allClassNames);
-    int i=0;
-    while (i<allClassNames.size()) {
+    int i = 0;
+    while (i < allClassNames.size()) {
       String clazz = (String) allClassNames.get(i++);
       addClassName(treeMap, clazz, allClassNames);
     }
@@ -530,7 +534,7 @@ public class IdentifierIndexManager {
     String line;
     PHPIdentifierLocation ident;
     List list = getLocations(clazz);
-    if (list==null) {
+    if (list == null) {
       return false;
     }
     boolean result = false;
@@ -547,7 +551,7 @@ public class IdentifierIndexManager {
 
   /**
    * Adds a line of the index file for function, class, class-method and class-variable names
-   * 
+   *
    * @param line
    */
   public void addLine(TreeMap treeMap, HashMap fileMap, String line, List allClassNames) {
@@ -698,7 +702,7 @@ public class IdentifierIndexManager {
 
   /**
    * Change the information for a given IFile resource
-   *  
+   *
    */
   public void changeFile(IFile fileToParse) {
     removeFile(fileToParse);
@@ -707,17 +711,21 @@ public class IdentifierIndexManager {
 
   /**
    * Get a list of all PHPIdentifierLocation object's associated with an identifier
-   * 
+   *
    * @param identifier
    * @return
    */
   public List getLocations(String identifier) {
-    return (List) fIndentifierMap.get(identifier);
+         List list=(List) fIndentifierMap.get(identifier);
+         if (list!=null) {
+                 return list;
+         }
+         return new ArrayList();
   }
 
   /**
    * Initialize (i.e. clear) the current index information
-   *  
+   *
    */
   public void initialize() {
     fIndentifierMap = new TreeMap(new StringComparator());
@@ -748,7 +756,7 @@ public class IdentifierIndexManager {
 
   /**
    * Remove the information for a given IFile resource
-   *  
+   *
    */
   public void removeFile(IFile fileToParse) {
     //    String line = (String)
@@ -761,7 +769,7 @@ public class IdentifierIndexManager {
 
   /**
    * Removes a line of the index file for function, class, class-method and class-variable names
-   * 
+   *
    * @param line
    */
   private void removeLine(String line) {
@@ -871,7 +879,7 @@ public class IdentifierIndexManager {
 
   /**
    * Save the current index information in the projects index file
-   *  
+   *
    */
   public void writeFile() {
     FileWriter fileWriter;