merge of localization branch into HEAD. mh and zap
[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 int getNrSubNodes() {
24     return subNodes.size();
25   }
26
27   public ProducerNode getSubNode(int anIndex) {
28     return (ProducerNode) subNodes.get(anIndex);
29   }
30
31   public void addSubNode(ProducerNode aSubNode) {
32     if (aSubNode!=null)
33       subNodes.add(aSubNode);
34   }
35
36   public void clear() {
37     subNodes.clear();
38   }
39
40   public void produce(Map aValueSet, String aVerb, PrintWriter aLogger) throws ProducerFailure, ProducerExc {
41     Iterator i = subNodes.iterator();
42
43     while (i.hasNext()) {
44       ProducerNode node = (ProducerNode) i.next();
45       node.produce(aValueSet, aVerb, aLogger);
46     }
47   }
48
49   public Set buildVerbSet() {
50     Iterator i = subNodes.iterator();
51     Set result = new HashSet();
52
53     while (i.hasNext())
54       result.addAll(((ProducerNode) i.next()).buildVerbSet());
55
56     return result;
57   }
58 }