View Javadoc

1   /*
2    * Copyright 2009 The Kuali Foundation Licensed under the Educational Community License, Version 1.0 (the "License"); you may
3    * not use this file except in compliance with the License. You may obtain a copy of the License at
4    * http://www.opensource.org/licenses/ecl1.php Unless required by applicable law or agreed to in writing, software
5    * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
6    * express or implied. See the License for the specific language governing permissions and limitations under the License.
7    */
8   package org.kuali.student.lum.course.service;
9   
10  import java.util.Date;
11  import java.util.List;
12  
13  import javax.jws.WebParam;
14  import javax.jws.WebService;
15  import javax.jws.soap.SOAPBinding;
16  
17  import org.kuali.student.common.dictionary.service.DictionaryService;
18  import org.kuali.student.common.dto.StatusInfo;
19  import org.kuali.student.common.exceptions.AlreadyExistsException;
20  import org.kuali.student.common.exceptions.CircularReferenceException;
21  import org.kuali.student.common.exceptions.CircularRelationshipException;
22  import org.kuali.student.common.exceptions.DataValidationErrorException;
23  import org.kuali.student.common.exceptions.DependentObjectsExistException;
24  import org.kuali.student.common.exceptions.DoesNotExistException;
25  import org.kuali.student.common.exceptions.IllegalVersionSequencingException;
26  import org.kuali.student.common.exceptions.InvalidParameterException;
27  import org.kuali.student.common.exceptions.MissingParameterException;
28  import org.kuali.student.common.exceptions.OperationFailedException;
29  import org.kuali.student.common.exceptions.PermissionDeniedException;
30  import org.kuali.student.common.exceptions.UnsupportedActionException;
31  import org.kuali.student.common.exceptions.VersionMismatchException;
32  import org.kuali.student.common.validation.dto.ValidationResultInfo;
33  import org.kuali.student.common.versionmanagement.service.VersionManagementService;
34  import org.kuali.student.core.statement.dto.StatementTreeViewInfo;
35  import org.kuali.student.lum.course.dto.ActivityInfo;
36  import org.kuali.student.lum.course.dto.CourseInfo;
37  import org.kuali.student.lum.course.dto.FormatInfo;
38  import org.kuali.student.lum.course.dto.LoDisplayInfo;
39  
40  /**
41   * @Author KSContractMojo
42   * @Author Kamal
43   * @Since Tue May 18 11:30:50 PDT 2010
44   * @See <a href="https://test.kuali.org/confluence/display/KULSTU/Course+Service">CourseService</>
45   */
46  @WebService(name = "CourseService", targetNamespace = CourseServiceConstants.COURSE_NAMESPACE)
47  @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
48  public interface CourseService extends DictionaryService, VersionManagementService {
49      /**
50       * Retrieves a Course
51       *
52       * @param courseId
53       *            Unique Id of the Course. Maps to cluId
54       * @return the created course
55       * @throws DoesNotExistException
56       *             Course does not exist
57       * @throws InvalidParameterException
58       *             invalid course
59       * @throws MissingParameterException
60       *             missing Course
61       * @throws OperationFailedException
62       *             unable to complete request
63       * @throws PermissionDeniedException
64       *             authorization failure
65       */
66      public CourseInfo getCourse(@WebParam(name = "courseId") String courseId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
67  
68      /**
69       * Retrieves the formats for a Course.
70       *
71       * @param courseId
72       *            Unique Id of the Course. Maps to cluId
73       * @return a list of format info Structures
74       * @throws DoesNotExistException
75       *             Course does not exist
76       * @throws InvalidParameterException
77       *             invalid courseId
78       * @throws MissingParameterException
79       *             invalid courseId
80       * @throws OperationFailedException
81       *             unable to complete request
82       * @throws PermissionDeniedException
83       *             authorization failure
84       */
85      public List<FormatInfo> getCourseFormats(@WebParam(name = "courseId") String courseId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
86  
87      /**
88       * Retrieves the Activities for a Course.
89       *
90       * @param formatId
91       *            Unique Id of the Format. Maps to cluId
92       * @return a list of activity info Structures
93       * @throws DoesNotExistException
94       *             Format does not exist
95       * @throws InvalidParameterException
96       *             invalid format
97       * @throws MissingParameterException
98       *             missing Format
99       * @throws OperationFailedException
100      *             unable to complete request
101      * @throws PermissionDeniedException
102      *             authorization failure
103      */
104     public List<ActivityInfo> getCourseActivities(@WebParam(name = "formatId") String formatId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
105 
106     /**
107      * Retrieves the Los for a Course.
108      *
109      * @param courseId
110      *            Unique Id of the Course. Maps to cluId
111      * @return a list of LoDisplay info Structures
112      * @throws DoesNotExistException
113      *             Course does not exist
114      * @throws InvalidParameterException
115      *             invalid courseId
116      * @throws MissingParameterException
117      *             invalid courseId
118      * @throws OperationFailedException
119      *             unable to complete request
120      * @throws PermissionDeniedException
121      *             authorization failure
122      */
123     public List<LoDisplayInfo> getCourseLos(@WebParam(name = "courseId") String courseId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
124 
125     /**
126      * Retrieves the Statements of a Course.
127      *
128      * @param courseId
129      *            Unique Id of the Course. Maps to cluId
130      * @param nlUsageTypeKey Natural language usage type key (context)
131      * @param language Translation language e.g en, es, gr
132      * @return a list of Statementree Structures
133      * @throws DoesNotExistException
134      *             Course does not exist
135      * @throws InvalidParameterException
136      *             invalid courseId
137      * @throws MissingParameterException
138      *             invalid courseId
139      * @throws OperationFailedException
140      *             unable to complete request
141      * @throws PermissionDeniedException
142      *             authorization failure
143      */
144     public List<StatementTreeViewInfo> getCourseStatements(@WebParam(name = "courseId") String courseId, @WebParam(name="nlUsageTypeKey")String nlUsageTypeKey, @WebParam(name="language")String language) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
145 
146     /**
147      * Creates a Course
148      *
149      * @param courseInfo
150      *            courseInfo
151      * @return the created course
152      * @throws AlreadyExistsException
153      *             The Course already exists
154      * @throws DataValidationErrorException
155      *             One or more values invalid for this operation
156      * @throws InvalidParameterException
157      *             invalid course
158      * @throws MissingParameterException
159      *             missing Course
160      * @throws OperationFailedException
161      *             unable to complete request
162      * @throws PermissionDeniedException
163      *             authorization failure
164      * @throws VersionMismatchException
165      * @throws DependentObjectsExistException
166      * @throws CircularRelationshipException
167      * @throws DoesNotExistException
168      * @throws UnsupportedActionException
169      */
170     public CourseInfo createCourse(@WebParam(name = "courseInfo") CourseInfo courseInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException, DoesNotExistException, CircularRelationshipException, DependentObjectsExistException, UnsupportedActionException;
171 
172     /**
173      * Updates a Course.
174      *
175      * @param courseInfo
176      *            courseInfo
177      * @return updated Course
178      * @throws DataValidationErrorException
179      *             One or more values invalid for this operation
180      * @throws DoesNotExistException
181      *             course not found
182      * @throws InvalidParameterException
183      *             invalid course
184      * @throws MissingParameterException
185      *             missing course
186      * @throws VersionMismatchException
187      *             The action was attempted on an out of date version.
188      * @throws OperationFailedException
189      *             unable to complete request
190      * @throws PermissionDeniedException
191      *             authorization failure
192      * @throws DependentObjectsExistException
193      * @throws CircularRelationshipException
194      * @throws AlreadyExistsException
195      * @throws UnsupportedActionException
196      * @throws CircularReferenceException
197      * @throws UnsupportedOperationException
198      */
199     public CourseInfo updateCourse(@WebParam(name = "courseInfo") CourseInfo courseInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException, AlreadyExistsException, CircularRelationshipException, DependentObjectsExistException, UnsupportedActionException, UnsupportedOperationException, CircularReferenceException;
200 
201     /**
202      * Deletes a Course.
203      *
204      * @param courseId
205      *            identifier for Course.Maps to cluId
206      * @return status of the operation (success or failure)
207      * @throws DoesNotExistException
208      *             Course does not exist
209      * @throws InvalidParameterException
210      *             invalid courseId
211      * @throws MissingParameterException
212      *             invalid courseId
213      * @throws OperationFailedException
214      *             unable to complete request
215      * @throws PermissionDeniedException
216      *             authorization failure
217      * @throws VersionMismatchException
218      * @throws DependentObjectsExistException
219      * @throws CircularRelationshipException
220      * @throws AlreadyExistsException
221      * @throws DataValidationErrorException
222      * @throws UnsupportedActionException
223      * @throws CircularReferenceException
224      * @throws UnsupportedOperationException
225      */
226     public StatusInfo deleteCourse(@WebParam(name = "courseId") String courseId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException, DataValidationErrorException, AlreadyExistsException, CircularRelationshipException, DependentObjectsExistException, UnsupportedActionException, UnsupportedOperationException, CircularReferenceException;
227 
228     /**
229      * Creates the Statement for a Course.
230      *
231      * @param courseId
232      *            Unique Id of the Course. Maps to cluId
233      * @param statementTreeViewInfoList
234      *            a Statementree Structures
235      * @return created Statementree Structures
236      * @throws DoesNotExistException
237      *             Course does not exist
238      * @throws InvalidParameterException
239      *             invalid courseId
240      * @throws MissingParameterException
241      *             invalid courseId
242      * @throws OperationFailedException
243      *             unable to complete request
244      * @throws PermissionDeniedException
245      *             authorization failure
246      * @throws DataValidationErrorException
247      */
248     public StatementTreeViewInfo createCourseStatement(@WebParam(name = "courseId") String courseId, @WebParam(name = "statementTreeViewInfo") StatementTreeViewInfo statementTreeViewInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, DataValidationErrorException;
249 
250     /**
251      * Updates the Statement for a Course.
252      *
253      * @param courseId
254      *            Unique Id of the Course. Maps to cluId
255      * @param statementTreeViewInfoList
256      *            a Statementree Structures
257      * @return updated Statementree Structures
258      * @throws DoesNotExistException
259      *             Course does not exist
260      * @throws InvalidParameterException
261      *             invalid courseId
262      * @throws MissingParameterException
263      *             invalid courseId
264      * @throws OperationFailedException
265      *             unable to complete request
266      * @throws PermissionDeniedException
267      *             authorization failure
268      * @throws VersionMismatchException
269      * @throws CircularReferenceException
270      * @throws DataValidationErrorException
271      */
272     public StatementTreeViewInfo updateCourseStatement(@WebParam(name = "courseId") String courseId, @WebParam(name = "statementTreeViewInfo") StatementTreeViewInfo statementTreeViewInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, DataValidationErrorException, CircularReferenceException, VersionMismatchException;
273 
274     /**
275      * Delete the Statement for a Course.
276      *
277      * @param courseId
278      *            Unique Id of the Course. Maps to cluId
279      * @param statementTreeViewInfoList
280      *            a Statementree Structures
281      * @return status of the operation (success or failure)
282      * @throws DoesNotExistException
283      *             Course does not exist
284      * @throws InvalidParameterException
285      *             invalid courseId
286      * @throws MissingParameterException
287      *             invalid courseId
288      * @throws OperationFailedException
289      *             unable to complete request
290      * @throws PermissionDeniedException
291      *             authorization failure
292      */
293     public StatusInfo deleteCourseStatement(@WebParam(name = "courseId") String courseId, @WebParam(name = "statementTreeViewInfo") StatementTreeViewInfo statementTreeViewInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
294 
295 
296     /**
297      * Validates a course based on its dictionary
298      *
299      * @param validationType
300      *            identifier of the extent of validation
301      * @param courseInfo
302      *            Course to be validated
303      * @return results from performing the validation
304      * @throws DoesNotExistException
305      *             Course does not exist
306      * @throws InvalidParameterException
307      *             invalid courseId
308      * @throws MissingParameterException
309      *             invalid courseId
310      * @throws OperationFailedException
311      *             unable to complete request
312      */
313     public List<ValidationResultInfo> validateCourse(String validationType, CourseInfo courseInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException;
314 
315 
316     /**
317      * Validates the Statement for a Course.
318      *
319      * @param courseId
320      *            Unique Id of the Course. Maps to cluId
321      * @param statementTreeViewInfoList
322      *            a Statementree Structures
323      * @return results from performing the validation
324      * @throws DoesNotExistException
325      *             Course or StementTreeView does not exist
326      * @throws InvalidParameterException
327      *             invalid courseId or stratement tree view Id
328      * @throws MissingParameterException
329      *             invalid courseId or statement tree view Id
330      * @throws OperationFailedException
331      *             unable to complete request
332      */
333 	public List<ValidationResultInfo> validateCourseStatement(@WebParam(name = "courseId") String courseId, @WebParam(name = "statementTreeViewInfo") StatementTreeViewInfo statementTreeViewInfo)  throws InvalidParameterException, MissingParameterException, OperationFailedException;
334 
335 
336     /**
337      * Creates a new Course version based on the current course
338      * @param courseId identifier for the Course to be versioned
339      * @param versionComment comment for the current version
340      * @return the new versioned Course information
341      * @throws DataValidationErrorException One or more values invalid for this operation
342      * @throws DoesNotExistException courseId not found
343      * @throws InvalidParameterException invalid courseId
344      * @throws MissingParameterException missing courseId
345      * @throws OperationFailedException unable to complete request
346      * @throws PermissionDeniedException authorization failure
347      * @throws VersionMismatchException The action was attempted on an out of date version
348      */
349     public CourseInfo createNewCourseVersion(@WebParam(name="courseId")String courseId, @WebParam(name="versionComment")String versionComment) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
350 
351 
352     /**
353      * Sets a specific version of the Course as current. The sequence number must be greater than the existing current Course version.
354      * This will truncate the current version's end date to the currentVersionStart param.
355      * If a Course exists which is set to become current in the future, that course's currentVersionStart and CurrentVersionEnd will be nullified.
356      * The currentVersionStart must be in the future to prevent changing historic data.
357      * @param courseVersionId Version Specific Id of the Course
358      * @param currentVersionStart Date when this course becomes current. Must be in the future and be after the most current course's start date.
359      * @return status of the operation
360      * @throws DoesNotExistException courseVersionId not found
361      * @throws InvalidParameterException invalid courseVersionId, previousState, newState
362      * @throws MissingParameterException missing courseVersionId, previousState, newState
363      * @throws IllegalVersionSequencingException a Course with higher sequence number from the one provided is marked current
364      * @throws OperationFailedException unable to complete request
365      * @throws PermissionDeniedException authorization failure
366      */
367     public StatusInfo setCurrentCourseVersion(@WebParam(name="courseVersionId")String courseVersionId, @WebParam(name="currentVersionStart")Date currentVersionStart) throws DoesNotExistException, InvalidParameterException, MissingParameterException, IllegalVersionSequencingException, OperationFailedException, PermissionDeniedException;
368 
369 }