/*******************************************************************************
* 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.server.internal.ui.startup;
import org.eclipse.php.internal.server.core.Server;
import org.eclipse.php.internal.server.core.manager.ServersManager;
import org.zend.php.server.core.utils.ServerUtils;
import org.zend.php.server.ui.migration.AbstractMigrationService;
import org.zend.php.server.ui.types.LocalApacheType;
import org.zend.php.server.ui.types.ZendServerType;
import org.zend.php.zendserver.deployment.core.targets.ZendServerManager;
import org.zend.sdklib.manager.TargetsManager;
import org.zend.sdklib.target.IZendTarget;
/**
* {@link AbstractMigrationService} implementation which is responsible for
* migrating old PHP servers which do not have server type defined. It checks
* following types:
* <ul>
* <li>Zend Server</li>
* <li>Local Apache HTTP Server</li>
* </ul>
*
* @author Wojciech Galanciak, 2014
*
*/
@SuppressWarnings("restriction")
public class ServersMigrationStartup extends AbstractMigrationService {
@Override
protected boolean migrate(Server server) {
if (isEmptyServer(server)) {
ServersManager.removeServer(server.getName());
return true;
}
String typeId = getServerType(server);
if (typeId == null) {
if (isZendServer(server)) {
typeId = ZendServerType.ID;
return true;
} else if (isLocalApache(server)) {
typeId = LocalApacheType.ID;
}
if (typeId != null) {
setType(server, typeId);
return true;
}
}
return false;
}
private boolean isLocalApache(Server server) {
// TODO how we can check that?
return false;
}
private boolean isZendServer(Server server) {
IZendTarget target = ServerUtils.getTarget(server);
if (target != null) {
return !TargetsManager.isLocalhost(target);
}
String enabled = server
.getAttribute(ZendServerManager.ZENDSERVER_ENABLED_KEY,
String.valueOf(false));
return Boolean.valueOf(enabled);
}
private boolean isEmptyServer(Server server) {
if (Boolean.valueOf(server.getAttribute(EMPTY_SERVER_ATTRIBUTE, String.valueOf(false)))) {
return true;
}
return false;
}
}