4154d338a60d415372f5fa679dc58f49647bb562
[mir.git] / source / mir / producer / CompositeProducerNode.java
1 package mir.producer;
2
3 import java.util.*;
4 import java.io.*;
5
6 public class CompositeProducerNode implements ProducerNode {
7   private List subNodes;
8
9   public CompositeProducerNode() {
10     subNodes = new Vector();
11   }
12
13   public CompositeProducerNode(ProducerNode[] aSubNodes) {
14     this();
15
16     int i;
17
18     for (i=0; i<aSubNodes.length; i++) {
19       addSubNode(aSubNodes[i]);
20     }
21   }
22
23   public void addSubNode(ProducerNode aSubNode) {
24     subNodes.add(aSubNode);
25   }
26
27   public void produce(Map aValueSet, String aVerb, PrintWriter aLogger) throws ProducerFailure {
28     Iterator i = subNodes.iterator();
29
30     while (i.hasNext())
31       ((ProducerNode) i.next()).produce(aValueSet, aVerb, aLogger);
32   }
33
34   public Set buildVerbSet() {
35     Iterator i = subNodes.iterator();
36     Set result = new HashSet();
37
38     while (i.hasNext())
39       result.addAll(((ProducerNode) i.next()).buildVerbSet());
40
41     return result;
42   }
43 }