Clover Coverage Report - Kuali Student 1.1.0-SNAPSHOT (Aggregated)
Coverage timestamp: Tue Feb 15 2011 04:04:07 EST
../../../../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
70   243   28   7.78
32   139   0.4   9
9     3.11  
1    
 
  LuContextImpl       Line # 36 70 0% 28 5 95.5% 0.954955
 
  (55)
 
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.lum.statement.config.context;
17   
18    import java.util.ArrayList;
19    import java.util.List;
20    import java.util.Map;
21   
22    import org.kuali.student.core.exceptions.OperationFailedException;
23    import org.kuali.student.core.statement.dto.ReqComponentInfo;
24    import org.kuali.student.core.versionmanagement.dto.VersionDisplayInfo;
25    import org.kuali.student.lum.lu.dto.CluInfo;
26    import org.kuali.student.lum.lu.dto.CluSetInfo;
27    import org.kuali.student.lum.lu.dto.CluSetTreeViewInfo;
28    import org.kuali.student.lum.lu.service.LuService;
29    import org.kuali.student.lum.lu.service.LuServiceConstants;
30    import org.kuali.student.lum.statement.config.context.util.NLCluSet;
31    import org.kuali.student.lum.statement.typekey.ReqComponentFieldTypes;
32   
33    /**
34    * This class creates the template context for course list types.
35    */
 
