Package org.jbpm.ui.custom

Source Code of org.jbpm.ui.custom.BSHCellEditorProvider

package org.jbpm.ui.custom;

import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.eclipse.jface.dialogs.Dialog;
import org.jbpm.ui.DesignerLogger;
import org.jbpm.ui.bsh.BSHDecisionModel;
import org.jbpm.ui.common.model.Decision;
import org.jbpm.ui.common.model.Delegable;
import org.jbpm.ui.common.model.GraphElement;
import org.jbpm.ui.common.model.ProcessDefinition;
import org.jbpm.ui.common.model.Transition;
import org.jbpm.ui.dialog.BSHEditorDialog;

import bsh.ParseException;
import bsh.Parser;

public class BSHCellEditorProvider extends DelegableProvider implements IDecisionProvider {

    @Override
    public String showConfigurationDialog(Delegable delegable) {
        ProcessDefinition definition = ((GraphElement) delegable).getProcessDefinition();
        List<Transition> transitions = ((Decision) delegable).getLeavingTransitions();
        List<String> transitionNames = new ArrayList<String>();
        for (Transition transition : transitions) {
            transitionNames.add(transition.getName());
        }

        BSHEditorDialog dialog = new BSHEditorDialog(
                delegable.getDelegationConfiguration(),
                transitionNames,
                definition.getVariablesList());

        if (dialog.open() == Dialog.OK) {
            return dialog.getResult();
        }
        return null;
    }

    @Override
  public boolean validateValue(Delegable delegable) {
        try {
          String configuration = delegable.getDelegationConfiguration();
            Parser parser = new Parser(new ByteArrayInputStream(configuration.getBytes()));
            while(!parser.Line()) {
                parser.popNode();
            }
            return configuration.trim().length() > 0;
        } catch (ParseException e) {
            DesignerLogger.logErrorWithoutDialog("BSH parser exception", e);
            return false;
        }
  }

    public Set<String> getTransitionNames(Decision decision) {
        try {
            BSHDecisionModel model = new BSHDecisionModel(decision.getDelegationConfiguration(), decision.getProcessDefinition().getVariablesList());
            if (model != null)
                return new HashSet<String>(model.getTransitionNames());
        } catch (Exception e) {
        }
        return new HashSet<String>();
    }

    public String getDefaultTransitionName(Decision decision) {
        try {
            BSHDecisionModel model = new BSHDecisionModel(decision.getDelegationConfiguration(), decision.getProcessDefinition().getVariablesList());
            if (model != null)
                return model.getDefaultTransitionName();
        } catch (Exception e) {
        }
        return null;
    }

    public void transitionRenamed(Decision decision, String oldName, String newName) {
        String conf = decision.getDelegationConfiguration();
        conf = conf.replaceAll(Pattern.quote("\"" + oldName + "\""), Matcher.quoteReplacement("\"" + newName + "\""));
        decision.setDelegationConfiguration(conf);
    }
   
}
TOP

Related Classes of org.jbpm.ui.custom.BSHCellEditorProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.