package org.activiti.designer.validation.bpmn20.validation.worker.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.activiti.designer.validation.bpmn20.validation.worker.ProcessValidationWorker;
import org.activiti.designer.validation.bpmn20.validation.worker.ProcessValidationWorkerMarker;
import org.eclipse.bpmn2.ScriptTask;
import org.eclipse.bpmn2.impl.ScriptTaskImpl;
import org.eclipse.core.resources.IMarker;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.graphiti.mm.pictograms.Diagram;
/**
* Validates process according to {@link ValidationCode#VAL_002} and
* {@link ValidationCode#VAL_003}.
*
* @author Tiese Barrell
* @since 5.6
* @version 1
*/
public class ScriptTaskValidationWorker implements ProcessValidationWorker {
private static final String NO_FORMAT_EXCEPTION_MESSAGE_PATTERN = "ScriptTask '%s' has no format specified";
private static final String NO_SCRIPT_EXCEPTION_MESSAGE_PATTERN = "ScriptTask '%s' has no format specified";
@Override
public Collection<ProcessValidationWorkerMarker> validate(final Diagram diagram, final Map<String, List<EObject>> processNodes) {
final Collection<ProcessValidationWorkerMarker> result = new ArrayList<ProcessValidationWorkerMarker>();
final List<EObject> scriptTasks = processNodes.get(ScriptTaskImpl.class.getCanonicalName());
if (scriptTasks != null && !scriptTasks.isEmpty()) {
for (final EObject object : scriptTasks) {
final ScriptTask scriptTask = (ScriptTask) object;
if (scriptTask.getScriptFormat() == null || scriptTask.getScriptFormat().length() == 0) {
result.add(new ProcessValidationWorkerMarker(IMarker.SEVERITY_ERROR, String.format(NO_FORMAT_EXCEPTION_MESSAGE_PATTERN, scriptTask.getName()),
scriptTask.getId(), ValidationCode.VAL_002));
}
if (scriptTask.getScript() == null || scriptTask.getScript().length() == 0) {
result.add(new ProcessValidationWorkerMarker(IMarker.SEVERITY_ERROR, String.format(NO_SCRIPT_EXCEPTION_MESSAGE_PATTERN, scriptTask.getName()),
scriptTask.getId(), ValidationCode.VAL_003));
}
}
}
return result;
}
}