Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: IBM Corporation - initial API and implementation /
 
 package org.eclipse.jdt.internal.core;
 
 import java.util.Map;
 
 import  org.eclipse.core.resources.*;
 import  org.eclipse.core.runtime.CoreException;
 import  org.eclipse.core.runtime.IPath;
 
 public class DeletePackageFragmentRootOperation extends JavaModelOperation {
 
 
 		int updateResourceFlags,
 		int updateModelFlags) {
 
 		super(root);
 		this. = updateResourceFlags;
 		this. = updateModelFlags;
 	}
 
 	protected void executeOperation() throws JavaModelException {
 
 		IClasspathEntry rootEntry = root.getRawClasspathEntry();
 
 		// remember olds roots
 		DeltaProcessor deltaProcessor = JavaModelManager.getJavaModelManager().getDeltaProcessor();
 		if (deltaProcessor.oldRoots == null)
 			deltaProcessor.oldRoots = new HashMap();
 
 		// update classpath if needed
 			updateProjectClasspath(rootEntry.getPath(), root.getJavaProject(), deltaProcessor.oldRoots);
 		}
 			updateReferringProjectClasspaths(rootEntry.getPath(), root.getJavaProject(), deltaProcessor.oldRoots);
 		}
 
 		// delete resource
 			deleteResource(rootrootEntry);
 		}
 	}
 
 	protected void deleteResource(
 		IClasspathEntry rootEntry)
 		throws JavaModelException {
 		final char[][] exclusionPatterns = ((ClasspathEntry)rootEntry).fullExclusionPatternChars();
 		IResource rootResource = ((JavaElementroot).resource();
 		if (rootEntry.getEntryKind() != . || exclusionPatterns == null) {
 			try {
 				rootResource.delete(this.this.);
 			} catch (CoreException e) {
 				throw new JavaModelException(e);
 			}
 		} else {
 			final IPath[] nestedFolders = getNestedFolders(root);
 			IResourceProxyVisitor visitor = new IResourceProxyVisitor() {
 				public boolean visit(IResourceProxy proxythrows CoreException {
 					if (proxy.getType() == IResource.FOLDER) {
 						IPath path = proxy.requestFullPath();
 						if (prefixesOneOf(pathnestedFolders)) {
 							// equals if nested source folder
 							return !equalsOneOf(pathnestedFolders);
 						} else {
 							// subtree doesn't contain any nested source folders
 							return false;
 						}
 					} else {
 						return false;
 					}
 				}
 			};
 			try {
 				rootResource.accept(visitor, IResource.NONE);
 			} catch (CoreException e) {
 				throw new JavaModelException(e);
 			}
 		}
 		setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
 	}
	/*
	 * Deletes the classpath entries equals to the given rootPath from all Java projects.
	 */
	protected void updateReferringProjectClasspaths(IPath rootPathIJavaProject projectOfRootMap oldRootsthrows JavaModelException {
		IJavaProject[] projects = model.getJavaProjects();
		for (int i = 0, length = projects.lengthi < lengthi++) {
			IJavaProject project = projects[i];
			if (project.equals(projectOfRoot)) continue;
			updateProjectClasspath(rootPathprojectoldRoots);
		}
	}
	/*
	 * Deletes the classpath entries equals to the given rootPath from the given project.
	 */
	protected void updateProjectClasspath(IPath rootPathIJavaProject projectMap oldRootsthrows JavaModelException {
		// remember old roots
		oldRoots.put(projectproject.getPackageFragmentRoots());
		IClasspathEntry[] classpath = project.getRawClasspath();
		IClasspathEntry[] newClasspath = null;
		int cpLength = classpath.length;
		int newCPIndex = -1;
		for (int j = 0; j < cpLengthj++) {
			IClasspathEntry entry = classpath[j];
			if (rootPath.equals(entry.getPath())) {
				if (newClasspath == null) {
					newClasspath = new IClasspathEntry[cpLength-1];
					System.arraycopy(classpath, 0, newClasspath, 0, j);
					newCPIndex = j;
				}
else if (newClasspath != null) {
				newClasspath[newCPIndex++] = entry;
			}
		}
		if (newClasspath != null) {
			if (newCPIndex < newClasspath.length) {
				System.arraycopy(newClasspath, 0, newClasspath = new IClasspathEntry[newCPIndex], 0, newCPIndex);
			}
			project.setRawClasspath(newClasspaththis.);
		}
	}
	protected IJavaModelStatus verify() {
		IJavaModelStatus status = super.verify();
		if (!status.isOK()) {
			return status;
		}
		if (root == null || !root.exists()) {
		}
		IResource resource = ((JavaElementroot).resource();
		if (resource instanceof IFolder) {
			if (resource.isLinked()) {
			}
		}
	}
New to GrepCode? Check out our FAQ X