package org.safehaus.penrose.studio.mapping.wizard; import org.apache.log4j.Logger; import org.eclipse.jface.wizard.Wizard; import org.safehaus.penrose.mapping.MappingRuleConfig; import org.safehaus.penrose.mapping.Expression; import org.safehaus.penrose.studio.dialog.ErrorDialog; /** * @author Endi Sukma Dewata */ public class AddFieldMappingWizard extends Wizard { Logger log = Logger.getLogger(getClass()); public FieldPropertyWizardPage propertyPage; public FieldValueWizardPage valuePage; public FieldConditionWizardPage conditionPage; public MappingRuleConfig ruleConfig = new MappingRuleConfig(); public AddFieldMappingWizard() { setWindowTitle("Add field mapping"); propertyPage = new FieldPropertyWizardPage(); propertyPage.setDescription("Enter the field name."); valuePage = new FieldValueWizardPage(); valuePage.setDescription("Enter field value/expression."); conditionPage = new FieldConditionWizardPage(); conditionPage.setDescription("Enter condition to evaluate the field."); } public boolean canFinish() { if (!propertyPage.isPageComplete()) return false; if (!valuePage.isPageComplete()) return false; if (!conditionPage.isPageComplete()) return false; return true; } public void addPages() { addPage(propertyPage); addPage(valuePage); addPage(conditionPage); } public boolean needsPreviousAndNextButtons() { return true; } public boolean performFinish() { try { String fieldName = propertyPage.getFieldName(); ruleConfig.setName(fieldName); int type = valuePage.getType(); switch (type) { case FieldValueWizardPage.TEXT: String text = valuePage.getText(); ruleConfig.setConstant(text); break; case FieldValueWizardPage.BINARY: byte[] binary = valuePage.getBinary(); ruleConfig.setBinary(binary); break; case FieldValueWizardPage.VARIABLE: String variable = valuePage.getVariable(); ruleConfig.setVariable(variable); break; case FieldValueWizardPage.EXPRESSION: Expression expression = valuePage.getExpression(); ruleConfig.setExpression(expression); break; } boolean required = conditionPage.isRequired(); ruleConfig.setRequired(required); String condition = conditionPage.getCondition(); ruleConfig.setCondition(condition); return true; } catch (Exception e) { log.error(e.getMessage(), e); ErrorDialog.open(e); return false; } } public MappingRuleConfig getFieldConfig() { return ruleConfig; } }