Clover Coverage Report - Kuali Student 1.3.0-SNAPSHOT (Aggregated)
Coverage timestamp: Thu Apr 28 2011 05:03:32 EDT
../../../../../../../../../img/srcFileCovDistChart0.png 2% of files have more coverage
67   166   28   16.75
46   117   0.42   4
4     7  
1    
 
  SectionBinding       Line # 41 67 0% 28 117 0% 0.0
 
No Tests
 
1    /**
2    * Copyright 2010 The Kuali Foundation Licensed under the
3    * Educational Community License, Version 2.0 (the "License"); you may
4    * not use this file except in compliance with the License. You may
5    * obtain a copy of the License at
6    *
7    * http://www.osedu.org/licenses/ECL-2.0
8    *
9    * Unless required by applicable law or agreed to in writing,
10    * software distributed under the License is distributed on an "AS IS"
11    * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12    * or implied. See the License for the specific language governing
13    * permissions and limitations under the License.
14    */
15   
16    package org.kuali.student.common.ui.client.configurable.mvc.sections;
17   
18    import java.util.Date;
19    import java.util.HashMap;
20    import java.util.List;
21    import java.util.Map;
22   
23    import org.kuali.student.common.assembly.data.Data;
24    import org.kuali.student.common.assembly.data.QueryPath;
25    import org.kuali.student.common.ui.client.configurable.mvc.FieldDescriptor;
26    import org.kuali.student.common.ui.client.configurable.mvc.FieldDescriptorReadOnly;
27    import org.kuali.student.common.ui.client.configurable.mvc.binding.ModelWidgetBinding;
28    import org.kuali.student.common.ui.client.configurable.mvc.binding.ModelWidgetBindingSupport;
29    import org.kuali.student.common.ui.client.mvc.DataModel;
30   
31    import com.google.gwt.core.client.GWT;
32    import com.google.gwt.user.client.ui.Widget;
33   
34    /**
35    * Model widget binding for a section - calls the bindings on its fields and sub sections. Special handling
36    * for sections which can have their sections deleted by the user.
37    *
38    * @author Kuali Student Team
39    *
40    */
 
