use of org.springsource.ide.eclipse.commons.configurator.ServerHandler in project eclipse-integration-commons by spring-projects.
the class ServerConfigurator method installServer.
public ServerHandler installServer(final ServerDescriptor descriptor, File installLocation, IOverwriteQuery query, IProgressMonitor monitor) throws CoreException {
try {
SubMonitor progress = SubMonitor.convert(monitor);
progress.beginTask(NLS.bind("Installing Runtime {0}", descriptor.getRuntimeName()), 100);
File serverLocation = getLocation(descriptor);
if (serverLocation == null) {
final boolean[] response = new boolean[1];
Display.getDefault().syncExec(new Runnable() {
public void run() {
response[0] = MessageDialog.openQuestion(UiUtil.getShell(), "Install Runtime", NLS.bind("No local installation of {0} found. Proceed with download?", descriptor.getServerName()));
}
});
if (!response[0]) {
throw new OperationCanceledException();
}
InstallableRuntime2 ir = new ServerDescriptorInstaller(descriptor);
// prompt license if necessary
if (ir.getLicenseURL() != null) {
progress.subTask("Downloading license");
try {
final boolean[] result = new boolean[1];
final String license = ir.getLicense(progress.newChild(20));
Display.getDefault().syncExec(new Runnable() {
public void run() {
TaskModel taskModel = new TaskModel();
taskModel.putObject(LicenseWizardFragment.LICENSE, license);
TaskWizard wizard2 = new TaskWizard("License", new WizardFragment() {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
protected void createChildFragments(List list) {
list.add(new LicenseWizardFragment());
}
}, taskModel);
WizardDialog dialog2 = new WizardDialog(UiUtil.getShell(), wizard2);
result[0] = (dialog2.open() == Window.OK);
}
});
if (!result[0]) {
// user did not agree to license
throw new OperationCanceledException();
}
} catch (CoreException e) {
StatusHandler.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Error getting license", e));
}
}
progress.setWorkRemaining(80);
// schedule download job
serverLocation = new File(installLocation, descriptor.getInstallPath());
monitor.subTask(NLS.bind("Downloading runtime to {0}", serverLocation.getAbsolutePath()));
File archiveFile = File.createTempFile("runtime", null);
archiveFile.deleteOnExit();
HttpUtil.download(descriptor.getArchiveUrl(), archiveFile, serverLocation, descriptor.getArchivePath(), progress.newChild(70));
// Path path = new Path(location.getAbsolutePath());
// ir.install(path, new SubProgressMonitor(monitor, 70));
}
// create wtp runtime
progress.setWorkRemaining(10);
monitor.subTask(NLS.bind("Creating server {0}", descriptor.getServerName()));
ServerHandler serverHandler = new ServerHandler(descriptor, serverLocation);
serverHandler.createServer(progress.newChild(10), query, descriptor.getCallback());
return serverHandler;
} catch (IOException e) {
throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Installing runtime failed", e));
} finally {
monitor.done();
}
}
Aggregations