1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package zeus.concepts;
25
26 import java.util.*;
27 import zeus.util.*;
28 import zeus.concepts.fn.*;
29
30 public class ConditionalNode extends TaskNode {
31 public ConditionalNode(String name) {
32 super(name);
33 isConditionalNode = true;
34 }
35
36 public ConditionalNode(String name, Fact[] consumed) {
37 super(name);
38 isConditionalNode = true;
39 setPreconditions(consumed);
40 setPostconditions(consumed);
41 }
42
43 public ConditionalNode(String name, Vector consumed) {
44 super(name);
45 isConditionalNode = true;
46 setPreconditions(consumed);
47 setPostconditions(consumed);
48 }
49
50 public ConditionalNode(ConditionalNode node) {
51 super(node.getName());
52 isConditionalNode = true;
53
54 String[] group;
55 group = node.getPreconditionGroups();
56 for(int i = 0; i < group.length; i++ )
57 setPreconditions(group[i],node.getPreconditions(group[i]));
58 group = node.getPostconditionGroups();
59 for(int i = 0; i < group.length; i++ )
60 setPostconditions(group[i],node.getPostconditions(group[i]));
61 }
62
63 public TaskNode duplicate(DuplicationTable table) {
64 Enumeration enum;
65 String group;
66 Vector data;
67 Fact[] xdata;
68
69 ConditionalNode xnode = new ConditionalNode(name);
70
71 enum = consumed.keys();
72 while( enum.hasMoreElements() ) {
73 group = (String)enum.nextElement();
74 data = (Vector)consumed.get(group);
75 xdata = new Fact[data.size()];
76 for(int i = 0; i < data.size(); i++ )
77 xdata[i] = ((Fact)data.elementAt(i)).duplicate(table);
78 xnode.setPreconditions(group,xdata);
79 }
80
81 enum = produced.keys();
82 while( enum.hasMoreElements() ) {
83 group = (String)enum.nextElement();
84 data = (Vector)produced.get(group);
85 xdata = new Fact[data.size()];
86 for(int i = 0; i < data.size(); i++ )
87 xdata[i] = ((Fact)data.elementAt(i)).duplicate(table);
88 xnode.setPostconditions(group,xdata);
89 }
90 return xnode;
91 }
92 }