@Override @SuppressWarnings("unchecked") public RuleViolations evaluate(final Occurrences rule, final ElementCardinalityContext context) { final DefaultRuleViolations results = new DefaultRuleViolations(); final Optional<Element<? extends View<?>>> candidate = context.getCandidate(); final String role = rule.getRole(); final Set<String> roles = Collections.singleton(role); final Map<String, Integer> graphLabelCount = countLabels(context.getGraph(), roles); // Ensure processing the role even if not used along the graph, so // cardinality min rules can be evaluated. final int count = graphLabelCount.isEmpty() ? 0 : graphLabelCount.get(role); final Optional<CardinalityContext.Operation> operation = context.getOperation(); results.addViolations( cardinalityEvaluationHandler .evaluate(rule, RuleContextBuilder.DomainContexts.cardinality(roles, count, operation)) ); if (candidate.isPresent()) { return GraphEvaluationHandlerUtils.addViolationsSourceUUID(candidate.get().getUUID(), results); } return results; }
public static void verifyCardinality(final ElementCardinalityContext context, final Graph graph, final Element<? extends View<?>> candidate, final CardinalityContext.Operation operation) { assertNotNull(context); final Graph graph1 = context.getGraph(); final Optional<Element<? extends View<?>>> candidate1 = context.getCandidate(); final Optional<CardinalityContext.Operation> operation1 = context.getOperation(); assertNotNull(graph1); assertNotNull(operation1); assertEquals(graph, graph1); assertEquals(candidate, candidate1.orElse(null)); assertEquals(operation, operation1.orElse(null)); }
public static void verifyCardinality(final ElementCardinalityContext context, final Graph graph) { assertNotNull(context); final Graph graph1 = context.getGraph(); final Optional<Element<? extends View<?>>> candidate1 = context.getCandidate(); final Optional<CardinalityContext.Operation> operation1 = context.getOperation(); assertNotNull(graph1); assertNotNull(operation1); assertEquals(graph, graph1); }