/** * Checks the name of a BaseElement and returns the identifier if no name is specified * * @param baseElement * Holds the BaseElement of a given BPMN element * @return identifier */ public static String checkName(final BaseElement baseElement) { String identifier = baseElement.getAttributeValue(BpmnConstants.ATTR_NAME); if (identifier == null || identifier == "") { identifier = baseElement.getAttributeValue(BpmnConstants.ATTR_ID); } return identifier; }
/** * * @param rule * Rule * @param classification * CriticalityEnum * @param element * BpmnElement * @param bpmnFile * BpmnFile * @param message * ErrorMessage * @return Issue */ public static CheckerIssue createSingleIssue(final Rule rule, final CriticalityEnum classification, final BpmnElement element, final String bpmnFile, final String message) { final BaseElement baseElement = element.getBaseElement(); return new CheckerIssue(rule.getName(), classification, bpmnFile, baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_ID), baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME), message); }
@Override public T withPostfix(String postfix) { final Function<BpmnElement, EvaluationResult<BpmnElement>> evaluator = element -> { String elementName = element.getBaseElement().getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME); return new EvaluationResult<>(elementName.endsWith(postfix), element, elementName); }; final String description = String.format("with postfix '%s'", postfix); return thatFulfill(new DescribedPredicateEvaluator<>(evaluator, description)); }
@Override public T withNameMatching(String regex) { final Function<BpmnElement, EvaluationResult<BpmnElement>> evaluator = element -> { String elementName = element.getBaseElement().getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME); return new EvaluationResult<>(Pattern.matches(regex, elementName), element, elementName); }; final String description = String.format("with name matching '%s'", regex); return thatFulfill(new DescribedPredicateEvaluator<>(evaluator, description)); }
@Override public T withPrefix(String prefix) { final Function<BpmnElement, EvaluationResult<BpmnElement>> evaluator = element -> { String elementName = element.getBaseElement().getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME); return new EvaluationResult<>(elementName.startsWith(prefix), element, elementName); }; final String description = String.format("with prefix '%s'", prefix); return thatFulfill(new DescribedPredicateEvaluator<>(evaluator, description)); }
/** * @param rule * Rule * * @param classification * CriticalityEnum * @param element * BpmnElement * @param message * Errormessage * @param description * Description * @return Issues */ public static Collection<CheckerIssue> createIssue(final Rule rule, final CriticalityEnum classification, final BpmnElement element, final String message, final String description) { final Collection<CheckerIssue> issues = new ArrayList<CheckerIssue>(); final BaseElement baseElement = element.getBaseElement(); issues.add(new CheckerIssue(rule.getName(), rule.getRuleDescription(), classification, element.getProcessdefinition(), baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_ID), baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME), message, description)); return issues; }
/** * * @param rule * Rule * @param classification * CriticalityEnum * @param element * BpmnElement * @param message * Errormessage * @return Issues */ public static Collection<CheckerIssue> createIssue(final Rule rule, final CriticalityEnum classification, final BpmnElement element, final String message) { final Collection<CheckerIssue> issues = new ArrayList<CheckerIssue>(); final BaseElement baseElement = element.getBaseElement(); issues.add(new CheckerIssue(rule.getName(), rule.getRuleDescription(), classification, element.getProcessdefinition(), baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_ID), baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME), message)); return issues; }
final String taskName = baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME); if (taskName != null && taskName.trim().length() > 0) { final Pattern pattern = Pattern.compile(patternString);
/** * * @param rule * Rule * @param classification * Criticality Enum * @param resourceFile * ResourceFile * @param element * BpmnElement * @param message * Errormessage * @return Issues */ public static Collection<CheckerIssue> createIssue(final Rule rule, final CriticalityEnum classification, final String resourceFile, final BpmnElement element, final String message) { final Collection<CheckerIssue> issues = new ArrayList<CheckerIssue>(); final BaseElement baseElement = element.getBaseElement(); issues.add(new CheckerIssue(rule.getName(), rule.getRuleDescription(), classification, element.getProcessdefinition(), resourceFile, baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_ID), baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME), message, null)); return issues; }
/** * * @param rule * Rule * @param classification * CriticalityEnum * @param element * BpmnElement * @param beanReference * beanReference * @param message * Errormessage * @return Issue */ public static CheckerIssue createIssueWithBeanRef(Rule rule, CriticalityEnum classification, BpmnElement element, String beanReference, String message) { final BaseElement baseElement = element.getBaseElement(); return new CheckerIssue(rule.getName(), rule.getRuleDescription(), classification, element.getProcessdefinition(), beanReference, baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_ID), baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME), message, null); }
final String elementId = baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_ID);
private static JsonObject transformElementToJsonIncludingProcessVariables(BpmnElement element) { final JsonObject obj = new JsonObject(); if (!element.getProcessVariables().isEmpty()) { // elementID obj.addProperty("elementId", element.getBaseElement().getId()); // bpmnFile obj.addProperty(BpmnConstants.VPAV_BPMN_FILE, replace(File.separator, "\\", element.getProcessdefinition())); // element Name if (element.getBaseElement().getAttributeValue("name") != null) obj.addProperty("elementName", element.getBaseElement().getAttributeValue(BpmnConstants.ATTR_NAME)); Function<ProcessVariableOperation, JsonObject> processVariableToJson = o -> { final JsonObject jsonOperation = new JsonObject(); jsonOperation.addProperty("name", o.getName()); jsonOperation.addProperty("fieldType", o.getFieldType().getDescription()); jsonOperation.addProperty("elementChapter", o.getChapter().toString()); return jsonOperation; }; obj.add("read", element.getProcessVariables().values().stream() .filter(o -> o.getOperation() == VariableOperation.READ) .map(processVariableToJson).collect(JsonArray::new, JsonArray::add, JsonArray::addAll)); obj.add("write", element.getProcessVariables().values().stream() .filter(o -> o.getOperation() == VariableOperation.WRITE) .map(processVariableToJson).collect(JsonArray::new, JsonArray::add, JsonArray::addAll)); obj.add("delete", element.getProcessVariables().values().stream() .filter(o -> o.getOperation() == VariableOperation.DELETE) .map(processVariableToJson).collect(JsonArray::new, JsonArray::add, JsonArray::addAll)); } return obj; }
/** * Transforms a process variable to a json object * * @param processVariable * @return */ private static JsonObject transformProcessVariablesToJson(final ProcessVariable processVariable) { final JsonObject obj = new JsonObject(); obj.addProperty("name", processVariable.getName()); if (processVariable.getOperations().size() > 0) { String bpmnFile = processVariable.getOperations().get(0).getElement().getProcessdefinition(); obj.addProperty(BpmnConstants.VPAV_BPMN_FILE, replace(File.separator, "\\", bpmnFile)); } Function<ProcessVariableOperation, JsonObject> processVariableToJson = o -> { final JsonObject jsonOperation = new JsonObject(); jsonOperation.addProperty("elementId", o.getElement().getBaseElement().getId()); jsonOperation.addProperty("elementName", o.getElement().getBaseElement().getAttributeValue("name")); jsonOperation.addProperty("fieldType", o.getFieldType().getDescription()); jsonOperation.addProperty("elementChapter", o.getChapter().toString()); return jsonOperation; }; obj.add("read", processVariable.getReads().stream().map(processVariableToJson).collect(JsonArray::new, JsonArray::add, JsonArray::addAll)); obj.add("write", processVariable.getWrites().stream().map(processVariableToJson).collect(JsonArray::new, JsonArray::add, JsonArray::addAll)); obj.add("delete", processVariable.getDeletes().stream().map(processVariableToJson).collect(JsonArray::new, JsonArray::add, JsonArray::addAll)); return obj; }
/** * * @param rule * Rule * @param classification * CriticalityEnum * @param element * BpmnElement * @param javaReference * javaReference * @param message * Errormessage * @return Issue */ public static CheckerIssue createIssueWithJavaRef(Rule rule, CriticalityEnum classification, BpmnElement element, String javaReference, String message) { final BaseElement baseElement = element.getBaseElement(); return new CheckerIssue(rule.getName(), rule.getRuleDescription(), classification, element.getProcessdefinition(), javaReference, baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_ID), baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME), message, null); }
@Override public T withProperty(String propertyName) { final Function<BpmnElement, EvaluationResult<BpmnElement>> evaluator = element -> { boolean hasProperty = hasProperty(propertyName, element); String elementName = element.getBaseElement().getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME); return new EvaluationResult<>(hasProperty, element, hasProperty ? "present at '" + elementName + "'" : "not present at '" + elementName + "'"); }; final String description = String.format("with property '%s'", propertyName); return thatFulfill(new DescribedPredicateEvaluator<>(evaluator, description)); }
/** * * @param rule * Rule * @param classification * CriticalityEnum * @param classPath * classPath * @param element * BpmnElement * @param message * Errormessage * @return Issue */ public static CheckerIssue createIssueWithClassPath(Rule rule, CriticalityEnum classification, String classPath, BpmnElement element, String message) { final BaseElement baseElement = element.getBaseElement(); return new CheckerIssue(rule.getName(), rule.getRuleDescription(), classification, element.getProcessdefinition(), classPath, baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_ID), baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME), message, null); }
/** * * @param rule * Rule * @param classification * CriticalityEnum * @param element * BpmnElement * @param entry * Single entry in Map * @param message * Errormessage * @return Issues */ public static CheckerIssue createIssue(final Rule rule, final CriticalityEnum classification, final BpmnElement element, final Entry<Element, Element> entry, final String message) { final BaseElement baseElement = element.getBaseElement(); return new CheckerIssue(rule.getName(), rule.getRuleDescription(), classification, element.getProcessdefinition(), entry.getKey().getAttribute(BpmnModelConstants.BPMN_ATTRIBUTE_ID), baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME), message); }
/** * * @param rule * Rule * @param classification * CriticalityEnum * @param element * BpmnElement * @param variableResourcePath * variableResourcePath * @param varName * variableName * @param message * Errormessage * @param convention * Convention specified in rule * @return Issue */ public static CheckerIssue createSingleIssue(final Rule rule, final CriticalityEnum classification, final BpmnElement element, final String variableResourcePath, final String varName, final String message, final ElementConvention convention) { final BaseElement baseElement = element.getBaseElement(); return new CheckerIssue(rule.getName(), rule.getRuleDescription(), classification, element.getProcessdefinition(), variableResourcePath, baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_ID), baseElement.getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME), varName, message, convention.getDescription()); }
/** * * @param rule * Rule * @param classification * CriticalityEnum * @param var * Variable * @param paths * List of paths * @param anomaly * Anomaly * @param message * Errormessage * @return Issues */ public static Collection<CheckerIssue> createIssue(final Rule rule, final CriticalityEnum classification, final ProcessVariableOperation var, final List<Path> paths, final AnomalyContainer anomaly, final String message) { final Collection<CheckerIssue> issues = new ArrayList<CheckerIssue>(); issues.add(new CheckerIssue(rule.getName(), rule.getRuleDescription(), classification, var.getElement().getProcessdefinition(), var.getResourceFilePath(), var.getElement().getBaseElement().getId(), var.getElement().getBaseElement().getAttributeValue(BpmnModelConstants.BPMN_ATTRIBUTE_NAME), var.getName(), anomaly.getAnomaly(), paths, message)); return issues; }
List<XmlPathElement> pathElements = new ArrayList<XmlPathElement>(); for (final BpmnElement element : elements) { String elementName = element.getBaseElement().getAttributeValue(BpmnConstants.ATTR_NAME); if (elementName != null) {