/*******************************************************************************
* Copyright (c) 2017 Alex Xu and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Alex Xu - initial API and implementation
*******************************************************************************/
package org.eclipse.php.internal.server.core.builtin;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.php.core.PHPToolkitUtil;
import org.eclipse.php.core.PHPVersion;
import org.eclipse.php.core.project.ProjectOptions;
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.model.ModuleDelegate;
import org.eclipse.wst.server.core.util.ProjectModuleFactoryDelegate;
public class PHPProjectModuleFactory extends ProjectModuleFactoryDelegate {
private static final IModule[] EMPTY_MODULE = new IModule[0];
@Override
public ModuleDelegate getModuleDelegate(IModule module) {
return new PHPProjectModule(module.getProject());
}
@Override
protected IModule[] createModules(IProject project) {
try {
if (!PHPToolkitUtil.isPHPProject(project)) {
return EMPTY_MODULE;
}
} catch (CoreException e) {
return EMPTY_MODULE;
}
PHPVersion phpVersion = ProjectOptions.getPHPVersion(project);
String moduleVersion = getModuleVersion(phpVersion);
if (moduleVersion == null) {
return EMPTY_MODULE;
}
String id = project.getName();
String name = project.getName();
IModule module = createModule(id, name, PHPProjectModule.PHP_MODULE_TYPE_ID, moduleVersion, project);
return new IModule[] { module };
}
private String getModuleVersion(PHPVersion phpVersion) {
switch (phpVersion) {
case PHP5:
return "5.0"; //$NON-NLS-1$
case PHP5_3:
return "5.3"; //$NON-NLS-1$
case PHP5_4:
return "5.4"; //$NON-NLS-1$
case PHP5_5:
return "5.5"; //$NON-NLS-1$
case PHP5_6:
return "5.6"; //$NON-NLS-1$
case PHP7_0:
return "7.0"; //$NON-NLS-1$
case PHP7_1:
return "7.1"; //$NON-NLS-1$
default:
return null;
}
}
@Override
protected IPath[] getListenerPaths() {
return new IPath[] { Path.EMPTY };
}
}