blob: bcfc32ec76b8a2ada368164183f6beb626fa978b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.uima.pear.insd.edit;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Iterator;
import org.apache.uima.pear.PearException;
import org.apache.uima.pear.PearPlugin;
import org.apache.uima.pear.insd.edit.vars.VarVal;
import org.apache.uima.pear.nature.ProjectCustomizer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.IWorkbench;
import org.apache.uima.pear.tools.InstallationDescriptor;
import org.apache.uima.pear.tools.InstallationDescriptorHandler;
/**
* Wizard to edit the PEAR Installation Descriptor.
*
*
*
*/
public class EditInstallationDescriptorWizard extends Wizard implements IWizard, InsdConstants {
private IProject currentProject;
private InstallationDescriptor insd;
private Hashtable wizardData = new Hashtable();
// WIZARD PAGES
private INSDComponentPage componentPage;
private INSDEnvironmentPage environmentPage;
/**
* Constructor.
*
* @param project
* An IProject with the UIMA Nature
*/
public EditInstallationDescriptorWizard(IProject project) {
super();
try {
setWindowTitle("Edit PEAR Installation Descriptor");
setDefaultPageImageDescriptor(PearPlugin.getImageDescriptor("editInsdWiz.gif"));
setNeedsProgressMonitor(true);
currentProject = project;
} catch (Throwable e) {
PearException subEx = new PearException(
"Operation failed because the wizard could not be initialized.\nPlease report this error.",
e);
subEx.openErrorDialog(getShell());
this.dispose();
}
try {
insd = PearInstallationDescriptor.getInstallationDescriptor(currentProject);
} catch (Throwable e) {
e.printStackTrace();
insd = new InstallationDescriptor();
}
try {
ProjectCustomizer.customizeProject(currentProject, insd);
} catch (Throwable e) {
PearException subEx = new PearException(
"Operation failed because the wizard could not customize your project as a UIMA project.",
e);
subEx.openErrorDialog(getShell());
this.dispose();
}
}
/**
* Adds the wizaed pages.
*
* @see org.eclipse.jface.wizard.IWizard#addPages()
*/
public void addPages() {
try {
componentPage = new INSDComponentPage(currentProject, insd, wizardData);
addPage(componentPage);
environmentPage = new INSDEnvironmentPage(currentProject, insd, wizardData);
addPage(environmentPage);
} catch (Throwable e) {
PearException subEx = new PearException(
"Operation failed because the wizard's pages could not be initialized properly.", e);
subEx.openErrorDialog(getShell());
this.dispose();
}
}
/**
* This method is called when 'Finish' button is pressed in the wizard.
*
* @see org.eclipse.jface.wizard.IWizard#performFinish()
*
*/
public boolean performFinish() {
try {
editInstallationDescriptor();
} catch (Throwable e) {
e.printStackTrace();
MessageDialog.openError(getShell(), "Error",
"An error happened while trying to execute the wizard operetions: \n\nDetails:\n "
+ e.getMessage());
}
return true;
}
private void editInstallationDescriptor() throws CoreException, IOException {
handleComponentInformation();
addEnvOptions();
addEnvVars();
PearInstallationDescriptor.saveInstallationDescriptor(currentProject, insd);
}
private void handleComponentInformation() {
insd.setMainComponent(componentPage.compID);
insd
.setMainComponentDesc(PearInstallationDescriptor
.addMacro(componentPage.compDescriptorPath));
}
private void addEnvOptions() {
insd.clearOSSpecs();
insd.clearToolkitsSpecs();
insd.clearFrameworkSpecs();
String os = environmentPage.osCombo.getText();
if (os != null && os.trim().length() > 0)
insd.addOSSpec(InstallationDescriptorHandler.NAME_TAG, os);
String jdkVersion = environmentPage.jdkVersionCombo.getText();
if (jdkVersion != null && jdkVersion.trim().length() > 0)
insd.addToolkitsSpec(InstallationDescriptorHandler.JDK_VERSION_TAG, jdkVersion);
}
private void addEnvVars() {
insd.deleteInstallationActions(InstallationDescriptor.ActionInfo.SET_ENV_VARIABLE_ACT);
Iterator envVarsItr = environmentPage.envVarList.tableRows.iterator();
while (envVarsItr.hasNext()) {
VarVal vv = (VarVal) envVarsItr.next();
String envVarName = vv.getVarName();
String envVarValue = vv.getVarValue();
if (envVarName != null && envVarValue != null && envVarName.trim().length() > 0
&& envVarValue.trim().length() > 0) {
InstallationDescriptor.ActionInfo actionInfo = new InstallationDescriptor.ActionInfo(
InstallationDescriptor.ActionInfo.SET_ENV_VARIABLE_ACT);
actionInfo.params.put("VAR_NAME", envVarName);
actionInfo.params.put("VAR_VALUE", envVarValue);
actionInfo.params.put("COMMENTS", "");
insd.addInstallationAction(actionInfo);
}
}
}
/**
* See IWorkbenchWizard#init(IWorkbench, IStructuredSelection)
*/
public void init(IWorkbench workbench, IStructuredSelection selection) {
// this.workbench = workbench;
// this.selection = selection;
setNeedsProgressMonitor(true);
}
}