1 package org.kuali.student.common.messagebuilder.impl;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.kuali.student.common.messagebuilder.MessageTreeBuilder;
7 import org.kuali.student.common.messagebuilder.booleanmessage.ast.BooleanNode;
8 import org.kuali.student.common.messagebuilder.impl.exceptions.MessageBuilderException;
9
10
11
12
13
14 public class SuccessFailureMessageBuilder implements MessageTreeBuilder {
15
16 private BooleanOperators booleanOperators;
17 private SuccessMessageBuilder successMessageBuilder;
18 private FailureMessageBuilder failureMessageBuilder;
19
20
21
22
23
24
25
26 public SuccessFailureMessageBuilder(String andOperator, String orOperator) {
27 this.booleanOperators = new BooleanOperators(andOperator, orOperator);
28 this.successMessageBuilder = new SuccessMessageBuilder(this.booleanOperators);
29 this.failureMessageBuilder = new FailureMessageBuilder(this.booleanOperators);
30 }
31
32
33
34
35
36
37 public SuccessFailureMessageBuilder(BooleanOperators bo) {
38 this.booleanOperators = bo;
39 this.successMessageBuilder = new SuccessMessageBuilder(this.booleanOperators);
40 this.failureMessageBuilder = new FailureMessageBuilder(this.booleanOperators);
41 }
42
43
44
45
46
47
48
49 public String buildMessage(List<BooleanNode> nodeList) {
50
51 List<BooleanNode> rootNodeList = new ArrayList<BooleanNode>();
52 for(BooleanNode node : nodeList) {
53 if(node.getParent() == null) {
54 rootNodeList.add(node);
55 }
56 buildMessage(node);
57 }
58 if(rootNodeList.size() > 1) {
59 throw new MessageBuilderException("Node list contains more than one root node: " + rootNodeList);
60 }
61 return rootNodeList.get(0).getNodeMessage();
62 }
63
64
65
66
67
68
69
70 private void buildMessage(final BooleanNode node) {
71 this.successMessageBuilder.buildSuccessMessage(node);
72 this.failureMessageBuilder.buildFailureMessage(node);
73 }
74 }