package org.bndtools.utils.workspace;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.runtime.IPath;

import aQute.bnd.build.Project;
import aQute.bnd.build.Workspace;

public class WorkspaceUtils {

    public static IProject findOpenProject(IWorkspaceRoot wsroot, Project model) {
        return findOpenProject(wsroot, model.getName());
    }

    public static IProject findOpenProject(IWorkspaceRoot wsroot, String name) {
        IProject project = wsroot.getProject(name);
        if (checkProject(project, name)) {
            return project;
        }
        for (IProject p : wsroot.getProjects()) {
            if (checkProject(p, name)) {
                return p;
            }
        }
        return null;
    }

    public static IProject findCnfProject(IWorkspaceRoot wsroot, Workspace ws) throws Exception {
        return findOpenProject(wsroot, ws.getBuildDir()
            .getName());
    }

    private static boolean checkProject(IProject project, String name) {
        if ((project != null) && project.isOpen()) {
            IPath path = project.getLocation();
            if ((path != null) && name.equals(path.lastSegment())) {
                return true;
            }
        }
        return false;
    }
}
