Parser detects wrong include files now
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / core / builder / IncrementalImageBuilder.java
index 91e2b85..5765f22 100644 (file)
  *******************************************************************************/
 package net.sourceforge.phpdt.internal.core.builder;
 import java.util.ArrayList;
-import net.sourceforge.phpdt.core.compiler.CharOperation;
+
 import net.sourceforge.phpdt.core.compiler.IProblem;
 import net.sourceforge.phpdt.internal.compiler.CompilationResult;
-import net.sourceforge.phpdt.internal.core.Util;
 import net.sourceforge.phpdt.internal.core.util.SimpleLookupTable;
-import net.sourceforge.phpdt.internal.ui.util.PHPFileUtil;
-import net.sourceforge.phpeclipse.PHPeclipsePlugin;
-import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
-import org.eclipse.core.resources.IContainer;
+import net.sourceforge.phpdt.internal.core.util.Util;
+
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IMarker;
@@ -70,52 +67,55 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
       notifier.subTask(Util.bind("build.analyzingDeltas")); //$NON-NLS-1$
       IResourceDelta sourceDelta = (IResourceDelta) deltas
           .get(javaBuilder.currentProject);
-      if (sourceDelta != null)
+      if (sourceDelta != null) {
+        sourceDelta.accept(new ParserVisitor(javaBuilder.currentProject, notifier.monitor));
+        
         if (!findSourceFiles(sourceDelta))
           return false;
-      notifier.updateProgressDelta(0.10f);
-      Object[] keyTable = deltas.keyTable;
-      Object[] valueTable = deltas.valueTable;
-      final IdentifierIndexManager indexManager = PHPeclipsePlugin.getDefault()
-          .getIndexManager(javaBuilder.currentProject);
-      for (int i = 0, l = valueTable.length; i < l; i++) {
-        IResourceDelta delta = (IResourceDelta) valueTable[i];
-        if (delta != null) {
-          IResource resource = delta.getResource();
-          int resourceType = resource.getType();
-          if (resourceType == IResource.FILE) {
-            switch (delta.getKind()) {
-              case IResourceDelta.ADDED :
-                if ((resource.getFileExtension() != null)
-                    && PHPFileUtil.isPHPFile((IFile) resource)) {
-                  // update indexfile for the project:
-                  indexManager.addFile((IFile) resource);
-                }
-                break;
-              case IResourceDelta.CHANGED :
-                if ((resource.getFileExtension() != null)
-                    && PHPFileUtil.isPHPFile((IFile) resource)) {
-                  // update indexfile for the project:
-                  indexManager.changeFile((IFile) resource);
-                }
-                break;
-              case IResourceDelta.REMOVED :
-                if ((resource.getFileExtension() != null)
-                    && PHPFileUtil.isPHPFile((IFile) resource)) {
-                  // update indexfile for the project:
-                  indexManager.removeFile((IFile) resource);
-                }
-                break;
-            }
-          }
-          //                           ClasspathLocation[] classFoldersAndJars = (ClasspathLocation[])
-          // javaBuilder.binaryLocationsPerProject.get(keyTable[i]);
-          //                           if (classFoldersAndJars != null)
-          //                                   if (!findAffectedSourceFiles(delta, classFoldersAndJars)) return
-          // false;
-        }
       }
       notifier.updateProgressDelta(0.10f);
+//      Object[] keyTable = deltas.keyTable;
+//      Object[] valueTable = deltas.valueTable;
+////      final IdentifierIndexManager indexManager = PHPeclipsePlugin.getDefault()
+////          .getIndexManager(javaBuilder.currentProject);
+//      for (int i = 0, l = valueTable.length; i < l; i++) {
+//        IResourceDelta delta = (IResourceDelta) valueTable[i];
+//        if (delta != null) {
+//          IResource resource = delta.getResource();
+//          int resourceType = resource.getType();
+//          if (resourceType == IResource.FILE) {
+//            switch (delta.getKind()) {
+//              case IResourceDelta.ADDED :
+//                if ((resource.getFileExtension() != null)
+//                    && PHPFileUtil.isPHPFile((IFile) resource)) {
+//                  // update indexfile for the project:
+////                  indexManager.addFile((IFile) resource);
+//                }
+//                break;
+//              case IResourceDelta.CHANGED :
+//                if ((resource.getFileExtension() != null)
+//                    && PHPFileUtil.isPHPFile((IFile) resource)) {
+//                  // update indexfile for the project:
+////                  indexManager.changeFile((IFile) resource);
+//                }
+//                break;
+//              case IResourceDelta.REMOVED :
+//                if ((resource.getFileExtension() != null)
+//                    && PHPFileUtil.isPHPFile((IFile) resource)) {
+//                  // update indexfile for the project:
+////                  indexManager.removeFile((IFile) resource);
+//                }
+//                break;
+//            }
+//          }
+//          //                         ClasspathLocation[] classFoldersAndJars = (ClasspathLocation[])
+//          // javaBuilder.binaryLocationsPerProject.get(keyTable[i]);
+//          //                         if (classFoldersAndJars != null)
+//          //                                 if (!findAffectedSourceFiles(delta, classFoldersAndJars)) return
+//          // false;
+//        }
+//      }
+      notifier.updateProgressDelta(0.10f);
       notifier.subTask(Util.bind("build.analyzingSources")); //$NON-NLS-1$
       addAffectedSourceFiles();
       notifier.updateProgressDelta(0.05f);
@@ -187,7 +187,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
 //                  sourceFileFullPath)) {
 //                md = sourceLocations[j];
 //                if (md.exclusionPatterns == null
-//                    || !Util.isExcluded(file, md.exclusionPatterns))
+//                    || !ProjectPrefUtil.isExcluded(file, md.exclusionPatterns))
 //                  break;
 //              }
 //            }
@@ -322,7 +322,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
         }
         return;
       case IResource.FILE :