41    public class SectionBinding extends ModelWidgetBindingSupport<Section> {
42    public static SectionBinding INSTANCE = new SectionBinding();
43   
 
44  0 toggle private SectionBinding() {};
45   
46    /**
47    * @see org.kuali.student.common.ui.client.configurable.mvc.binding.ModelWidgetBindingSupport#setModelValue(java.lang.Object,
48    * org.kuali.student.common.ui.client.mvc.DataModel, java.lang.String)
49    */
 
50  0 toggle @Override
51    public void setModelValue(Section section, DataModel model, String path) {
52   
53  0 List<FieldDescriptor> fields = section.getUnnestedFields();
54  0 Map<String, Object> selectedData = null;
55  0 for (int i = 0; i < fields.size(); i++) {
56  0 if(!(fields.get(i) instanceof FieldDescriptorReadOnly)){
57  0 FieldDescriptor field = (FieldDescriptor) fields.get(i);
58   
59  0 String fieldPath = path + QueryPath.getPathSeparator() + field.getFieldKey();
60  0 fieldPath = fieldPath.trim();
61  0 if (fieldPath.startsWith(QueryPath.getPathSeparator())) {
62  0 fieldPath = fieldPath.substring(QueryPath.getPathSeparator().length());
63    }
64  0 ModelWidgetBinding binding = field.getModelWidgetBinding();
65  0 if (binding != null) {
66  0 Widget w = field.getFieldWidget();
67  0 binding.setModelValue(w, model, fieldPath);
68    } else {
69  0 GWT.log(field.getFieldKey() + " has no widget binding.", null);
70    }
71    }
72    }
73   
74  0 if(section instanceof HasSectionDeletion){
75  0 List<Section> deleted =((HasSectionDeletion) section).getDeletedSections();
76  0 for(int i =0; i < deleted.size(); i++){
77  0 Section deletedSection = deleted.get(i);
78    //get all fields and delete them>
79  0 List<FieldDescriptor> deletedFields = deletedSection.getFields();
80  0 for(int j = 0; j < deletedFields.size(); j++){
81  0 FieldDescriptor field = deletedFields.get(j);
82  0 model.remove(QueryPath.parse(field.getFieldKey()));
83    }
84    }
85    }
86   
87  0 for (Section s : section.getSections()) {
88    // data of the HasSectionDeletion section that should be in the model
89  0 if(section instanceof HasSectionDeletion){
90  0 List<Section> deleted =((HasSectionDeletion) section).getDeletedSections();
91  0 List<String> deletionParentKeys = ((HasSectionDeletion) section).getDeletionParentKeys();
92  0 if (deletionParentKeys != null) {
93  0 for (String deletionParentKey : deletionParentKeys) {
94  0 model.remove(QueryPath.parse(deletionParentKey));
95    }
96    }
97    // section is not deleted update model with the data from widget. Keep
98    // a record of the list of data so that they can be added back into the model
99  0 if(!deleted.contains(s)){
100  0 s.updateModel(model);
101  0 if (deletionParentKeys != null) {
102  0 for (String deletionParentKey : deletionParentKeys) {
103  0 selectedData = (selectedData == null)?
104    new HashMap<String, Object>() : selectedData;
105  0 selectedData.put(deletionParentKey, model.get(deletionParentKey));
106    }
107    }
108  0 } else if (selectedData != null && !selectedData.isEmpty()) {
109  0 for (String key : selectedData.keySet()) {
110  0 setValue(model, key, selectedData.get(key));
111    }
112    }
113    }
114    else{
115  0 s.updateModel(model);
116    }
117    }
118    }
119   
 
120  0 toggle private void setValue(DataModel model, String path, Object value) {
121  0 QueryPath qPath = QueryPath.parse(path);
122  0 if (value instanceof String) {
123  0 model.set(qPath, (String) value);
124  0 } else if (value instanceof Integer) {
125  0 model.set(qPath, (Integer) value);
126  0 } else if (value instanceof Long) {
127  0 model.set(qPath, (Long) value);
128  0 } else if (value instanceof Float) {
129  0 model.set(qPath, (Float) value);
130  0 } else if (value instanceof Double) {
131  0 model.set(qPath, (Double) value);
132  0 } else if (value instanceof Boolean) {
133  0 model.set(qPath, (Boolean) value);
134  0 } else if (value instanceof Date) {
135  0 model.set(qPath, (Date) value);
136  0 } else if (value instanceof Data) {
137  0 model.set(qPath, (Data) value);
138    }
139    }
140   
141    /**
142    * @see org.kuali.student.common.ui.client.configurable.mvc.binding.ModelWidgetBindingSupport#setWidgetValue(java.lang.Object,
143    * org.kuali.student.common.ui.client.mvc.DataModel, java.lang.String)
144    */
 
145  0 toggle @Override
146    public void setWidgetValue(Section section, DataModel model, String path) {
147  0 List<FieldDescriptor> fields = section.getUnnestedFields();
148   
149  0 for (int i = 0; i < fields.size(); i++) {
150  0 FieldDescriptor field = fields.get(i);
151   
152  0 ModelWidgetBinding binding = field.getModelWidgetBinding();
153  0 String fieldPath = path + QueryPath.getPathSeparator() + field.getFieldKey();
154  0 if (binding != null) {
155  0 Widget w = field.getFieldWidget();
156  0 binding.setWidgetValue(w, model, fieldPath);
157    } else {
158  0 GWT.log(field.getFieldKey() + " has no widget binding.", null);
159    }
160    }
161  0 for (Section s : section.getSections()) {
162  0 s.updateWidgetData(model);
163    }
164   
165    }
166    }