package junit.extensions.eclipse.quick.resources; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import junit.extensions.eclipse.quick.JavaElements; import junit.extensions.eclipse.quick.TestingPair; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.resources.team.IMoveDeleteHook; import org.eclipse.core.resources.team.IResourceTree; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; public class MoveDeleteHookForTestingPair implements IMoveDeleteHook { public MoveDeleteHookForTestingPair() { } public boolean deleteFile(IResourceTree tree, IFile file, int updateFlags, IProgressMonitor monitor) { return false; } public boolean deleteFolder(IResourceTree tree, IFolder folder, int updateFlags, IProgressMonitor monitor) { return false; } public boolean deleteProject(IResourceTree tree, IProject project, int updateFlags, IProgressMonitor monitor) { return false; } public boolean moveFile(IResourceTree tree, IFile source, IFile destination, int updateFlags, IProgressMonitor monitor) { IJavaElement element = JavaCore.create(source); if(element == null) return false; IType sourceType = JavaElements.getPrimaryTypeOf(element); if(sourceType == null) return false; TestingPair pair = new TestingPair(); String[] pairNames = pair.getPairClassNames(sourceType.getFullyQualifiedName()); List<IType> pairTypes; try { pairTypes = findPairTypes(pairNames); if (pairTypes.isEmpty()) { return false; } IJavaElement destElement = JavaCore.create(destination); return true; } catch (JavaModelException e) { return false; } } private List<IType> findPairTypes(String[] pairNames) throws JavaModelException { IJavaProject[] projects = getJavaProjects(); Set<IType> result = new LinkedHashSet<IType>(); for (int i = 0; i < projects.length; ++i) { IJavaProject project = projects[i]; for (int j = 0; j < pairNames.length; ++j) { IType pairType= project.findType(pairNames[j]); if (pairType != null) { result.add(pairType); } } } return new ArrayList<IType>(result); } protected IJavaProject[] getJavaProjects() throws JavaModelException { return JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()).getJavaProjects(); } public boolean moveFolder(IResourceTree tree, IFolder source, IFolder destination, int updateFlags, IProgressMonitor monitor) { return false; } public boolean moveProject(IResourceTree tree, IProject source, IProjectDescription description, int updateFlags, IProgressMonitor monitor) { return false; } }