1
2
3
4
5 package org.kuali.student.enrollment.class2.courseoffering.service.impl;
6
7 import org.kuali.rice.core.api.criteria.QueryByCriteria;
8 import org.kuali.student.common.collection.KSCollectionUtils;
9 import org.kuali.student.common.mock.MockService;
10 import org.kuali.student.common.util.UUIDHelper;
11 import org.kuali.student.r1.common.dictionary.dto.ObjectStructureDefinition;
12 import org.kuali.student.r1.core.statement.dto.StatementTreeViewInfo;
13 import org.kuali.student.r2.common.dto.ContextInfo;
14 import org.kuali.student.r2.common.dto.StatusInfo;
15 import org.kuali.student.r2.common.dto.ValidationResultInfo;
16 import org.kuali.student.r2.common.exceptions.*;
17 import org.kuali.student.r2.core.class1.type.dto.TypeInfo;
18 import org.kuali.student.r2.core.search.dto.SearchParamInfo;
19 import org.kuali.student.r2.core.search.dto.SearchRequestInfo;
20 import org.kuali.student.r2.core.search.dto.SearchResultCellInfo;
21 import org.kuali.student.r2.core.search.dto.SearchResultInfo;
22 import org.kuali.student.r2.core.search.dto.SearchResultRowInfo;
23 import org.kuali.student.r2.core.search.service.SearchService;
24 import org.kuali.student.r2.core.versionmanagement.dto.VersionDisplayInfo;
25 import org.kuali.student.r2.core.versionmanagement.dto.VersionInfo;
26 import org.kuali.student.r2.lum.course.dto.ActivityInfo;
27 import org.kuali.student.r2.lum.course.dto.CourseInfo;
28 import org.kuali.student.r2.lum.course.dto.FormatInfo;
29 import org.kuali.student.r2.lum.course.dto.LoDisplayInfo;
30 import org.kuali.student.r2.lum.course.service.CourseService;
31 import org.kuali.student.r2.lum.util.constants.CluServiceConstants;
32
33 import javax.jws.WebParam;
34
35 import java.util.ArrayList;
36 import java.util.Arrays;
37 import java.util.Date;
38 import java.util.LinkedHashMap;
39 import java.util.List;
40 import java.util.Map;
41
42
43
44
45
46 public class CourseServiceR1MockImpl implements CourseService, MockService, SearchService {
47
48 private Map<String, CourseInfo> courses = new LinkedHashMap<String, CourseInfo>();
49
50 @Override
51 public void clear() {
52 this.courses.clear();
53 }
54
55 @Override
56 public CourseInfo createCourse(CourseInfo courseInfo, ContextInfo contextInfo)
57 throws DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException {
58
59 if (courseInfo.getId() == null) {
60 courseInfo.setId(UUIDHelper.genStringUUID());
61 }
62
63
64 for (FormatInfo format : courseInfo.getFormats()) {
65
66 if (format.getId() == null) {
67 format.setId(UUIDHelper.genStringUUID());
68 }
69
70 format.getActivities();
71
72 for (ActivityInfo activity : format.getActivities()) {
73
74 if (activity.getId() == null) {
75 activity.setId(UUIDHelper.genStringUUID());
76 }
77 }
78 }
79
80 VersionInfo version = new VersionInfo ();
81 version.setCurrentVersionStart(new Date ());
82 version.setCurrentVersionEnd(null);
83 version.setSequenceNumber(0l);
84 version.setVersionComment("initial version");
85 version.setVersionIndId(courseInfo.getId() + "ind");
86 version.setVersionedFromId(courseInfo.getId());
87 courseInfo.setVersion(version);
88 courses.put(courseInfo.getId(), courseInfo);
89 return courseInfo;
90 }
91
92 @Override
93 public StatementTreeViewInfo createCourseStatement(String courseId, StatementTreeViewInfo statementTreeViewInfo, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, DataValidationErrorException {
94 throw new UnsupportedOperationException("Not supported yet.");
95 }
96
97 @Override
98 public CourseInfo createNewCourseVersion(String courseId, String versionComment, ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException {
99 throw new UnsupportedOperationException("Not supported yet.");
100 }
101
102 @Override
103 public StatusInfo deleteCourse(String courseId, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException, DataValidationErrorException, AlreadyExistsException, CircularRelationshipException, DependentObjectsExistException, UnsupportedActionException, UnsupportedOperationException, CircularReferenceException {
104 if (!courses.containsKey(courseId)) {
105 throw new DoesNotExistException(courseId);
106 }
107 courses.remove(courseId);
108 StatusInfo status = new StatusInfo();
109 status.setSuccess(Boolean.TRUE);
110 return status;
111 }
112
113 @Override
114 public StatusInfo deleteCourseStatement(String courseId, StatementTreeViewInfo statementTreeViewInfo, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
115 throw new UnsupportedOperationException("Not supported yet.");
116 }
117
118 @Override
119 public CourseInfo getCourse(String courseId, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
120 if (!courses.containsKey(courseId)) {
121 throw new DoesNotExistException(courseId);
122 }
123 return courses.get(courseId);
124 }
125
126 @Override
127 public List<ActivityInfo> getCourseActivitiesByCourseFormat(String formatId, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
128 List<ActivityInfo> list = new ArrayList<ActivityInfo>();
129 for (CourseInfo course : this.courses.values()) {
130 for (FormatInfo format : course.getFormats()) {
131 if (format.getId().equals(formatId)) {
132 for (ActivityInfo activity : format.getActivities()) {
133 list.add(activity);
134 }
135 }
136 }
137 }
138 return list;
139 }
140
141 @Override
142 public List<FormatInfo> getCourseFormatsByCourse(String courseId, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
143 List<FormatInfo> list = new ArrayList<FormatInfo>();
144 CourseInfo course = this.getCourse(courseId, null);
145 for (FormatInfo format : course.getFormats()) {
146 list.add(format);
147 }
148 return list;
149 }
150
151 @Override
152 public List<LoDisplayInfo> getCourseLearningObjectivesByCourse(String courseId, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
153 throw new UnsupportedOperationException("Not supported yet.");
154 }
155
156 @Override
157 public List<StatementTreeViewInfo> getCourseStatements(String courseId, String nlUsageTypeKey, String language, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
158 throw new UnsupportedOperationException("Not supported yet.");
159 }
160
161 @Override
162 public StatusInfo setCurrentCourseVersion(String courseVersionId, Date currentVersionStart, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, IllegalVersionSequencingException, OperationFailedException, PermissionDeniedException {
163 throw new UnsupportedOperationException("Not supported yet.");
164 }
165
166 @Override
167 public CourseInfo updateCourse(String courseId, CourseInfo courseInfo, ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException, UnsupportedActionException, DependentObjectsExistException, AlreadyExistsException, CircularRelationshipException, CircularReferenceException, ReadOnlyException {
168 if (!courses.containsKey(courseInfo.getId())) {
169 throw new DoesNotExistException(courseInfo.getId());
170 }
171 this.courses.put(courseInfo.getId(), courseInfo);
172 return courseInfo;
173 }
174
175 @Override
176 public StatementTreeViewInfo updateCourseStatement(String courseId, String statementId, StatementTreeViewInfo statementTreeViewInfo, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, DataValidationErrorException, VersionMismatchException {
177 throw new UnsupportedOperationException("Not supported yet.");
178 }
179
180 @Override
181 public List<ValidationResultInfo> validateCourse(String validationType, CourseInfo courseInfo, ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException {
182 throw new UnsupportedOperationException("Not supported yet.");
183 }
184
185 @Override
186 public List<ValidationResultInfo> validateCourseStatement(String courseId, StatementTreeViewInfo statementTreeViewInfo, ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException {
187 throw new UnsupportedOperationException("Not supported yet.");
188 }
189
190 @Override
191 public ObjectStructureDefinition getObjectStructure(String objectTypeKey) {
192 throw new UnsupportedOperationException("Not supported yet.");
193 }
194
195 @Override
196 public List<String> getObjectTypes() {
197 throw new UnsupportedOperationException("Not supported yet.");
198 }
199
200 @Override
201 public VersionDisplayInfo getCurrentVersion(String refObjectTypeURI, String refObjectId, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
202 throw new UnsupportedOperationException("Not supported yet.");
203 }
204
205
206 @Override
207 public List<CourseInfo> getCoursesByIds(List<String> courseIds, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
208 throw new UnsupportedOperationException("Not supported yet.");
209 }
210
211 @Override
212 public List<String> searchForCourseIds(QueryByCriteria criteria, ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
213 throw new UnsupportedOperationException("Not supported yet.");
214 }
215
216 @Override
217 public List<CourseInfo> searchForCourses(QueryByCriteria criteria, ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
218 throw new UnsupportedOperationException("Not supported yet.");
219 }
220
221 public List<VersionDisplayInfo> getVersions(String refObjectTypeURI, String refObjectId, ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
222
223
224 List<VersionDisplayInfo> list = new ArrayList<VersionDisplayInfo> ();
225 for (CourseInfo info : this.courses.values()) {
226
227 if (refObjectId.equals(info.getVersion().getVersionIndId())) {
228 VersionInfo vi = info.getVersion();
229 VersionDisplayInfo vd = new VersionDisplayInfo ();
230 vd.setId(info.getId());
231 vd.setRefObjectUri(CluServiceConstants.CLU_NAMESPACE_URI);
232 vd.setVersionedFromId(vi.getVersionedFromId());
233 vd.setCurrentVersionStart(vi.getCurrentVersionStart());
234 vd.setCurrentVersionEnd(vi.getCurrentVersionEnd());
235 vd.setSequenceNumber(vi.getSequenceNumber());
236 vd.setVersionComment(vi.getVersionComment());
237 vd.setVersionIndId(vi.getVersionIndId());
238 list.add (vd);
239 }
240 }
241 return list;
242 }
243
244 static TypeInfo typeInfo;
245 static {
246 typeInfo = new TypeInfo();
247 typeInfo.setKey("lu.search.relatedTypes");
248 }
249
250 @Override
251 public List<TypeInfo> getSearchTypes(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException {
252 return Arrays.asList(typeInfo);
253 }
254
255 @Override
256 public TypeInfo getSearchType(@WebParam(name = "searchTypeKey") String searchTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException {
257 if(typeInfo.getKey().equals(searchTypeKey)){
258 return typeInfo;
259 }
260 throw new DoesNotExistException("Search Not Defined");
261 }
262
263 @Override
264 public SearchResultInfo search(SearchRequestInfo searchRequestInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws MissingParameterException, InvalidParameterException, OperationFailedException, PermissionDeniedException {
265
266 if("lu.search.relatedTypes".equals(searchRequestInfo.getSearchKey())){
267 String formatId = null;
268 for(SearchParamInfo searchParam:searchRequestInfo.getParams()){
269 if("lu.queryParam.cluId".equals(searchParam.getKey())){
270 formatId = KSCollectionUtils.getRequiredZeroElement(searchParam.getValues());
271 break;
272 }
273 }
274 if(formatId !=null){
275 for(CourseInfo course:this.courses.values()){
276 for(FormatInfo format:course.getFormats()){
277 if(format.getId().equals(formatId)){
278 SearchResultInfo searchResultInfo = new SearchResultInfo();
279 for(ActivityInfo activity:format.getActivities()){
280 SearchResultRowInfo row = new SearchResultRowInfo();
281 row.addCell("lu.resultColumn.cluType", activity.getTypeKey());
282 searchResultInfo.getRows().add(row);
283 }
284 return searchResultInfo;
285 }
286 }
287 }
288 }
289 }
290 return null;
291 }
292 }