package com.dubture.composer.core.facet;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.php.internal.core.PHPVersion;
import org.eclipse.php.internal.core.facet.PHPFacets;
import org.eclipse.php.internal.core.facet.PHPFacetsConstants;
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
import org.eclipse.wst.common.project.facet.core.IProjectFacet;
import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
import com.dubture.composer.core.log.Logger;
@SuppressWarnings("restriction")
public class FacetManager {
public static IFacetedProject installFacets(IProject project, PHPVersion version, IProgressMonitor monitor) {
try {
if (monitor == null) {
monitor = new NullProgressMonitor();
}
final IFacetedProject facetedProject = ProjectFacetsManager.create(project, true, monitor);
if (facetedProject == null) {
Logger.log(Logger.ERROR, "Unable to create faceted composer project.");
return null;
}
IProjectFacet coreFacet = ProjectFacetsManager.getProjectFacet(PHPFacetsConstants.PHP_CORE_COMPONENT);
IProjectFacet composerFacet = ProjectFacetsManager.getProjectFacet(ComposerFacetConstants.COMPOSER_COMPONENT);
// install the fixed facets
if (!facetedProject.hasProjectFacet(coreFacet)) {
facetedProject.installProjectFacet(coreFacet.getDefaultVersion(), null, monitor);
facetedProject.installProjectFacet(PHPFacets.convertToFacetVersion(version), null, monitor);
}
if (!facetedProject.hasProjectFacet(composerFacet)) {
facetedProject.installProjectFacet(composerFacet.getVersion(ComposerFacetConstants.COMPOSER_COMPONENT_VERSION_1), composerFacet, monitor);
}
return facetedProject;
} catch (CoreException ex) {
Logger.logException(ex.getMessage(), ex);
}
return null;
}
public static void uninstallFacets(IProject project, IProgressMonitor monitor) {
try {
if (monitor == null) {
monitor = new NullProgressMonitor();
}
final IFacetedProject facetedProject = ProjectFacetsManager.create(project, true, monitor);
IProjectFacet composerFacet = ProjectFacetsManager.getProjectFacet(ComposerFacetConstants.COMPOSER_COMPONENT);
facetedProject.uninstallProjectFacet(composerFacet.getVersion(ComposerFacetConstants.COMPOSER_COMPONENT_VERSION_1), composerFacet, monitor);
} catch (CoreException ex) {
Logger.logException(ex.getMessage(), ex);
}
}
}