@Override public Set<String> execute(final DomainLookupContext context) { final Set<String> ids = new LookupDefinitionsByLabels(labels, definitionIdsAllowedFilter).execute(context); final Map<String, Integer> graphLabelCount = GraphUtils.getLabelsCount(graph, labels); final Set<String> result = new LinkedHashSet<>(); for (final String defId : ids) { final Set<String> defLabels = context.getDefinitionsRegistry().getLabels(defId); for (final String label : defLabels) { final Integer roleCount = Optional.ofNullable(graphLabelCount.get(label)).orElse(0); final RuleViolations violations = context.getRuleManager() .evaluate(context.getCache().getRuleSet(), cardinality(Collections.singleton(label), roleCount, Optional.of(CardinalityContext.Operation.ADD))); if (isValid(violations)) { result.add(defId); } } } return result; } }
@Override public Set<String> execute(final DomainLookupContext context) { final DomainLookupsCache cache = context.getCache(); final Set<String> result = new LinkedHashSet<>(); for (final String definitionId : definitionIds) { final Set<String> labels = context.getDefinitionsRegistry().getLabels(definitionId); final RuleViolations violations = context.getRuleManager() .evaluate(cache.getRuleSet(), RuleContextBuilder.DomainContexts.edgeCardinality(labels, edgeId, 0, EdgeCardinalityContext.Direction.INCOMING, Optional.of(CardinalityContext.Operation.ADD))); if (isValid(violations)) { result.add(definitionId); } } return result; } }
@Override public Set<String> execute(final DomainLookupContext context) { final DomainLookupsCache cache = context.getCache(); final Set<String> labels = sourceNode.getLabels(); final Set<String> allowedTargetConnectors = context.getCache() .getConnectionRules() .stream() .filter(rule -> isSourceConnectionAllowed(rule, labels)) .map(CanConnect::getRole) .collect(Collectors.toSet()); final Set<String> result = new LinkedHashSet<>(); for (final String allowedConnector : allowedTargetConnectors) { final int outEdgeCount = countOutgoingEdges(context, sourceNode, allowedConnector); final RuleViolations outEdgeCardinalityResult = context.getRuleManager() .evaluate(cache.getRuleSet(), edgeCardinality(sourceNode.getLabels(), allowedConnector, outEdgeCount, EdgeCardinalityContext.Direction.OUTGOING, Optional.of(CardinalityContext.Operation.ADD))); if (isValid(outEdgeCardinalityResult)) { result.add(allowedConnector); } } return result; } }
@Before @SuppressWarnings("unchecked") public void setup() throws Exception { when(context.getRuleManager()).thenReturn(ruleManager); when(context.getCache()).thenReturn(cache); when(cache.getRuleSet()).thenReturn(RULE_SET); when(cache.getConnectionRules()).thenReturn(Collections.singletonList(permittedConnections)); when(context.getDefinitionsRegistry()).thenReturn(definitionsCache); TestingGraphMockHandler graphTestHandler = new TestingGraphMockHandler(); when(context.getDefinitionManager()).thenReturn(graphTestHandler.definitionManager); graph1Instance = TestingGraphInstanceBuilder.newGraph1(graphTestHandler); when(definitionsCache.getLabels(eq(DEF_ID1))).thenReturn(Collections.singleton(ROLE1)); when(definitionsCache.getLabels(eq(DEF_ID2))).thenReturn(Collections.singleton(ROLE2)); when(definitionsCache.getLabels(eq(DEF_ID3))).thenReturn(Collections.singleton(ROLE3)); }
@Override public Set<String> execute(final DomainLookupContext context) { final DomainLookupsCache cache = context.getCache(); final int outEdgeCount = countOutgoingEdges(context, sourceNode, edgeId); final RuleViolations outEdgeCardinalityResult = context.getRuleManager() .evaluate(cache.getRuleSet(), edgeCardinality(sourceNode.getLabels(), edgeId, outEdgeCount, EdgeCardinalityContext.Direction.OUTGOING, Optional.of(CardinalityContext.Operation.ADD))); if (isValid(outEdgeCardinalityResult)) { final String defId = context.getDefinitionManager() .adapters() .forDefinition() .getId(sourceNode.getContent().getDefinition()) .value(); return new LookupConnectionTargetRoles(edgeId, defId) .execute(context); } return Collections.emptySet(); } }