--- /dev/null
+package mir.producer;
+
+import java.util.*;
+import java.io.*;
+
+public class CompositeProducerNode implements ProducerNode {
+ private List subNodes;
+
+ public CompositeProducerNode() {
+ subNodes = new Vector();
+ }
+
+ public CompositeProducerNode(ProducerNode[] aSubNodes) {
+ this();
+
+ int i;
+
+ for (i=0; i<aSubNodes.length; i++) {
+ addSubNode(aSubNodes[i]);
+ }
+ }
+
+ public int getNrSubNodes() {
+ return subNodes.size();
+ }
+
+ public ProducerNode getSubNode(int anIndex) {
+ return (ProducerNode) subNodes.get(anIndex);
+ }
+
+ public void addSubNode(ProducerNode aSubNode) {
+ if (aSubNode!=null)
+ subNodes.add(aSubNode);
+ }
+
+ public void clear() {
+ subNodes.clear();
+ }
+
+ public void produce(Map aValueSet, String aVerb, PrintWriter aLogger) throws ProducerFailure, ProducerExc {
+ Iterator i = subNodes.iterator();
+
+ while (i.hasNext()) {
+ ProducerNode node = (ProducerNode) i.next();
+ node.produce(aValueSet, aVerb, aLogger);
+ }
+ }
+
+ public Set buildVerbSet() {
+ Iterator i = subNodes.iterator();
+ Set result = new HashSet();
+
+ while (i.hasNext())
+ result.addAll(((ProducerNode) i.next()).buildVerbSet());
+
+ return result;
+ }
+}
\ No newline at end of file