Package org.jbpm.ui.common.model

Source Code of org.jbpm.ui.common.model.FormNode

package org.jbpm.ui.common.model;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.PropertyDescriptor;
import org.jbpm.ui.DesignerLogger;
import org.jbpm.ui.forms.FormType;
import org.jbpm.ui.forms.FormTypeProvider;
import org.jbpm.ui.resource.Messages;
import org.jbpm.ui.util.IOUtils;
import org.jbpm.ui.validation.ValidatorParser;

public abstract class FormNode extends SwimlanedNode {
    public static final String EMPTY = "";
    public static final String VALIDATION_SUFFIX = "validation.xml";
    public static final String SCRIPT_SUFFIX = "js";

    private String formFileName;

    private String formType;

    private String validationFileName;

    private boolean useJSValidation;

    private String scriptFileName;

    public String getFormType() {
        return formType;
    }

    public void setFormType(String type) {
        this.formType = type;
    }

    public boolean hasForm() {
        return formFileName != null && formFileName.length() > 0;
    }
    public boolean hasFormValidation() {
        return validationFileName != null && validationFileName.length() > 0;
    }
    public boolean hasFormScript() {
        return scriptFileName != null && scriptFileName.length() > 0;
    }

    public String getFormFileName() {
        return formFileName;
    }

    public void setFormFileName(String formFile) {
        String old = this.formFileName;
        this.formFileName = formFile.trim();
        firePropertyChange(PROPERTY_FORM_FILE, old, this.formFileName);
    }

    public String getValidationFileName() {
        return validationFileName;
    }

    public void setValidationFileName(String validationFile) {
        String old = this.validationFileName;
        this.validationFileName = validationFile.trim();
        firePropertyChange(PROPERTY_FORM_VALIDATION_FILE, old, this.validationFileName);
    }

    public boolean isUseJSValidation() {
        return useJSValidation;
    }

    public void setUseJSValidation(boolean useJSValidation) {
        boolean old = this.useJSValidation;
        this.useJSValidation = useJSValidation;
        firePropertyChange(PROPERTY_FORM_JS_VALIDATION, old, this.useJSValidation);
    }
   
    public String getScriptFileName() {
        return scriptFileName;
    }
   
    public void setScriptFileName(String scriptFile) {
        String old = this.scriptFileName;
        this.scriptFileName = scriptFile;
        firePropertyChange(PROPERTY_FORM_SCRIPT_FILE, old, this.scriptFileName);
    }
   
    @Override
    public void setName(String name) {
        if (getName() != null && canSetNameTo(name)) {
            try {
                IOUtils.renameFormFiles(this, name);
            } catch (CoreException e) {
                DesignerLogger.logErrorWithoutDialog("Unable rename form files", e);
            }
        }
        super.setName(name);
    }

    @Override
    protected List<IPropertyDescriptor> getCustomPropertyDescriptors() {
        List<IPropertyDescriptor> list = super.getCustomPropertyDescriptors();
        list.add(new PropertyDescriptor(PROPERTY_FORM_FILE, Messages.getString("FormNode.property.formFile")));
        list.add(new PropertyDescriptor(PROPERTY_FORM_VALIDATION_FILE, Messages.getString("FormNode.property.formValidationFile")));
        list.add(new PropertyDescriptor(PROPERTY_FORM_SCRIPT_FILE, Messages.getString("FormNode.property.formScriptFile")));
        return list;
    }

    @Override
    public Object getPropertyValue(Object id) {
        if (PROPERTY_FORM_FILE.equals(id)) {
            return safeStringValue(getFormFileName());
        }
        if (PROPERTY_FORM_VALIDATION_FILE.equals(id)) {
            return safeStringValue(getValidationFileName());
        }
        if (PROPERTY_FORM_SCRIPT_FILE.equals(id)) {
            return safeStringValue(getScriptFileName());
        }
        return super.getPropertyValue(id);
    }

    @Override
    protected void validate() {
        super.validate();
        if (!hasForm()) {
            // We do not have a form, don't check validation file
            return;
        }
        if (!hasFormValidation()) {
            addError("formNode.validationFileNotExist");
            return;
        }
        IFile validationFile = IOUtils.getAdjacentFile(getProcessDefinition().getDefinitionFile(), this.validationFileName);
        if (!validationFile.exists()) {
            addError("formNode.validationFileNotFound");
            return;
        }
        FormType formType = FormTypeProvider.getFormType(this.formType);
        IFile formFile = IOUtils.getAdjacentFile(getProcessDefinition().getDefinitionFile(), this.formFileName);
        formType.validate(formFile, this);
    }
   
    public Set<String> getValidationVariables(IFolder processFolder) throws Exception {
        if (!hasFormValidation()) {
            return new HashSet<String>();
        }
        IFile validationFile = IOUtils.getAdjacentFile(processFolder, this.validationFileName);
        return ValidatorParser.parseValidatorConfigs(validationFile).keySet();
    }
   
    public Map<String, Integer> getFormVariables(IFolder definitionFile) throws Exception {
        if (!hasForm()) {
            return new HashMap<String, Integer>();
        }
        FormType formType = FormTypeProvider.getFormType(this.formType);
        IFile formFile = IOUtils.getAdjacentFile(definitionFile, this.formFileName);
        return formType.getFormVariableNames(formFile, this);
    }

    @Override
    public boolean isExclusive() {
        return true;
    }
}
TOP

Related Classes of org.jbpm.ui.common.model.FormNode

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.