public Set<String> lookupTargetNodes(final Graph<?, ? extends Node> graph, final Node<? extends Definition<Object>, ? extends Edge> sourceNode, final String edgeId) { return lookupTargetNodes(graph, sourceNode, edgeId, def -> true); }
public CommonDomainLookups get(final String definitionSetId) { CommonDomainLookups lookup = domainLookups.get(definitionSetId); if (null == lookup) { lookup = domainLookupInstances.get(); lookup.setDomain(definitionSetId); domainLookups.put(definitionSetId, lookup); } return lookup; }
final Set<String> targetConnectors = lookup.lookupTargetConnectors(node); targetConnectors.forEach(connectorDefId -> actions.add(createConnectorActions.get() .setEdgeId(connectorDefId))); if (null != defaultConnectorId) { final Predicate<String> definitionsAllowedFilter = profileManager.isDefinitionIdAllowed(metadata); final Set<String> targets = lookup.lookupTargetNodes(diagram.getGraph(), node, defaultConnectorId, definitionsAllowedFilter); final Set<String> morphTargets = lookup.lookupMorphBaseDefinitions(targets); morphTargets.forEach(defId -> actions.add(createNodeActions.get() .setEdgeId(defaultConnectorId)
@Override @SuppressWarnings("unchecked") public Collection<ToolboxAction<AbstractCanvasHandler>> getActions(final AbstractCanvasHandler canvasHandler, final Element<?> element) { final Set<ToolboxAction<AbstractCanvasHandler>> actions = new LinkedHashSet<>(); final Node<Definition<Object>, Edge> node = (Node<Definition<Object>, Edge>) element; final Diagram diagram = canvasHandler.getDiagram(); final String defSetId = diagram.getMetadata().getDefinitionSetId(); final CommonDomainLookups lookup = toolboxDomainLookups.get(defSetId); // Look for the allowed connectors present in the Definition Set. final Set<String> allowedConnectorIds = lookup.lookupTargetConnectors(node); for (final String allowedConnectorId : allowedConnectorIds) { // Append a new action for each connector. actions.add(createConnectorActions.get() .setEdgeId(allowedConnectorId)); // Append a new action for each candidate target node (as from the current connector). final Set<String> defIds = lookup .lookupTargetNodes(diagram.getGraph(), node, allowedConnectorId); defIds.forEach(definitionId -> actions.add(createNodeActions.get() .setEdgeId(allowedConnectorId) .setNodeId(definitionId))); } return actions; }
@Before public void setup() throws Exception { final TestingGraphMockHandler graphTestHandler = new TestingGraphMockHandler(); graph = TestingGraphInstanceBuilder.newGraph1(graphTestHandler); TestingGraphInstanceBuilder.createDefaultRulesForGraph1(graphTestHandler.ruleSet); when(cacheBuilder.apply(anyString())).thenReturn(cache); when(cache.getRuleSet()).thenReturn(graphTestHandler.ruleSet); CanConnect connectionRule = (CanConnect) ((List<Rule>) graphTestHandler.ruleSet.getRules()).get(0); when(cache.getConnectionRules()).thenReturn(Collections.singletonList(connectionRule)); when(cache.getDefinitions(contains("label1"))).thenReturn(Stream.of(TestingGraphInstanceBuilder.DEF1_ID).collect(Collectors.toSet())); when(cache.getDefinitions(contains("label2"))).thenReturn(Stream.of(TestingGraphInstanceBuilder.DEF2_ID).collect(Collectors.toSet())); when(definitionsRegistry.getLabels(eq(TestingGraphInstanceBuilder.DEF1_ID))).thenReturn(TestingGraphInstanceBuilder.DEF1_LABELS); when(definitionsRegistry.getLabels(eq(TestingGraphInstanceBuilder.DEF2_ID))).thenReturn(TestingGraphInstanceBuilder.DEF2_LABELS); tested = new CommonDomainLookups(graphTestHandler.definitionUtils, definitionsRegistry, graphTestHandler.ruleManager, cacheBuilder) .setDomain("ds1"); }
when(morphDefinition2.getDefault()).thenReturn(morphBase2); when(morphDefinition3.getDefault()).thenReturn(morphBase2); Set<String> result = tested.lookupMorphBaseDefinitions(new HashSet<String>(3) {{ add(def1Id); add(def2Id);
@Before @SuppressWarnings("unchecked") public void setup() throws Exception { when(cacheBuilder.apply(anyString())).thenReturn(cache); when(definitionUtils.getDefinitionManager()).thenReturn(definitionManager); tested = new CommonDomainLookups(definitionUtils, definitionsRegistry, ruleManager, cacheBuilder); }
@Override public void executeAction(final AbstractCanvasHandler canvasHandler, final String selectedNodeId) { final Node sourceNode = CanvasLayoutUtils.getElement(canvasHandler, selectedNodeId).asNode(); final String definitionSetId = canvasHandler.getDiagram().getMetadata().getDefinitionSetId(); final CommonDomainLookups commonDomainLookups = toolboxDomainLookups.get(definitionSetId); final Set<String> connectorDefinitionIds = commonDomainLookups.lookupTargetConnectors(sourceNode); for (final String connectorDefinitionId : connectorDefinitionIds) { final Set<String> targetNodesDefinitionIds = commonDomainLookups.lookupTargetNodes(canvasHandler.getDiagram().getGraph(), sourceNode, connectorDefinitionId); for (final String targetNodeDefinitionId : targetNodesDefinitionIds) { final Object definition = definitionsCacheRegistry.getDefinitionById(targetNodeDefinitionId); if (canAppendNodeOfDefinition(definition)) { generalCreateNodeAction.executeAction(canvasHandler, selectedNodeId, targetNodeDefinitionId, connectorDefinitionId); break; } } } }
@Test @SuppressWarnings("unchecked") public void testLookupTargetNodesWithPredicate() { Predicate<String> filter = TestingGraphInstanceBuilder.DEF1_ID::equals; Set<String> result = tested.lookupTargetNodes(graph.graph, graph.startNode, TestingGraphInstanceBuilder.EDGE1_ID, filter); assertTrue(result.isEmpty()); } }
@Test @SuppressWarnings("unchecked") public void testLookupTargetNodes() { Set<String> result = tested.lookupTargetNodes(graph.graph, graph.startNode, TestingGraphInstanceBuilder.EDGE1_ID); assertFalse(result.isEmpty()); assertEquals(1, result.size()); assertEquals(TestingGraphInstanceBuilder.DEF2_ID, result.iterator().next()); }