Package org.bndtools.builder.jobs.newproject

Source Code of org.bndtools.builder.jobs.newproject.AdjustClasspathsForNewProjectJob

package org.bndtools.builder.jobs.newproject;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import org.bndtools.api.ILogger;
import org.bndtools.api.Logger;
import org.bndtools.builder.classpath.BndContainerInitializer;
import org.bndtools.utils.workspace.WorkspaceUtils;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.resources.WorkspaceJob;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubMonitor;

import aQute.bnd.build.Project;
import bndtools.central.Central;

class AdjustClasspathsForNewProjectJob extends WorkspaceJob {
    private static final ILogger logger = Logger.getLogger(AdjustClasspathsForNewProjectJob.class);

    private final IProject addedProject;

    AdjustClasspathsForNewProjectJob(IProject addedProject) {
        super("Adjusting classpaths for new project: " + addedProject.getName());
        this.addedProject = addedProject;
    }

    @Override
    public IStatus runInWorkspace(IProgressMonitor monitor) {
        List<Project> projects;
        SubMonitor progress;
        try {
            projects = new ArrayList<Project>(Central.getWorkspace().getAllProjects());
            progress = SubMonitor.convert(monitor, projects.size());
        } catch (Exception e) {
            return Status.CANCEL_STATUS;
        }

        IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot();
        while (!projects.isEmpty()) {
            Project project = projects.remove(0);
            IProject eclipseProject = WorkspaceUtils.findOpenProject(wsroot, project);
            if (eclipseProject != null && !eclipseProject.equals(addedProject)) {
                List<String> errors = new LinkedList<String>();
                try {
                    project.propertiesChanged();
                    BndContainerInitializer.resetClasspaths(project, eclipseProject, errors);
                    BndContainerInitializer.replaceClasspathProblemMarkers(eclipseProject, errors);
                } catch (CoreException e) {
                    logger.logStatus(e.getStatus());
                    return Status.CANCEL_STATUS;
                }
                progress.worked(1);
            }
            if (progress.isCanceled())
                return Status.CANCEL_STATUS;
        }
        return Status.OK_STATUS;
    }

}
TOP

Related Classes of org.bndtools.builder.jobs.newproject.AdjustClasspathsForNewProjectJob

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.