36    public class LuContextImpl extends BasicContextImpl {
37    /**
38    * Learning unit service.
39    */
40    private LuService luService;
41   
42    /**
43    * <code>clu</code> token (key) references a Clu object used in templates.
44    * e.g. 'Student must have completed all of
45    * $clu.getOfficialIdentifier().getShortName()'
46    */
47    public final static String CLU_TOKEN = "clu";
48    public final static String COURSE_CLU_TOKEN = "courseClu";
49    public final static String PROGRAM_CLU_TOKEN = "programClu";
50    public final static String TEST_CLU_TOKEN = "testClu";
51   
52    /**
53    * <code>cluSet</code> token (key) references a Clu set object
54    * used in templates.
55    * e.g. 'Student must have completed all of $cluSet.getCluSetAsCode()'
56    */
57    public final static String CLU_SET_TOKEN = "cluSet";
58    public final static String COURSE_CLU_SET_TOKEN = "courseCluSet";
59    public final static String PROGRAM_CLU_SET_TOKEN = "programCluSet";
60    public final static String TEST_CLU_SET_TOKEN = "testCluSet";
61   
62    /**
63    * Sets the LU service.
64    *
65    * @param luService LU service
66    */
 
67  7 toggle public void setLuService(LuService luService) {
68  7 this.luService = luService;
69    }
70   
71    /**
72    * Gets a CLU.
73    *
74    * @param cluId CLU id
75    * @return CLU
76    * @throws OperationFailedException If retrieving CLU fails
77    */
 
78  21 toggle public CluInfo getCluInfo(String cluId) throws OperationFailedException {
79  21 if (cluId == null) {
80  4 return null;
81    }
82  17 try {
83  17 VersionDisplayInfo versionInfo = luService.getCurrentVersion(LuServiceConstants.CLU_NAMESPACE_URI, cluId);
84  17 CluInfo clu = this.luService.getClu(versionInfo.getId());
85  17 return clu;
86    } catch(Exception e) {
87  0 throw new OperationFailedException(e.getMessage(), e);
88    }
89    }
90   
 
91  228 toggle private CluInfo getClu(ReqComponentInfo reqComponent, String key) throws OperationFailedException {
92  228 Map<String, String> map = getReqComponentFieldMap(reqComponent);
93  228 if(map.containsKey(key)) {
94  21 String cluId = map.get(key);
95  21 return getCluInfo(cluId);
96    }
97  207 return null;
98    }
99   
100    /**
101    * Gets a CLU set.
102    *
103    * @param cluSetId CLU set id
104    * @return CLU set
105    * @throws OperationFailedException If retrieving CLU set fails
106    */
 
107  53 toggle public CluSetInfo getCluSetInfo(String cluSetId) throws OperationFailedException {
108  53 if (cluSetId == null) {
109  0 return null;
110    }
111  53 try {
112  53 CluSetInfo cluSet = this.luService.getCluSetInfo(cluSetId);
113  53 return cluSet;
114    } catch(Exception e) {
115  0 throw new OperationFailedException(e.getMessage(), e);
116    }
117    }
118   
119    /**
120    * Gets the CLU set.
121    *
122    * @param cluSetId CLU set id
123    * @return CLU set
124    * @throws OperationFailedException If building a custom CLU set fails
125    */
 
126  57 toggle public NLCluSet getCluSet(String cluSetId) throws OperationFailedException {
127  57 if (cluSetId == null) {
128  4 return null;
129    }
130  53 CluSetInfo cluSet = getCluSetInfo(cluSetId);
131  53 try {
132  53 List<CluInfo> list = new ArrayList<CluInfo>();
133  53 CluSetTreeViewInfo tree = luService.getCluSetTreeView(cluSetId);
134  53 findClusInCluSet(tree, list);
135  53 return new NLCluSet(cluSet.getId(), list);
136    } catch(Exception e) {
137  0 throw new OperationFailedException(e.getMessage(), e);
138    }
139    }
140   
 
141  55 toggle private static void findClusInCluSet(CluSetTreeViewInfo tree, List<CluInfo> cluList) {
142  55 if (tree.getCluSets() != null) {
143  1 for (CluSetTreeViewInfo cluSet : tree.getCluSets()) {
144  2 findClusInCluSet(cluSet, cluList);
145    }
146    } else {
147  54 for (CluInfo clu : tree.getClus()) {
148  98 if (!containsClu(cluList, clu)) {
149  96 cluList.add(clu);
150    }
151    }
152    }
153    }
154   
 
155  98 toggle private static boolean containsClu(List<CluInfo> cluList, CluInfo clu) {
156  98 for (CluInfo clu2 : cluList) {
157  54 if (clu2.getId().equals(clu.getId())) {
158  2 return true;
159    }
160    }
161  96 return false;
162    }
163   
164    /**
165    * Gets a new CLU set from comma separated list of CLU ids.
166    *
167    * @param cluIds Comma separated list of CLU ids
168    * @return A new CLU set
169    * @throws OperationFailedException If building a custom CLU set fails
170    */
171    /*public NLCluSet getClusAsCluSet(String cluIds) throws OperationFailedException {
172    String[] cluIdArray = cluIds.split("\\s*,\\s*");
173    List<CluInfo> list = new ArrayList<CluInfo>();
174    for(String cluId : cluIdArray) {
175    CluInfo clu = getCluInfo(cluId);
176    list.add(clu);
177    }
178    return new NLCluSet(null, list);
179    }*/
180   
181    /**
182    * Gets a custom CLU set from a requirement component.
183    *
184    * @param reqComponent Requirement component
185    * @return custom CLU set
186    * @throws OperationFailedException If building a custom CLU set fails
187    */
 
188  228 toggle public NLCluSet getCluSet(ReqComponentInfo reqComponent, String key) throws OperationFailedException {
189  228 Map<String, String> map = getReqComponentFieldMap(reqComponent);
190  228 NLCluSet cluSet = null;
191  228 if(map.containsKey(key)) {
192  57 String cluSetId = map.get(key);
193  57 cluSet = getCluSet(cluSetId);
194    }
195  228 return cluSet;
196    }
197   
198    /**
199    * Creates the context map (template data) for the requirement component.
200    *
201    * @param reqComponent Requirement component
202    * @throws OperationFailedException Creating context map fails
203    */
 
204  57 toggle public Map<String, Object> createContextMap(ReqComponentInfo reqComponent) throws OperationFailedException {
205  57 Map<String, Object> contextMap = super.createContextMap(reqComponent);
206   
207  57 CluInfo clu = getClu(reqComponent, ReqComponentFieldTypes.CLU_KEY.getId());
208  57 if(clu != null) {
209  2 contextMap.put(CLU_TOKEN, clu);
210    }
211  57 CluInfo courseClu = getClu(reqComponent, ReqComponentFieldTypes.COURSE_CLU_KEY.getId());
212  57 if(courseClu != null) {
213  5 contextMap.put(COURSE_CLU_TOKEN, courseClu);
214    }
215  57 CluInfo programClu = getClu(reqComponent, ReqComponentFieldTypes.PROGRAM_CLU_KEY.getId());
216  57 if(programClu != null) {
217  8 contextMap.put(PROGRAM_CLU_TOKEN, programClu);
218    }
219  57 CluInfo testClu = getClu(reqComponent, ReqComponentFieldTypes.TEST_CLU_KEY.getId());
220  57 if(testClu != null) {
221  2 contextMap.put(TEST_CLU_TOKEN, testClu);
222    }
223   
224  57 NLCluSet cluSet = getCluSet(reqComponent, ReqComponentFieldTypes.CLUSET_KEY.getId());
225  57 if(cluSet != null) {
226  2 contextMap.put(CLU_SET_TOKEN, cluSet);
227    }
228  57 NLCluSet courseCluSet = getCluSet(reqComponent, ReqComponentFieldTypes.COURSE_CLUSET_KEY.getId());
229  57 if(courseCluSet != null) {
230  32 contextMap.put(COURSE_CLU_SET_TOKEN, courseCluSet);
231    }
232  57 NLCluSet programCluSet = getCluSet(reqComponent, ReqComponentFieldTypes.PROGRAM_CLUSET_KEY.getId());
233  57 if(programCluSet != null) {
234  15 contextMap.put(PROGRAM_CLU_SET_TOKEN, programCluSet);
235    }
236  57 NLCluSet testCluSet = getCluSet(reqComponent, ReqComponentFieldTypes.TEST_CLUSET_KEY.getId());
237  57 if(testCluSet != null) {
238  4 contextMap.put(TEST_CLU_SET_TOKEN, testCluSet);
239    }
240   
241  57 return contextMap;
242    }
243    }