public IResource[] getResourcesToDelete() { List<IResource> resources = new ArrayList<IResource>(dependencyMap.size()); IPath projectPath = project.getLocation(); IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); for (ProjectDependency pd : dependencyMap.keySet()) { if (pd.getDependencyKind() == DependencyKind.Archive) { IPath p = pd.getPath(); if (projectPath.isPrefixOf(p)) { p = p.removeFirstSegments(projectPath.segmentCount() - 1); } IFile f = root.getFile(p); if (f.exists() && project.equals(f.getProject())) { resources.add(f); } } } return resources.toArray(new IResource[0]); }
private void initJobs() { if (identificationJobs == null) { identificationJobs = new HashMap<ProjectDependency, IdentificationJob>(dependencyMap.size()); Table t = dependenciesViewer.getTable(); IFileIdentificationManager fileIdentificationManager = new FileIdentificationManager(); for (final TableItem item : t.getItems()) { final ProjectDependency projectDep = (ProjectDependency) item.getData(); Dependency mavenDep = dependencyMap.get(projectDep); if (mavenDep != null) { // already identified continue; } File jar; try { final IdentificationJob job; if (projectDep.getDependencyKind() == ProjectDependency.DependencyKind.Project) { job = new IdentifyProjectJob( "Search the Maven coordinates for " + projectDep.getPath(), projectDep.getPath()); } else if (projectDep.getDependencyKind() == ProjectDependency.DependencyKind.Archive) { jar = ConversionUtils.getFile(projectDep.getPath()); job = new IdentifyJarJob( "Search the Maven coordinates for " + jar.getAbsolutePath(), fileIdentificationManager, jar); } else { job = new DependencyResolutionJob( "Resolve the Maven dependency for " + projectDep.getPath()); } job.addJobChangeListener( new IJobChangeListener() { @Override public void sleeping(IJobChangeEvent event) { // refreshUI(); } @Override public void scheduled(IJobChangeEvent event) { // refreshUI(); } @Override public void running(IJobChangeEvent event) { refreshUI(); } @Override public void done(IJobChangeEvent event) { Dependency d = job.getDependency(); dependencyMap.put(projectDep, d); if (d != null) { dependencyResolution.put(getKey(d), job.isResolvable()); } refreshUI(); } @Override public void awake(IJobChangeEvent event) { // refreshUI(); } @Override public void aboutToRun(IJobChangeEvent event) { // refreshUI(); } private void refreshUI() { Display.getDefault() .syncExec( new Runnable() { @Override public void run() { refresh(projectDep); } }); } }); identificationJobs.put(projectDep, job); } catch (CoreException e) { e.printStackTrace(); } } } }