/*******************************************************************************
* Copyright (c) 2000, 2015 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.help.internal.standalone;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.PasswordAuthentication;
import java.util.List;
import org.eclipse.help.internal.base.*;
/**
* This program is used to start or stop Eclipse Infocenter application.
*/
public class StandaloneInfocenter extends EclipseController {
// ID of the application to run
private static final String INFOCENTER_APPLICATION_ID = HelpBasePlugin.PLUGIN_ID
+ ".infocenterApplication"; //$NON-NLS-1$
/**
* Constructs help system
*
* @param args
* array of String options and their values Option
* <code>-eclipseHome dir</code> specifies Eclipse installation
* directory. It must be provided, when current directory is not
* the same as Eclipse installation directory. Additionally, most
* options accepted by Eclipse execuable are supported.
*/
public StandaloneInfocenter(String[] args) {
super(INFOCENTER_APPLICATION_ID, args);
}
/**
* @see org.eclipse.help.standalone.Infocenter#main(String[])
*/
public static void main(String[] args) {
try {
StandaloneInfocenter infocenter = new StandaloneInfocenter(args);
List<String> helpCommand = Options.getHelpCommand();
final String adminId = Options.getAdminId();
final String adminPassword = Options.getAdminPassword();
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(adminId, adminPassword.toCharArray());
}
});
HttpURLConnection.setFollowRedirects(true);
if (infocenter.executeCommand(helpCommand)) {
return;
}
printMainUsage();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @return true if commands contained a known command and it was executed
*/
private boolean executeCommand(List<String> helpCommand) throws Exception {
if (helpCommand.size() <= 0) {
return false;
}
String command = helpCommand.get(0);
if ("start".equalsIgnoreCase(command)) { //$NON-NLS-1$
start();
return true;
} else if ("shutdown".equalsIgnoreCase(command)) { //$NON-NLS-1$
shutdown();
return true;
} else if (CMD_INSTALL.equalsIgnoreCase(command)
|| CMD_ENABLE.equalsIgnoreCase(command)
|| CMD_DISABLE.equalsIgnoreCase(command)
|| CMD_UNINSTALL.equalsIgnoreCase(command)
|| CMD_UPDATE.equalsIgnoreCase(command)
|| CMD_SEARCH.equalsIgnoreCase(command)
|| CMD_LIST.equalsIgnoreCase(command)
|| CMD_ADDSITE.equalsIgnoreCase(command)
|| CMD_REMOVESITE.equalsIgnoreCase(command)
|| CMD_APPLY.equalsIgnoreCase(command)) {
return executeUpdateCommand(command);
}
return false;
}
/**
* Prints usage of this class as a program.
*/
private static void printMainUsage() {
System.out.println("Parameters syntax:"); //$NON-NLS-1$
System.out.println();
System.out
.println("-command start | shutdown | [update command [update parameters]] [-eclipsehome eclipseInstallPath] [-host helpServerHost] [-port helpServerPort] [-adminId administratorUserId] [-adminPassword administratorPassword] [-trustStoreLocation trustStoreLocation] [-trustStorePassword trustStorePassword][-noexec] [platform options] [-vmargs [Java VM arguments]]"); //$NON-NLS-1$
System.out.println();
System.out.println("where:"); //$NON-NLS-1$
System.out
.println(" eclipseInstallPath specifies Eclipse installation directory; this directory is a parent to \"plugins\" directory and eclipse executable; the option must be provided, when current directory from which information center is launched, is not the same as Eclipse installation directory,"); //$NON-NLS-1$
System.out
.println(" helpServerHost specifies host name of the interface that help server will use,"); //$NON-NLS-1$
System.out
.println(" helpServerPort specifies port number that help server will use,"); //$NON-NLS-1$
System.out
.println(" administratorUserId specifies the administrator user id to use when secure access is enabled"); //$NON-NLS-1$
System.out
.println(" administratorPassword specifies the administrator password to use when secure access is enabled"); //$NON-NLS-1$
System.out
.println(" trustStoreLocation specifies the location of the truststore file to use when secure access is enabled"); //$NON-NLS-1$
System.out
.println(" trustStorePassword specifies the password of the truststore file when secure access is enabled"); //$NON-NLS-1$
System.out
.println(" noexec option indicates that Eclipse executable should not be used, "); //$NON-NLS-1$
System.out
.println(" platform options are other options that are supported by Eclipse Executable,"); //$NON-NLS-1$
System.out
.println(" update command is one of install, update, enable, disable, uninstall, search, listFeatures, addSite, removeSite, or apply,"); //$NON-NLS-1$
System.out
.println(" update parameters are -featureId, -version, -from, -to, -verifyOnly as required by update commands used."); //$NON-NLS-1$
}
}