if (iss.isEmpty()) return 0; IterationStrategyTopNode iterationStrategyTopNode = iss.get(0); Integer depth = getIterationDepth(iterationStrategyTopNode, inputDepths); if (depth == null) return null; IterationStrategyTopNode previousNode = iterationStrategyTopNode; for (int index = 1; index < iss.size(); index++) { iterationStrategyTopNode = iss.get(index); Integer nodeDepth = getIterationDepth(iterationStrategyTopNode, stagedInputDepths);
protected IterationStrategyStack parseIterationStrategyStack( org.apache.taverna.scufl2.xml.t2flow.jaxb.IterationStrategyStack originalStack) throws ReaderException { IterationStrategyStack newStack = new IterationStrategyStack(); for (TopIterationNode strategy : originalStack.getIteration() .getStrategy()) { IterationNode topNode = strategy.getCross(); if (topNode == null) topNode = strategy.getDot(); if (topNode == null) continue; IterationNodeParent parent = (IterationNodeParent) topNode; if (parent.getCrossOrDotOrPort().isEmpty()) continue; try { newStack.add((IterationStrategyTopNode) parseIterationStrategyNode(topNode)); } catch (ReaderException e) { if (isStrict()) throw e; logger.warning(e.getMessage()); } } return newStack; }
/** * Sets the <code>IterationStrategyStack</code>. * * @param iterationStrategyStack * the <code>IterationStrategyStack</code>. Can be * <code>null</code> */ public void setIterationStrategyStack( IterationStrategyStack iterationStrategyStack) { this.iterationStrategyStack = iterationStrategyStack; if (iterationStrategyStack != null) iterationStrategyStack.setParent(this); }
stack.remove(this); } else if (parent instanceof DotProduct || parent instanceof CrossProduct) { if (parent instanceof IterationStrategyStack) { IterationStrategyStack stack = (IterationStrategyStack) parent; if (!stack.contains(this)) stack.add(this); } else if (parent instanceof DotProduct || parent instanceof CrossProduct) {
@Test public void testInvalidIterationStrategyStack() { Processor p = new Processor(); IterationStrategyStack iss = new IterationStrategyStack(); iss.setParent(p); pNode1.setInputProcessorPort(p1); cp.add(pNode1); iss.add(cp); pNode2.setInputProcessorPort(p2); dp.add(pNode2); iss.add(dp);
@Test public void simpleCrossProduct() throws Exception { assertEquals(1, coloursLisr.getIterationStrategyStack().size()); IterationStrategyTopNode top = coloursLisr.getIterationStrategyStack().get(0); assertTrue(top instanceof CrossProduct); assertEquals(1, top.size()); IterationStrategyNode node = top.get(0); assertTrue(node instanceof PortNode); PortNode portNode = (PortNode) node; assertEquals(0, portNode.getDesiredDepth().intValue()); assertEquals(coloursLisr.getInputPorts().getByName("string"), portNode.getInputProcessorPort()); }
@Test public void resolveProcessorIterationStrategyRoot() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); assertSame(hello.getIterationStrategyStack().get(0), uriTools.resolveUri(HELLO_URI.resolve("iterationstrategy/0/"), wfBundle)); }
protected void parseIterationStrategyStack(IterationStrategyStack original) throws ReaderException { org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyStack iterationStrategyStack = new org.apache.taverna.scufl2.api.iterationstrategy.IterationStrategyStack(); iterationStrategyStack.setParent(getParserState().getCurrent( Processor.class)); mapBean(getParserState().getCurrentBase().resolve(original.getAbout()), iterationStrategyStack); if (original.getIterationStrategies() != null) { getParserState().push(iterationStrategyStack); try { parseCrossDotOrPortNodeList(original.getIterationStrategies() .getDotProductOrCrossProduct()); } finally { getParserState().pop(); } } }
@Test public void iterationStackEqualIfEmpty() throws Exception { IterationStrategyStack itStack1 = new IterationStrategyStack(); IterationStrategyStack itStack2 = new IterationStrategyStack(); assertEquals(itStack1, itStack2); }
@Test public void iterationStrategyWait4Me() throws Exception { Processor wait4me = workflowBundle.getMainWorkflow().getProcessors() .getByName("wait4me"); assertEquals(0, wait4me.getIterationStrategyStack().size()); }
@Override public boolean accept(Visitor visitor) { if (visitor.visitEnter(this)) { List<Iterable<? extends WorkflowBean>> children = new ArrayList<>(); children.add(getInputPorts()); children.add(getOutputPorts()); outer: for (Iterable<? extends WorkflowBean> it : children) for (WorkflowBean bean : it) if (!bean.accept(visitor)) break outer; if (getIterationStrategyStack() != null) getIterationStrategyStack().accept(visitor); } return visitor.visitLeave(this); }
@Test public void testValidIterationStrategyStack() { Processor p = new Processor(); IterationStrategyStack iss = new IterationStrategyStack(); iss.setParent(p); pNode1.setInputProcessorPort(p1); cp.add(pNode1); iss.add(cp); dp.add(pNode2); dp.add(pNode3); iss.add(dp);
@Test public void iterationStrategy() throws Exception { Processor hello = workflowBundle.getMainWorkflow().getProcessors() .getByName("Hello"); assertEquals(1, hello.getIterationStrategyStack().size()); IterationStrategyTopNode iterationStrategyTopNode = hello .getIterationStrategyStack().get(0); assertTrue(iterationStrategyTopNode instanceof CrossProduct); CrossProduct cross = (CrossProduct) iterationStrategyTopNode; assertEquals(1, cross.size()); PortNode portNode = (PortNode) cross.get(0); assertEquals(hello.getInputPorts().getByName("name"), portNode.getInputProcessorPort()); assertEquals(0, portNode.getDesiredDepth().intValue()); }
@Test public void resolveProcessorIterationStrategy() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); assertSame(hello.getIterationStrategyStack().get(0), uriTools.resolveUri( HELLO_URI.resolve("iterationstrategy/0/"), wfBundle)); }
@Test public void iterationStackNotEqualToCrossProduct() throws Exception { IterationStrategyStack itStack = new IterationStrategyStack(); CrossProduct crossProd = new CrossProduct(); assertNotEquals(itStack, crossProd); }
@Test public void testInvalidAtTopIterationStrategyTopNode() { Processor p = new Processor(); IterationStrategyStack iss = new IterationStrategyStack(); iss.setParent(p); duplicateNode.setInputProcessorPort(p1); cp.add(duplicateNode); iss.add(cp);
@Test public void testStagedCombinationOfDot1() { Processor p = new Processor(); IterationStrategyStack iss = new IterationStrategyStack(p); iss.add(getDot(1, 1)); iss.add(getDot(0, 0)); StructuralValidator sv = new StructuralValidator(); sv.getValidatorState().setProcessor(p); Map<InputProcessorPort, Integer> tempDepths = new HashMap<InputProcessorPort, Integer>(); tempDepths.put(a,2); tempDepths.put(b,2); assertEquals(Integer.valueOf(2), sv.calculateResultWrappingDepth(tempDepths)); }
@Test public void simpleDot() throws Exception { assertEquals(1, concat.getIterationStrategyStack().size()); IterationStrategyTopNode top = concat.getIterationStrategyStack().get(0); assertTrue(top instanceof DotProduct); assertEquals(2, top.size()); IterationStrategyNode node1 = top.get(0); assertTrue(node1 instanceof PortNode); PortNode portNode1 = (PortNode) node1; assertEquals(0, portNode1.getDesiredDepth().intValue()); assertEquals(concat.getInputPorts().getByName("string1"), portNode1.getInputProcessorPort()); IterationStrategyNode node2 = top.get(1); assertTrue(node2 instanceof PortNode); PortNode portNode2 = (PortNode) node2; assertEquals(0, portNode2.getDesiredDepth().intValue()); assertEquals(concat.getInputPorts().getByName("string2"), portNode2.getInputProcessorPort()); assertEquals(concat.getInputPorts().getByName("string2"), portNode2.getInputProcessorPort()); }
@Test public void uriForIterationStrategyRoot() throws Exception { Processor hello = wfBundle.getMainWorkflow().getProcessors() .getByName("Hello"); URI uri = uriTools.uriForBean(hello.getIterationStrategyStack().get(0)); assertEquals(HELLO_URI + "iterationstrategy/0/", uri.toASCIIString()); }