package org.objectstyle.wolips.jdt.classpath.model; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.launching.IRuntimeClasspathEntry; import org.objectstyle.woenvironment.frameworks.Dependency; import org.objectstyle.wolips.core.resources.types.project.ProjectAdapter; import org.objectstyle.wolips.variables.ProjectVariables; import org.objectstyle.wolips.variables.VariablesPlugin; public class EclipseDependency extends Dependency { private IProject _project; private IRuntimeClasspathEntry _classpathEntry; private ProjectVariables _variables; public EclipseDependency(IProject project, IRuntimeClasspathEntry classpathEntry) { _project = project; _variables = VariablesPlugin.getDefault().getProjectVariables(project); _classpathEntry = classpathEntry; } @Override public String getRawPath() { return _classpathEntry.getPath().toString(); } public IRuntimeClasspathEntry getClasspathEntry() { return _classpathEntry; } public boolean isProject() { return IRuntimeClasspathEntry.PROJECT == _classpathEntry.getType(); } public boolean isWOProject() { return getWOJavaArchive() != null; } public String getProjectFrameworkName() { IProject project = (IProject) _classpathEntry.getResource(); ProjectAdapter projectAdaptor = (ProjectAdapter)project.getAdapter(ProjectAdapter.class); String frameworkName = null; if (projectAdaptor != null) { frameworkName = projectAdaptor.getBuildProperties().getName() + ".framework"; } if (frameworkName == null) { frameworkName = project.getName() + ".framework"; } return frameworkName; } @Override public String getLocation() { return _classpathEntry.getLocation(); } @Override public String getSystemRoot() { IPath systemRoot = _variables.getSystemRoot(); if (systemRoot == null) { throw new IllegalArgumentException("You do not have a 'wo.system.root' property set in your wolips.properties file."); } return systemRoot.toString(); } public IPath getWOJavaArchive() { try { IPath woJavaArchivePath = null; if (isProject()) { IProject project = (IProject) _classpathEntry.getResource(); ProjectAdapter projectAdapter = (ProjectAdapter) project.getAdapter(ProjectAdapter.class); if (projectAdapter != null) { woJavaArchivePath = projectAdapter.getWOJavaArchive(); } else { woJavaArchivePath = null; } } return woJavaArchivePath; } catch (CoreException e) { throw new RuntimeException("Failed to retrieve WO project metadata.", e); } } public String toString() { return "[EclipseDependency: project = " + _project + "]"; } }