package com.tibco.as.spacebar.ui.wizards.space.index; import java.util.List; 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.spacebar.ui.model.Field; import com.tibco.as.spacebar.ui.model.Index; import com.tibco.as.spacebar.ui.model.Indexes; import com.tibco.as.spacebar.ui.model.Space; import com.tibco.as.spacebar.ui.wizards.AbstractWizard; import com.tibco.as.space.IndexDef; import com.tibco.as.space.IndexDef.IndexType; import com.tibco.as.space.Metaspace; import com.tibco.as.space.SpaceDef; public class AddIndexWizard extends AbstractWizard implements INewWizard { private Indexes indexes; private Index index; public AddIndexWizard() { super("AddIndex", "Add Index Error", "Could not add index"); setWindowTitle("Add Index"); } public AddIndexWizard(Indexes indexes) { this(); this.indexes = indexes; } @Override public void addPages() { index = new Index(); index.setIndexes(indexes); index.setType(IndexType.HASH); addPage(new EditIndexWizardPage(null, index)); } @Override protected void finish(IProgressMonitor monitor) throws Exception { monitor.beginTask("Adding index", 1); Space space = indexes.getParent(); Metaspace metaspace = space.getParent().getParent().getConnection() .getMetaspace(); SpaceDef spaceDef = metaspace.getSpaceDef(space.getName()); IndexDef indexDef = IndexDef.create(index.getName()); indexDef.setIndexType(index.getType()); List<Field> fields = index.getChildren(); String[] fieldNames = new String[fields.size()]; for (int index = 0; index < fields.size(); index++) { fieldNames[index] = fields.get(index).getName(); } indexDef.setFieldNames(fieldNames); spaceDef.addIndexDef(indexDef); metaspace.alterSpace(spaceDef); monitor.worked(1); } @Override public void init(IWorkbench workbench, IStructuredSelection selection) { Object element = selection.getFirstElement(); if (element instanceof Indexes) { this.indexes = (Indexes) element; } } }