Coverage Report - org.kuali.student.common.ui.client.configurable.mvc.binding.ListToTextBinding
 
Classes in this File Line Coverage Branch Coverage Complexity
ListToTextBinding
0%
0/34
0%
0/14
2
 
 1  
 package org.kuali.student.common.ui.client.configurable.mvc.binding;
 2  
 
 3  
 import java.util.Iterator;
 4  
 
 5  
 import org.kuali.student.common.assembly.data.Data;
 6  
 import org.kuali.student.common.assembly.data.Data.Property;
 7  
 import org.kuali.student.common.ui.client.mvc.DataModel;
 8  
 
 9  
 import com.google.gwt.core.client.GWT;
 10  
 import com.google.gwt.user.client.ui.HasText;
 11  
 
 12  
 /**
 13  
  * Special model widget binding for displaying a list of data objects in a comma separated string list.
 14  
  * If the data object in the list is not a string, the innerObjectKey (that is a string value in the object)
 15  
  * can be set to be used instead.
 16  
  * <br>This is a read only binding, it does not translate back to the model.
 17  
  * 
 18  
  * @author Kuali Student Team
 19  
  *
 20  
  */
 21  0
 public class ListToTextBinding implements ModelWidgetBinding<HasText> {
 22  
         
 23  
         private String innerObjectKey;
 24  
         
 25  0
         public ListToTextBinding(String innerObjectKey) {
 26  0
                 this.innerObjectKey = innerObjectKey;
 27  0
         }
 28  
         
 29  0
         public ListToTextBinding() {
 30  0
         }
 31  
 
 32  
         @Override
 33  
         public void setModelValue(HasText widget, DataModel model, String path) {
 34  0
                 GWT.log("ListToTextBindings cannot be used for setting into the model!");
 35  0
         }
 36  
 
 37  
         @Override
 38  
         public void setWidgetValue(HasText widget, DataModel model, String path) {
 39  0
                 widget.setText(getStringList(model, path));
 40  0
         }
 41  
         
 42  
         public String getStringList(DataModel model, String path) {
 43  0
                 Data data = model.get(path);
 44  0
                 String resultString = "";
 45  0
                 if(data!=null){
 46  0
                         Iterator<Property> iter = data.realPropertyIterator();
 47  
                         
 48  0
                         while(iter.hasNext()){
 49  0
                                 Property prop = iter.next();
 50  0
                                 if (prop.getKey() instanceof Integer){
 51  0
                         Integer number = (Integer)prop.getKey();
 52  0
                         Object value = data.get(number);
 53  0
                         if(value instanceof Data){
 54  0
                                 DataModel m = new DataModel();
 55  0
                                 m.setRoot((Data)value);
 56  0
                                 Object innerObject = m.get(innerObjectKey);
 57  
                         // KSLAB-1790 - sometime runtimeData isn't there; no idea why
 58  0
                         resultString = resultString + (null != innerObject ?
 59  
                                                         innerObject.toString() :
 60  
                                                         "<no value found for item #" +
 61  
                                                             number.toString() +
 62  
                                                             " in list of " +
 63  
                                                             (path.startsWith("/") ? path.substring(1) : path) + ">") + ", ";
 64  0
                         }
 65  
                         else{
 66  0
                                 resultString = resultString + value.toString() + ", ";
 67  
                         }
 68  
                 }
 69  0
                         }
 70  
                 }
 71  0
                 if(!resultString.isEmpty()){
 72  0
                         resultString = resultString.trim();
 73  0
                         resultString = resultString.substring(0, resultString.length() - 1);
 74  
                 }
 75  0
                 return resultString;
 76  
         }
 77  
 
 78  
         /**
 79  
          * If the expected list is a list of data, which value is the value to use in this
 80  
          * text list (by key).  If this is not set, it is assumed the list is a list of simple data
 81  
          * @param innerObjectKey
 82  
          */
 83  
         public void setInnerObjectKey(String innerObjectKey) {
 84  0
                 this.innerObjectKey = innerObjectKey;
 85  0
         }
 86  
 
 87  
         public String getInnerObjectKey() {
 88  0
                 return innerObjectKey;
 89  
         }
 90  
 
 91  
 }