/*******************************************************************************
* Copyright (c) 2014 Zend Technologies Ltd.
* 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:
* Zend Technologies Ltd. - initial API and implementation
*******************************************************************************/
package org.zend.php.server.core.utils;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.php.internal.debug.core.IPHPDebugConstants;
import org.eclipse.php.internal.debug.core.preferences.PHPProjectPreferences;
import org.eclipse.php.internal.server.core.Server;
import org.eclipse.php.internal.server.core.manager.ServersManager;
import org.osgi.service.prefs.BackingStoreException;
import org.zend.php.server.internal.core.ServersCore;
import org.zend.php.zendserver.deployment.core.targets.TargetsManagerService;
import org.zend.sdklib.manager.TargetsManager;
import org.zend.sdklib.target.IZendTarget;
/**
* Utility class for PHP Servers.
*
* @author Wojciech Galanciak, 2014
*
*/
@SuppressWarnings("restriction")
public class ServerUtils {
/**
* Setup project properties related to server settings for specified
* project.
*
* @param project
* @param serverName
*/
public static void setupServerSettings(IProject project, String serverName) {
Server server = ServersManager.getServer(serverName);
if (server != null) {
ServersManager.setDefaultServer(project, server);
PHPProjectPreferences
.setDefaultBasePath(project, project.getName());
ProjectScope projectScope = new ProjectScope(project);
IEclipsePreferences node = projectScope
.getNode(IPHPDebugConstants.DEBUG_QUALIFIER);
node.putBoolean(IPHPDebugConstants.DEBUG_PER_PROJECT, true);
try {
node.flush();
} catch (BackingStoreException e) {
ServersCore.logError(e);
}
}
}
/**
* Get target associated with server with specified name.
*
* @param serverName
* server name
* @return {@link IZendTarget} instance which is associated with specified
* server name or <code>null</code> if such target does not exist
*/
public static IZendTarget getTarget(String serverName) {
if (serverName != null) {
TargetsManager manager = TargetsManagerService.INSTANCE
.getTargetManager();
IZendTarget[] targets = manager.getTargets();
for (IZendTarget target : targets) {
if (serverName.equals(target.getServerName())) {
return target;
}
}
}
return null;
}
/**
* Get server associated with specified target.
*
* @param target
* @return {@link Server} instance if there is a server associated with
* specified target; otherwise return <code>null</code>
*/
public static Server getServer(IZendTarget target) {
if (target != null) {
String serverName = target.getServerName();
if (serverName != null) {
return ServersManager.getServer(serverName);
}
}
return null;
}
/**
* Get target associated with specified server.
*
* @param server
* {@link Server} instance
* @return {@link IZendTarget} instance which is associated with specified
* server or <code>null</code> if such target does not exist
*/
public static IZendTarget getTarget(Server server) {
return server != null ? getTarget(server.getName()) : null;
}
/**
* Get target associated with specified project.
*
* @param server
* {@link IProject} instance
* @return {@link IZendTarget} instance which is associated with specified
* project or <code>null</code> if such target does not exist
*/
public static IZendTarget getTarget(IProject project) {
if (project != null) {
Server server = ServersManager.getDefaultServer(project);
return server != null ? getTarget(server.getName()) : null;
}
return null;
}
}