/** * Removes the {@link Node} with the given {@code id} from this graph if present. * * @param id the id of the {@link Node} to be removed * @return {@code true} if the graph contains a {@link Node} with the given {@code id}. Else {@code false}. */ public boolean removeNode(String id) { return nodeList.remove(getNode(id)); }
private NodeContext getTargetNodeContext(Graph graph) throws GraphException { GraphContext graphContext = new GraphContext(graph, this); NodeContext targetNodeContext = null; Header header = graph.getHeader(); if (header != null) { HeaderTarget headerTarget = header.getTarget(); Node targetNode = graph.getNode(headerTarget.getNodeId()); for (Node node : graph.getNodes()) { if (node == targetNode) { targetNodeContext = graphContext.getNodeContext(node); break; } } } return targetNodeContext; }
@Test public void testIt() throws Exception { InputStream stream = BinningInGraphTest.class.getResourceAsStream("BinningInGraphTest.xml"); Graph graph = GraphIO.read(new InputStreamReader(stream)); Assert.assertNotNull(graph); Assert.assertEquals(1, graph.getNodeCount()); Assert.assertEquals("subsetNodeId", graph.getNode(0).getId()); Assert.assertEquals("subsetNodeId", graph.getNode(0).getId()); } }
private void initNodeDependencies() throws GraphException { Graph graph = getGraph(); for (Node node : graph.getNodes()) { for (NodeSource source : node.getSources()) { String sourceNodeId = source.getSourceNodeId(); Node sourceNode = graph.getNode(sourceNodeId); if (sourceNode == null) { Header header = graph.getHeader(); boolean sourceDefinedInHeader = header != null && isSourceNodeIdInHeader(sourceNodeId, header.getSources()); if (!sourceDefinedInHeader) { throw new GraphException(getMissingSourceMessage(node, source)); } } if (sourceNode != null) { getNodeContext(sourceNode).incrementReferenceCount(); source.setSourceNode(sourceNode); } } } }
private void testGraph(String[] args, int expectedNodeCount, String expectedLog, Map<String, String> expectedSourceNodeIdFilePathMap, String expectedTargetNodeId, String expectedTargetFilepath, String expectedTargetFormat) throws Exception { clTool.run(args); assertEquals(expectedLog, context.logString); Graph executedGraph = context.executedGraph; assertNotNull(executedGraph); assertEquals(expectedNodeCount, executedGraph.getNodeCount()); for (Map.Entry<String, String> entry : expectedSourceNodeIdFilePathMap.entrySet()) { String expectedSourceFilePath = entry.getValue(); if (expectedSourceFilePath != null) { final String key = entry.getKey(); Node generatedReaderNode1 = executedGraph.getNode(key); assertNotNull("Source ID not found: " + key, generatedReaderNode1); assertEquals(expectedSourceFilePath, generatedReaderNode1.getConfiguration().getChild("file").getValue()); } } Node generatedWriterNode = executedGraph.getNode(expectedTargetNodeId); assertNotNull(generatedWriterNode); assertEquals("node1", generatedWriterNode.getSource(0).getSourceNodeId()); DomElement parameters = generatedWriterNode.getConfiguration(); assertNotNull(parameters); assertNotNull(expectedTargetFilepath, parameters.getChild("file").getValue()); assertNotNull(expectedTargetFormat, parameters.getChild("formatName").getValue()); }
/** * Adds a <code>Node</code> to the graph * * @param node a node * @throws IllegalArgumentException if the id of the given node is already in use */ public void addNode(Node node) { if (nodeList.contains(getNode(node.getId()))) { throw new IllegalArgumentException("node ID duplicated"); } nodeList.add(node); }
public void testOneNodeChain() { Graph graph = new Graph("chain1"); Node node = new Node("node1", "org.esa.beam.framework.gpf.TestOps$Op1Spi"); try { graph.addNode(node); } catch (IllegalArgumentException e) { fail(e.getMessage()); } assertEquals("chain1", graph.getId()); assertNotNull(graph.getNodes()); assertEquals(node, graph.getNode("node1")); }
assertEquals(expectedNodeCount, executedGraph.getNodeCount()); Node node1 = executedGraph.getNode("node1"); assertEquals(expectedSourceNodeId1, node1.getSource(0).getSourceNodeId()); assertEquals(expectedThreshold, node1.getConfiguration().getChild("threshold").getValue()); Node node2 = executedGraph.getNode("node2"); assertEquals("node1", node2.getSource(0).getSourceNodeId()); assertEquals(expectedSourceNodeId2, node2.getSource(1).getSourceNodeId()); Node generatedReaderNode1 = executedGraph.getNode(expectedSourceNodeId1); assertNotNull(generatedReaderNode1); assertEquals(expectedSourceFilepath1, generatedReaderNode1.getConfiguration().getChild("file").getValue()); Node generatedReaderNode2 = executedGraph.getNode(expectedSourceNodeId2); assertNotNull(generatedReaderNode2); assertEquals(expectedSourceFilepath2, generatedReaderNode2.getConfiguration().getChild("file").getValue()); Node generatedWriterNode = executedGraph.getNode(expectedTargetNodeId); assertNotNull(generatedWriterNode); assertEquals("node2", generatedWriterNode.getSource(0).getSourceNodeId());
String referenceNodeId = referenceParts[0]; String propertyName = referenceParts[1]; Node node = getGraph().getNode(referenceNodeId); NodeContext referredNodeContext = getNodeContext(node); Operator operator = referredNodeContext.getOperator();
public void testRemoveNode() { Graph graph = new Graph("chain1"); Node node = new Node("node1", "org.esa.beam.framework.gpf.TestOps$Op1Spi"); try { graph.addNode(node); } catch (IllegalArgumentException e) { fail(e.getMessage()); } boolean result = graph.removeNode("node1"); assertEquals("chain1", graph.getId()); assertNotNull(graph.getNodes()); assertTrue(result); assertNull(graph.getNode("node1")); }
public void testSpiCreation() throws GraphException { Graph graph = new Graph("chain1"); Node node1 = new Node("node1", "Op1"); graph.addNode(node1); GraphContext graphContext = new GraphContext(graph); NodeContext nodeContext = graphContext.getNodeContext(node1); assertEquals("Op1", graph.getNode("node1").getOperatorName()); assertEquals("org.esa.beam.framework.gpf.TestOps$Op1", nodeContext.getOperator().getClass().getName()); }
public void testReadFromXML() throws Exception { String expectedXML = "<graph id=\"myOneNodeGraph\">\n" + " <version>1.0</version>\n" + " <node id=\"node1\">\n" + " <operator>Op1</operator>\n" + " <sources/>\n" + " </node>\n" + "</graph>"; StringReader reader = new StringReader(expectedXML); Graph graph = GraphIO.read(reader); Node[] nodes = graph.getNodes(); assertNotNull(nodes); assertEquals(1, nodes.length); assertNotNull(nodes[0]); assertEquals("myOneNodeGraph", graph.getId()); Node node1 = graph.getNode("node1"); assertNotNull(node1); assertEquals("Op1", node1.getOperatorName()); }
public void testOneNodeChain() throws Exception { Graph graph1 = new Graph("myOneNodeGraph"); Node node1 = new Node("node1", "Op1"); graph1.addNode(node1); Graph chain2 = doIO(graph1); Node[] nodes = chain2.getNodes(); assertNotNull(nodes); assertEquals(1, nodes.length); assertNotNull(nodes[0]); assertEquals(graph1.getId(), chain2.getId()); Node node1Copy = chain2.getNode("node1"); assertSame(nodes[0], node1Copy); assertEquals("Op1", node1Copy.getOperatorName()); }
public void testTwoNodeChain() throws Exception { Graph graph1 = new Graph("myTwoNodeGraph"); Node node1 = new Node("node1", "Op1"); Node node2 = new Node("node2", "Op2"); node2.addSource(new NodeSource("key1", "node1")); graph1.addNode(node1); graph1.addNode(node2); Graph graph2 = doIO(graph1); assertEquals(graph1.getId(), graph2.getId()); Node[] nodes = graph2.getNodes(); assertNotNull(nodes); assertEquals(2, nodes.length); assertNotNull(nodes[0]); assertNotNull(nodes[1]); Node node1Copy = graph2.getNode("node1"); Node node2Copy = graph2.getNode("node2"); assertSame(nodes[0], node1Copy); assertSame(nodes[1], node2Copy); NodeSource[] sources1 = node1Copy.getSources(); assertNotNull(sources1); assertEquals(0, sources1.length); NodeSource[] sources2 = node2Copy.getSources(); assertNotNull(sources2); assertEquals(1, sources2.length); NodeSource source2 = node2Copy.getSource(0); assertSame(sources2[0], source2); assertEquals("Op1", node1Copy.getOperatorName()); assertEquals("Op2", node2Copy.getOperatorName()); assertEquals("node1", source2.getSourceNodeId()); }
outputNode = graph.getNode("output"); outputNode.addSource(new NodeSource("dummy", "input1")); try { outputNode = graph.getNode("output"); outputNode.addSource(new NodeSource("dummy1", "input1")); outputNode.addSource(new NodeSource("dummy2", "input2")); outputNode = graph.getNode("output"); outputNode.addSource(new NodeSource("dummy1", "input1")); outputNode.addSource(new NodeSource("dummy2", "input2"));
Node bandMathsNode = graph.getNode("bandMathsNode"); DomElement configurationDomElement = bandMathsNode.getConfiguration(); ParameterDescriptorFactory parameterDescriptorFactory = new ParameterDescriptorFactory();
public void testAnySourcesOp() { final String opName = "AnySourcesOp"; Graph graph; Node outputNode; graph = createTestGraph(opName); try { new GraphContext(graph); fail("GraphException expected, at least one source expected"); } catch (GraphException ge) { } graph = createTestGraph(opName); outputNode = graph.getNode("output"); outputNode.addSource(new NodeSource("dummy1", "input1")); outputNode.addSource(new NodeSource("dummy2", "input2")); outputNode.addSource(new NodeSource("dummy3", "input3")); try { new GraphContext(graph); } catch (GraphException ge) { fail("GraphException not expected, any number of sources allowed. Error: " + ge.getMessage()); } }
public void testOptSourcesOp() { final String opName = "OptSourcesOp"; Graph graph; Node outputNode; graph = createTestGraph(opName); try { new GraphContext(graph); } catch (GraphException ge) { fail("GraphException not expected, sources not checked. Error: " + ge.getMessage()); } graph = createTestGraph(opName); outputNode = graph.getNode("output"); outputNode.addSource(new NodeSource("dummy1", "input1")); outputNode.addSource(new NodeSource("dummy2", "input2")); outputNode.addSource(new NodeSource("dummy3", "input3")); try { new GraphContext(graph); } catch (GraphException ge) { fail("GraphException not expected, sources not checked. Error: " + ge.getMessage()); } }