package com.tibco.as.spacebar.ui.wizards.space.field;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import com.tibco.as.space.FieldDef;
import com.tibco.as.space.FieldDef.FieldType;
import com.tibco.as.space.Metaspace;
import com.tibco.as.space.SpaceDef;
import com.tibco.as.spacebar.ui.model.Field;
import com.tibco.as.spacebar.ui.model.Space;
import com.tibco.as.spacebar.ui.model.SpaceFields;
import com.tibco.as.spacebar.ui.wizards.AbstractWizard;
import com.tibco.as.util.Utils;
public class AddFieldWizard extends AbstractWizard implements INewWizard {
private SpaceFields fields;
private Field field;
public AddFieldWizard() {
super("AddField", "Add Field Error", "Could not add field");
setWindowTitle("Add Field");
}
public AddFieldWizard(SpaceFields fields) {
this();
this.fields = fields;
}
@Override
public void addPages() {
field = new Field();
field.setFields(fields);
field.setNullable(true);
field.setType(FieldType.STRING);
addPage(new AddFieldWizardPage(field));
}
@Override
protected void finish(IProgressMonitor monitor) throws Exception {
monitor.beginTask("Adding field", 1);
Space space = fields.getParent();
Metaspace metaspace = space.getParent().getParent().getConnection()
.getMetaspace();
SpaceDef spaceDef = metaspace.getSpaceDef(space.getName());
FieldDef fieldDef = FieldDef.create(field.getName(), field.getType());
if (Utils.hasFieldDefMethod("setEncrypted")) {
fieldDef.setEncrypted(field.isEncrypted());
}
fieldDef.setNullable(field.isNullable());
spaceDef.putFieldDef(fieldDef);
metaspace.alterSpace(spaceDef);
monitor.worked(1);
}
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
Object element = selection.getFirstElement();
if (element instanceof SpaceFields) {
this.fields = (SpaceFields) element;
}
}
}