Coverage Report - org.kuali.student.common.messagebuilder.impl.SuccessFailureMessageBuilder
 
Classes in this File Line Coverage Branch Coverage Complexity
SuccessFailureMessageBuilder
76%
16/21
100%
6/6
2
 
 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  
  * This class builds the success and failure messages for 
 12  
  * boolean binary tree nodes.
 13  
  */
 14  
 public class SuccessFailureMessageBuilder implements MessageTreeBuilder {
 15  
         /** Boolean operators to use in creating the success and failure messages */
 16  
         private BooleanOperators booleanOperators;
 17  
         private SuccessMessageBuilder successMessageBuilder;
 18  
         private FailureMessageBuilder failureMessageBuilder;
 19  
 
 20  
         /**
 21  
          * Creates a success and failure message builders.
 22  
          * 
 23  
          * @param andOperator AND logical operator
 24  
          * @param orOperator OR logical operator
 25  
          */
 26  0
         public SuccessFailureMessageBuilder(String andOperator, String orOperator) {
 27  0
                 this.booleanOperators = new BooleanOperators(andOperator, orOperator);
 28  0
                 this.successMessageBuilder = new SuccessMessageBuilder(this.booleanOperators);
 29  0
                 this.failureMessageBuilder = new FailureMessageBuilder(this.booleanOperators);
 30  0
         }
 31  
 
 32  
         /**
 33  
          * Creates a success and failure message builders.
 34  
          * 
 35  
          * @param bo Boolean operators
 36  
          */
 37  22
         public SuccessFailureMessageBuilder(BooleanOperators bo) {
 38  22
                 this.booleanOperators = bo;
 39  22
                 this.successMessageBuilder = new SuccessMessageBuilder(this.booleanOperators);
 40  22
                 this.failureMessageBuilder = new FailureMessageBuilder(this.booleanOperators);
 41  22
         }
 42  
 
 43  
         /**
 44  
          * Builds and sets the success and failure message for each of the list of 
 45  
          * boolean nodes (binary tree nodes).
 46  
          * 
 47  
          * @param nodeList List of boolean nodes 
 48  
          */
 49  
         public String buildMessage(List<BooleanNode> nodeList) {
 50  
                 // List must only contain one root node
 51  22
                 List<BooleanNode> rootNodeList = new ArrayList<BooleanNode>();
 52  22
                 for(BooleanNode node : nodeList) {
 53  129
                         if(node.getParent() == null) {
 54  23
                                 rootNodeList.add(node);
 55  
                         }
 56  129
                         buildMessage(node);
 57  
                 }
 58  22
                 if(rootNodeList.size() > 1) {
 59  1
                         throw new MessageBuilderException("Node list contains more than one root node: " + rootNodeList);
 60  
                 }
 61  21
                 return rootNodeList.get(0).getNodeMessage();
 62  
         }
 63  
 
 64  
         /**
 65  
          * Builds and sets the success and failure message for a boolean node 
 66  
          * (binary tree node).
 67  
          * 
 68  
          * @param node Boolean node
 69  
          */
 70  
         private void buildMessage(final BooleanNode node) {
 71  129
                 this.successMessageBuilder.buildSuccessMessage(node);
 72  129
                 this.failureMessageBuilder.buildFailureMessage(node);
 73  129
         }
 74  
 }