-    //                 if (Util.isClassFileName(resource.getName())) {
+    //                 if (ProjectPrefUtil.isClassFileName(resource.getName())) {
     //                         IPath typePath =
     // resource.getFullPath().removeFirstSegments(segmentCount).removeFileExtension();
     //                         switch (binaryDelta.getKind()) {
@@ -391,7 +391,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
           case IResourceDelta.ADDED :
             IPath addedPackagePath = resource.getFullPath()
                 .removeFirstSegments(segmentCount);
-            createFolder(addedPackagePath, md.binaryFolder); // ensure package
+           // createFolder(addedPackagePath, md.binaryFolder); // ensure package
             // exists in the
             // output folder
             // add dependents even when the package thinks it exists to be on
@@ -414,7 +414,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
                     removedPackagePath).exists()) {
                   // only a package fragment was removed, same as removing
                   // multiple source files
-                  createFolder(removedPackagePath, md.binaryFolder); // ensure
+//                  createFolder(removedPackagePath, md.binaryFolder); // ensure
                   // package
                   // exists
                   // in the
@@ -425,13 +425,13 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
                   for (int j = 0, m = removedChildren.length; j < m; j++)
                     findSourceFiles(removedChildren[j], md, segmentCount);
                   return;
-                }
+                } 
               }
             }
-            IFolder removedPackageFolder = md.binaryFolder
-                .getFolder(removedPackagePath);
-            if (removedPackageFolder.exists())
-              removedPackageFolder.delete(IResource.FORCE, null);
+//            IFolder removedPackageFolder = md.binaryFolder
+//                .getFolder(removedPackagePath);
+//            if (removedPackageFolder.exists())
+//              removedPackageFolder.delete(IResource.FORCE, null);
             // add dependents even when the package thinks it does not exist to
             // be on the safe side
             if (PHPBuilder.DEBUG)
@@ -442,7 +442,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
         return;
       case IResource.FILE :
         String resourceName = resource.getName();
