package rocks.inspectit.ui.rcp.ci.wizard;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.wizard.Wizard;
import rocks.inspectit.shared.all.exception.BusinessException;
import rocks.inspectit.shared.cs.ci.business.expression.AbstractExpression;
import rocks.inspectit.shared.cs.ci.business.expression.impl.BooleanExpression;
import rocks.inspectit.shared.cs.ci.business.impl.ApplicationDefinition;
import rocks.inspectit.shared.cs.ci.business.impl.BusinessTransactionDefinition;
import rocks.inspectit.ui.rcp.InspectIT;
import rocks.inspectit.ui.rcp.ci.view.BusinessContextManagerViewPart;
import rocks.inspectit.ui.rcp.ci.wizard.page.NameDescriptionInsertBeforeWizardPage;
/**
* Wizard for creating new {@link BusinessTransactionDefinition}.
*
* @author Alexander Wert
*
*/
public class CreateBusinessTransactionWizard extends Wizard {
/**
* Wizard title.
*/
private static final String TITLE = "Create New Business Transaction";
/**
* Wizard default message.
*/
private static final String MESSAGE = "Define the information for the new business transaction";
/**
* {@link ApplicationDefinition} the new {@link BusinessTransactionDefinition} shell be added
* to.
*/
private final ApplicationDefinition application;
/**
* The resulting {@link BusinessTransactionDefinition} instance of this wizard.
*/
private BusinessTransactionDefinition newBusinessTransaction;
/**
* {@link NameDescriptionInsertBeforeWizardPage}.
*/
private NameDescriptionInsertBeforeWizardPage newItemWizardPage;
/**
* Default constructor.
*
* @param application
* {@link ApplicationDefinition} the new {@link BusinessTransactionDefinition} shell
* be added to.
*/
public CreateBusinessTransactionWizard(ApplicationDefinition application) {
this.setWindowTitle(TITLE);
this.application = application;
}
/**
* {@inheritDoc}
*/
@Override
public void addPages() {
List<BusinessTransactionDefinition> businessTransactions = application.getBusinessTransactionDefinitions();
String[] items = new String[businessTransactions.size()];
int i = 0;
for (BusinessTransactionDefinition businessTx : businessTransactions) {
items[i] = businessTx.getBusinessTransactionDefinitionName();
i++;
}
newItemWizardPage = new NameDescriptionInsertBeforeWizardPage(TITLE, MESSAGE, items, BusinessContextManagerViewPart.B_TX_ORDER_INFO_TOOLTIP);
addPage(newItemWizardPage);
}
/**
* {@inheritDoc}
*/
@Override
public boolean performFinish() {
String name = newItemWizardPage.getName();
String description = newItemWizardPage.getDescription();
int insertBeforeIndex = newItemWizardPage.getInsertedBeforeIndex();
AbstractExpression matchingRuleExpression = new BooleanExpression(false);
newBusinessTransaction = new BusinessTransactionDefinition(name);
if (StringUtils.isNotBlank(description)) {
newBusinessTransaction.setDescription(description);
}
newBusinessTransaction.setMatchingRuleExpression(matchingRuleExpression);
try {
application.addBusinessTransactionDefinition(newBusinessTransaction, insertBeforeIndex);
} catch (BusinessException e) {
InspectIT.getDefault().createErrorDialog(
"Adding the business transaction definition '" + newBusinessTransaction.getBusinessTransactionDefinitionName() + "' failed due to the following exception.", e, -1);
return false;
}
return true;
}
/**
* Gets {@link #newBusinessTransaction}.
*
* @return {@link #newBusinessTransaction}
*/
public BusinessTransactionDefinition getNewBusinessTransaction() {
return newBusinessTransaction;
}
}