/*
* Copyright 2004 - 2008 Christian Sprajc. All rights reserved.
*
* This file is part of PowerFolder.
*
* PowerFolder is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*
* PowerFolder is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PowerFolder. If not, see <http://www.gnu.org/licenses/>.
*
* $Id: ServerClient.java 6435 2009-01-21 23:35:04Z tot $
*/
package de.dal33t.powerfolder.distribution;
import de.dal33t.powerfolder.ConfigurationEntry;
import de.dal33t.powerfolder.Controller;
import de.dal33t.powerfolder.Member;
import de.dal33t.powerfolder.net.NodeManager;
import de.dal33t.powerfolder.net.RelayFinder;
import de.dal33t.powerfolder.skin.Origin;
import de.dal33t.powerfolder.ui.LookAndFeelSupport;
import de.dal33t.powerfolder.ui.dialog.ConfigurationLoaderDialog;
import de.dal33t.powerfolder.util.ConfigurationLoader;
public class PowerFolderPro extends AbstractDistribution {
public String getName() {
return "PowerFolder Pro";
}
public String getBinaryName() {
return "PowerFolder";
}
public void init(Controller controller) {
super.init(controller);
loadPreConfigFromClasspath(getController(), null);
// #2467: Get server URL from the installer
ConfigurationLoader.loadAndMergeFromInstaller(controller);
boolean prompt = ConfigurationEntry.CONFIG_PROMPT_SERVER_IF_PF_COM
.getValueBoolean(getController());
if (prompt && isPowerFolderServer(controller)
&& controller.isUIEnabled())
{
try {
LookAndFeelSupport
.setLookAndFeel(new Origin().getLookAndFeel());
} catch (Exception e) {
logSevere("Failed to set look and feel", e);
}
// Configuration required
new ConfigurationLoaderDialog(controller).openAndWait();
}
}
public RelayFinder createRelayFinder() {
return new PublicRelayFinder();
}
public boolean allowSkinChange() {
return true;
}
private class PublicRelayFinder implements RelayFinder {
private static final String RELAY_1ST_CHOICE_ID = "WEBSERVICE005";
private static final String RELAY_2ST_CHOICE_ID = "WEBSERVICE006";
public Member findRelay(NodeManager nodeManager) {
Member relay = nodeManager.getNode(RELAY_1ST_CHOICE_ID);
Member server = getController().getOSClient().getServer();
if (relay == null || server.equals(relay)) {
relay = nodeManager.getNode(RELAY_2ST_CHOICE_ID);
}
if (relay == null) {
relay = server;
logFine("Using default server as relay: " + relay);
} else {
logFiner("Using relay: " + relay);
}
return relay;
}
}
}