-        if (Util.isJavaFileName(resourceName)) {
+        if (net.sourceforge.phpdt.internal.compiler.util.Util.isJavaFileName(resourceName)) {
           IPath typePath = resource.getFullPath().removeFirstSegments(
               segmentCount).removeFileExtension();
           String typeLocator = resource.getProjectRelativePath().toString();
@@ -511,7 +511,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
               sourceFiles.add(new SourceFile((IFile) resource, md, encoding));
           }
           return;
-          //                   } else if (Util.isClassFileName(resourceName)) {
+          //                   } else if (ProjectPrefUtil.isClassFileName(resourceName)) {
           //                           return; // skip class files
         } else if (md.hasIndependentOutputFolder) {
           if (javaBuilder.filterExtraResource(resource))
@@ -519,52 +519,52 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
           // copy all other resource deltas to the output folder
           IPath resourcePath = resource.getFullPath().removeFirstSegments(
               segmentCount);
-          IResource outputFile = md.binaryFolder.getFile(resourcePath);
+//          IResource outputFile = md.binaryFolder.getFile(resourcePath);
           switch (sourceDelta.getKind()) {
             case IResourceDelta.ADDED :
-              if (outputFile.exists()) {
-                if (PHPBuilder.DEBUG)
-                  System.out.println("Deleting existing file " + resourcePath); //$NON-NLS-1$
-                outputFile.delete(IResource.FORCE, null);
-              }
+//              if (outputFile.exists()) {
+//                if (PHPBuilder.DEBUG)
+//                  System.out.println("Deleting existing file " + resourcePath); //$NON-NLS-1$
+//                outputFile.delete(IResource.FORCE, null);
+//              }
               if (PHPBuilder.DEBUG)
                 System.out.println("Copying added file " + resourcePath); //$NON-NLS-1$
-              createFolder(resourcePath.removeLastSegments(1), md.binaryFolder); // ensure
+//              createFolder(resourcePath.removeLastSegments(1), md.binaryFolder); // ensure
               // package
               // exists
               // in
               // the
               // output
               // folder
-              resource.copy(outputFile.getFullPath(), IResource.FORCE, null);
-              outputFile.setDerived(true);
+//              resource.copy(outputFile.getFullPath(), IResource.FORCE, null);
+//              outputFile.setDerived(true);
               return;
             case IResourceDelta.REMOVED :
-              if (outputFile.exists()) {
-                if (PHPBuilder.DEBUG)
-                  System.out.println("Deleting removed file " + resourcePath); //$NON-NLS-1$
-                outputFile.delete(IResource.FORCE, null);
-              }
+//              if (outputFile.exists()) {
+//                if (PHPBuilder.DEBUG)
+//                  System.out.println("Deleting removed file " + resourcePath); //$NON-NLS-1$
+//                outputFile.delete(IResource.FORCE, null);
+//              }
               return;
             case IResourceDelta.CHANGED :
               if ((sourceDelta.getFlags() & IResourceDelta.CONTENT) == 0)
                 return; // skip it since it really isn't changed
-              if (outputFile.exists()) {
-                if (PHPBuilder.DEBUG)
-                  System.out.println("Deleting existing file " + resourcePath); //$NON-NLS-1$
-                outputFile.delete(IResource.FORCE, null);
-              }
+//              if (outputFile.exists()) {
+//                if (PHPBuilder.DEBUG)
+//                  System.out.println("Deleting existing file " + resourcePath); //$NON-NLS-1$
+//                outputFile.delete(IResource.FORCE, null);
+//              }
               if (PHPBuilder.DEBUG)
                 System.out.println("Copying changed file " + resourcePath); //$NON-NLS-1$
-              createFolder(resourcePath.removeLastSegments(1), md.binaryFolder); // ensure
+            //  createFolder(resourcePath.removeLastSegments(1), md.binaryFolder); // ensure
               // package
               // exists
               // in
               // the
               // output
               // folder
-              resource.copy(outputFile.getFullPath(), IResource.FORCE, null);
-              outputFile.setDerived(true);
+//              resource.copy(outputFile.getFullPath(), IResource.FORCE, null);
+//              outputFile.setDerived(true);
           }
           return;
         }
@@ -697,7 +697,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
   //protected boolean writeClassFileCheck(IFile file, String fileName, byte[]
   // newBytes) throws CoreException {
   //   try {
-  //           byte[] oldBytes = Util.getResourceContentsAsByteArray(file);
+  //           byte[] oldBytes = ProjectPrefUtil.getResourceContentsAsByteArray(file);
   //           if (this.compileLoop > 1) { // only optimize files which were recompiled
   // during the dependent pass, see 33990
   //                   notEqual : if (newBytes.length == oldBytes.length) {