public void process( List<Node>[] result, Collection<EventBean[]> resultFinalRows, EventBean resultRootEvent) { List<Node> nodes = result[streamNum]; if (nodes == null) { return; } for (Node node : nodes) { Set<EventBean> events = node.getEvents(); for (EventBean theEvent : events) { processEvent(theEvent, node, resultFinalRows, resultRootEvent); } } }
public void process( List<Node>[] result, Collection<EventBean[]> resultFinalRows, EventBean resultRootEvent) { // there cannot be child nodes to compute a cartesian product if this node had no results if (resultsForStream == null) { return; } // If this node's result set consisted of a single event if (singleResultNode != null) { // If there are no child results, post a row if (!haveChildResults) { EventBean[] row = new EventBean[numStreams]; row[streamNum] = singleResultEvent; parentNode.result( row, streamNum, singleResultNode.getParentEvent(), singleResultNode, resultFinalRows, resultRootEvent); } // if there were child results we are done since they have already been posted to the parent return; } // We have multiple events for this node, generate an event row for each event not yet received // from // event rows generated by the child node. for (Node node : resultsForStream) { Set<EventBean> events = node.getEvents(); for (EventBean theEvent : events) { if (completedEvents.contains(theEvent)) { continue; } processEvent(theEvent, node, resultFinalRows, resultRootEvent); } } }
public void init(List<Node>[] result) { resultsForStream = result[streamNum]; singleResultNode = null; singleResultEvent = null; haveChildResults = false; if (resultsForStream != null) { int numNodes = resultsForStream.size(); if (numNodes == 1) { Node node = resultsForStream.get(0); Set<EventBean> nodeEvents = node.getEvents(); // If there is a single result event (typical case) if (nodeEvents.size() == 1) { singleResultNode = node; singleResultEvent = nodeEvents.iterator().next(); } } if (singleResultNode == null) { completedEvents = new HashSet<EventBean>(); } } }