/*******************************************************************************
* 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
*******************************************************************************/
package org.zend.php.zendserver.deployment.debug.core.config;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
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.zendserver.deployment.core.debugger.IDeploymentHelper;
import org.zend.php.zendserver.deployment.core.targets.TargetsManagerService;
import org.zend.php.zendserver.deployment.core.utils.DeploymentUtils;
import org.zend.php.zendserver.deployment.debug.core.Activator;
import org.zend.php.zendserver.deployment.debug.core.IDeploymentContribution;
import org.zend.sdklib.target.IZendTarget;
/**
* Deployment contribution responsible for updating server setting of deployed
* project.
*
* @author Wojciech Galanciak, 2014
*
*/
@SuppressWarnings("restriction")
public class UpdateServerContribution implements IDeploymentContribution {
public IStatus performAfter(IProgressMonitor monitor,
IDeploymentHelper helper) {
String projectName = helper.getProjectName();
if (projectName != null && !projectName.isEmpty()) {
IProject project = ResourcesPlugin.getWorkspace().getRoot()
.getProject(projectName);
if (project != null) {
IZendTarget target = TargetsManagerService.INSTANCE
.getTargetManager().getTargetById(helper.getTargetId());
if (target != null) {
Server server = DeploymentUtils.findExistingServer(target);
ServersManager.setDefaultServer(project, server);
}
String file = helper.getBaseURL().getFile();
if (file.isEmpty()) {
file = "/"; //$NON-NLS-1$
}
PHPProjectPreferences.setDefaultBasePath(project, file);
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) {
Activator.log(e);
}
}
}
return Status.OK_STATUS;
}
public IStatus performBefore(IProgressMonitor monitor,
IDeploymentHelper helper) {
return Status.OK_STATUS;
}
}