View Javadoc

1   /*
2    * Copyright 2009 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 1.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl1.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.student.lum.program.service;
17  
18  import java.util.Date;
19  import java.util.List;
20  
21  import javax.jws.WebParam;
22  import javax.jws.WebService;
23  import javax.jws.soap.SOAPBinding;
24  
25  import org.kuali.student.common.dictionary.service.DictionaryService;
26  import org.kuali.student.common.dto.StatusInfo;
27  import org.kuali.student.common.exceptions.AlreadyExistsException;
28  import org.kuali.student.common.exceptions.DataValidationErrorException;
29  import org.kuali.student.common.exceptions.DoesNotExistException;
30  import org.kuali.student.common.exceptions.IllegalVersionSequencingException;
31  import org.kuali.student.common.exceptions.InvalidParameterException;
32  import org.kuali.student.common.exceptions.MissingParameterException;
33  import org.kuali.student.common.exceptions.OperationFailedException;
34  import org.kuali.student.common.exceptions.PermissionDeniedException;
35  import org.kuali.student.common.exceptions.VersionMismatchException;
36  import org.kuali.student.common.search.service.SearchService;
37  import org.kuali.student.common.validation.dto.ValidationResultInfo;
38  import org.kuali.student.common.versionmanagement.service.VersionManagementService;
39  import org.kuali.student.lum.lu.dto.LuTypeInfo;
40  import org.kuali.student.lum.program.dto.CoreProgramInfo;
41  import org.kuali.student.lum.program.dto.CredentialProgramInfo;
42  import org.kuali.student.lum.program.dto.HonorsProgramInfo;
43  import org.kuali.student.lum.program.dto.MajorDisciplineInfo;
44  import org.kuali.student.lum.program.dto.MinorDisciplineInfo;
45  import org.kuali.student.lum.program.dto.ProgramRequirementInfo;
46  import org.kuali.student.lum.program.dto.ProgramVariationInfo;
47  
48  /**
49   *
50   * @Author KSContractMojo
51   * @Author Li Pan
52   * @Since Wed Jun 30 14:55:41 PDT 2010
53   * @See <a href="https://test.kuali.org/confluence/display/KULSTU/Program+Service">ProgramService</>
54   *
55   */
56  @WebService(name = "ProgramService", targetNamespace = ProgramServiceConstants.PROGRAM_NAMESPACE) // TODO CHECK THESE VALUES
57  @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
58  public interface ProgramService extends DictionaryService, SearchService, VersionManagementService{ 
59      /** 
60       * Retrieves the list of credential program types
61       * @return list of credential program type information
62       * @throws OperationFailedException unable to complete request
63  	 */
64      public List<LuTypeInfo> getCredentialProgramTypes() throws OperationFailedException;
65  
66      /** 
67       * Retrieves information about a credential program type
68       * @param credentialProgramTypeKey Key of the Credential Program Type
69       * @return information about a Credential Program Type
70       * @throws DoesNotExistException credentialProgramType not found
71       * @throws InvalidParameterException invalid credentialProgramType
72       * @throws MissingParameterException missing credentialProgramType
73       * @throws OperationFailedException unable to complete request
74  	 */
75      public LuTypeInfo getCredentialProgramType(@WebParam(name="credentialProgramTypeKey")String credentialProgramTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
76  
77      /** 
78       * Retrieves a CredentialProgram
79       * @param credentialProgramId Unique Id of the CredentialProgram. Maps to cluId
80       * @return the created Credential Program
81       * @throws DoesNotExistException CredentialProgram does not exist
82       * @throws InvalidParameterException invalid Credential Program
83       * @throws MissingParameterException missing Credential Program
84       * @throws OperationFailedException unable to complete request
85       * @throws PermissionDeniedException authorization failure
86  	 */
87      public CredentialProgramInfo getCredentialProgram(@WebParam(name="credentialProgramId")String credentialProgramId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
88  
89      /** 
90       * Retrieves a MajorDiscipline
91       * @param majorDisciplineId Unique Id of the MajorDiscipline. Maps to cluId
92       * @return the created MajorDiscipline
93       * @throws DoesNotExistException MajorDiscipline does not exist
94       * @throws InvalidParameterException invalid MajorDiscipline
95       * @throws MissingParameterException missing MajorDiscipline
96       * @throws OperationFailedException unable to complete request
97       * @throws PermissionDeniedException authorization failure
98  	 */
99      public MajorDisciplineInfo getMajorDiscipline(@WebParam(name="majorDisciplineId")String majorDisciplineId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
100 
101     /** 
102      * Retrieves the list of Major Discipline identifiers a given Credential Program Type.
103      * @param programType Type of Credential Program
104      * @return List of Major Discipline identifiers for the given Credential Program Type
105      * @throws DoesNotExistException program type not found
106      * @throws InvalidParameterException invalid program type
107      * @throws MissingParameterException program type is not specified
108      * @throws OperationFailedException unable to complete request
109 	 */
110     public List<String> getMajorIdsByCredentialProgramType(@WebParam(name="programType")String programType) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
111 
112     /** 
113      * Retrieves a list of program variations for a particular major
114      * @param majorDisciplineId Major Discipline Identifier
115      * @return list of program variations associated with the specified Major
116      * @throws DoesNotExistException Major not found
117      * @throws InvalidParameterException invalid majorDisciplineId
118      * @throws MissingParameterException majorDisciplineId not specified
119      * @throws OperationFailedException unable to complete request
120 	 */
121     public List<ProgramVariationInfo> getVariationsByMajorDisciplineId(@WebParam(name="majorDisciplineId")String majorDisciplineId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
122 
123     /** 
124      * Retrieves a MinorDiscipline
125      * @param minorDisciplineId Unique Id of the MinorDiscipline. Maps to cluId
126      * @return the created MinorDiscipline
127      * @throws DoesNotExistException MinorDiscipline does not exist
128      * @throws InvalidParameterException invalid MinorDiscipline
129      * @throws MissingParameterException missing MinorDiscipline
130      * @throws OperationFailedException unable to complete request
131      * @throws PermissionDeniedException authorization failure
132 	 */
133     public MinorDisciplineInfo getMinorDiscipline(@WebParam(name="minorDisciplineId")String minorDisciplineId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
134 
135     /** 
136      * Retrieves the list of Minor Discipline Program a given Credential Program Type.
137      * @param programType Type of Credential Program
138      * @return List of Minor Disciplines for the given Credential Program Type
139      * @throws DoesNotExistException program type not found
140      * @throws InvalidParameterException invalid program type
141      * @throws MissingParameterException program type is not specified
142      * @throws OperationFailedException unable to complete request
143 	 */
144     public List<String> getMinorsByCredentialProgramType(@WebParam(name="programType")String programType) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
145 
146     /** 
147      * Retrieves a HonorsProgram
148      * @param honorsProgramId Unique Id of the HonorsProgram. Maps to cluId
149      * @return the created Honors Program
150      * @throws DoesNotExistException HonorsProgram does not exist
151      * @throws InvalidParameterException invalid Honors Program
152      * @throws MissingParameterException missing Honors Program
153      * @throws OperationFailedException unable to complete request
154      * @throws PermissionDeniedException authorization failure
155 	 */
156     public HonorsProgramInfo getHonorsProgram(@WebParam(name="honorsProgramId")String honorsProgramId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
157 
158     /** 
159      * Retrieves the list of Honors Program Program a given Credential Program Type.
160      * @param programType Type of Credential Program
161      * @return List of Honors Programs for the given Credential Program Type
162      * @throws DoesNotExistException program type not found
163      * @throws InvalidParameterException invalid program type
164      * @throws MissingParameterException program type is not specified
165      * @throws OperationFailedException unable to complete request
166 	 */
167     public List<String> getHonorsByCredentialProgramType(@WebParam(name="programType")String programType) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
168 
169     /** 
170      * Retrieves a Core Program
171      * @param coreProgramId Unique Id of the Core Program. Maps to cluId
172      * @return the Core Program
173      * @throws DoesNotExistException Program Requirement does not exist
174      * @throws InvalidParameterException invalid Program Requirement
175      * @throws MissingParameterException missing Program Requirement
176      * @throws OperationFailedException unable to complete request
177      * @throws PermissionDeniedException authorization failure
178      */
179     public CoreProgramInfo getCoreProgram(@WebParam(name="coreProgramId")String coreProgramId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
180 
181     
182     /** 
183      * Retrieves a ProgramRequirement
184      * @param programRequirementId Unique Id of the ProgramRequirement. Maps to cluId
185      * @param nlUsageTypeKey Natural language usage type key (context)
186      * @param language Translation language e.g en, es, gr
187      * @return the Program Requirement
188      * @throws DoesNotExistException Program Requirement does not exist
189      * @throws InvalidParameterException invalid Program Requirement
190      * @throws MissingParameterException missing Program Requirement
191      * @throws OperationFailedException unable to complete request
192      * @throws PermissionDeniedException authorization failure
193 	 */
194     public ProgramRequirementInfo getProgramRequirement(@WebParam(name="programRequirementId")String programRequirementId, @WebParam(name="nlUsageTypeKey")String nlUsageTypeKey, @WebParam(name="language")String language) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
195 
196     /** 
197      * Creates a Credential Program
198      * @param credentialProgramInfo credentialProgramInfo
199      * @return the created Credential Program
200      * @throws AlreadyExistsException The Credential Program already exists
201      * @throws DataValidationErrorException One or more values invalid for this operation
202      * @throws InvalidParameterException invalid Credential Program
203      * @throws MissingParameterException missing Credential Program
204      * @throws OperationFailedException unable to complete request
205      * @throws PermissionDeniedException authorization failure
206 	 */
207     public CredentialProgramInfo createCredentialProgram(@WebParam(name="credentialProgramInfo")CredentialProgramInfo credentialProgramInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
208 
209     /**
210      * Creates a new Credential Program version based on the current Credential Program
211      * @param credentialProgramId identifier for the Credential Program to be versioned
212      * @param versionComment comment for the current version
213      * @return the new versioned Credential Program information
214      * @throws DoesNotExistException Credential Program does not exist
215      * @throws InvalidParameterException invalid credentialProgramId
216      * @throws MissingParameterException invalid credentialProgramId
217      * @throws OperationFailedException unable to complete request
218      * @throws PermissionDeniedException authorization failure
219      * @throws VersionMismatchException The action was attempted on an out of date version
220      * @throws DataValidationErrorException 
221      */    
222     public CredentialProgramInfo createNewCredentialProgramVersion(@WebParam(name="credentialProgramId")String credentialProgramId, @WebParam(name="versionComment")String versionComment) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException, DataValidationErrorException;
223 
224     /**
225 	 * Sets a specific version of the Credential Program as current. The sequence number must be greater than the existing current Credential Program version. This will truncate the current version's end date to the currentVersionStart param. If a Major exists which is set to become current in the future, that Major's currentVersionStart and CurrentVersionEnd will be nullified. The currentVersionStart must be in the future to prevent changing historic data. 
226      * @param coreProgramId Version Specific Id of the Credential Program
227      * @param currentVersionStart Date when this Credential Program becomes current. Must be in the future and be after the most current Credential Program's start date.
228      * @return status of the operation (success or failure)
229      * @throws DoesNotExistException Credential Program for credentialProgramId does not exist
230      * @throws InvalidParameterException invalid credentialProgramId, currentVersionStart
231      * @throws MissingParameterException invalid credentialProgramId 
232      * @throws IllegalVersionSequencingException a Credential Program with higher sequence number from the one provided is marked current
233      * @throws OperationFailedException unable to complete request
234      * @throws PermissionDeniedException authorization failure
235      */
236     public StatusInfo setCurrentCredentialProgramVersion(@WebParam(name="credentialProgramId")String credentialProgramId, @WebParam(name="currentVersionStart")Date currentVersionStart) throws DoesNotExistException, InvalidParameterException, MissingParameterException, IllegalVersionSequencingException, OperationFailedException, PermissionDeniedException;
237 
238     /** 
239      * Updates a Credential Program
240      * @param credentialProgramInfo credentialProgramInfo
241      * @return updated Credential Program
242      * @throws DataValidationErrorException One or more values invalid for this operation
243      * @throws DoesNotExistException Credential Program not found
244      * @throws InvalidParameterException invalid Credential Program
245      * @throws MissingParameterException missing Credential Program
246      * @throws VersionMismatchException The action was attempted on an out of date version
247      * @throws OperationFailedException unable to complete request
248      * @throws PermissionDeniedException authorization failure
249 	 */
250     public CredentialProgramInfo updateCredentialProgram(@WebParam(name="credentialProgramInfo")CredentialProgramInfo credentialProgramInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException;
251 
252     /** 
253      * Deletes a Credential Program
254      * @param credentialProgramId identifier for credentialProgramId.Maps to cluId
255      * @return status of the operation (success or failure)
256      * @throws DoesNotExistException Credential Program does not exist
257      * @throws InvalidParameterException invalid credentialProgramId
258      * @throws MissingParameterException invalid credentialProgramId
259      * @throws OperationFailedException unable to complete request
260      * @throws PermissionDeniedException authorization failure
261 	 */
262     public StatusInfo deleteCredentialProgram(@WebParam(name="credentialProgramId")String credentialProgramId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
263 
264     /** 
265      * Validates a Credential Program against its data dictionary
266      * @param validationType identifier of the extent of validation
267      * @param credentialProgramInfo Credential Program information to be tested
268      * @return results from performing the validation
269      * @throws InvalidParameterException invalid validationTypeKey, cluInfo
270      * @throws MissingParameterException missing validationTypeKey, cluInfo
271      * @throws OperationFailedException unable to complete request
272 	 */
273     public List<ValidationResultInfo> validateCredentialProgram(@WebParam(name="validationType")String validationType, @WebParam(name="credentialProgramInfo")CredentialProgramInfo credentialProgramInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException;
274 
275     /** 
276      * Creates a Major Discipline Program
277      * @param majorDisciplineInfo majorDisciplineInfo
278      * @return the created Major Discipline
279      * @throws AlreadyExistsException The Major already exists
280      * @throws DataValidationErrorException One or more values invalid for this operation
281      * @throws InvalidParameterException invalid Major
282      * @throws MissingParameterException missing Major
283      * @throws OperationFailedException unable to complete request
284      * @throws PermissionDeniedException authorization failure
285 	 */
286     public MajorDisciplineInfo createMajorDiscipline(@WebParam(name="majorDisciplineInfo")MajorDisciplineInfo majorDisciplineInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
287 
288     /** 
289      * Updates a Major Discipline
290      * @param majorDisciplineInfo majorDisciplineInfo
291      * @return updated Major Discipline
292      * @throws DataValidationErrorException One or more values invalid for this operation
293      * @throws DoesNotExistException Major not found
294      * @throws InvalidParameterException invalid Major
295      * @throws MissingParameterException missing Major
296      * @throws VersionMismatchException The action was attempted on an out of date version
297      * @throws OperationFailedException unable to complete request
298      * @throws PermissionDeniedException authorization failure
299 	 */
300     public MajorDisciplineInfo updateMajorDiscipline(@WebParam(name="majorDisciplineInfo")MajorDisciplineInfo majorDisciplineInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException;
301 
302     /** 
303      * Deletes a Major Discipline
304      * @param majorDisciplineId identifier for majorDisciplineId.Maps to cluId
305      * @return status of the operation (success or failure)
306      * @throws DoesNotExistException Major does not exist
307      * @throws InvalidParameterException invalid majorDisciplineId
308      * @throws MissingParameterException invalid majorDisciplineId
309      * @throws OperationFailedException unable to complete request
310      * @throws PermissionDeniedException authorization failure
311 	 */
312     public StatusInfo deleteMajorDiscipline(@WebParam(name="majorDisciplineId")String majorDisciplineId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
313 
314     /** 
315      * Validates a Major discipline against its data dictionary
316      * @param validationType identifier of the extent of validation
317      * @param majorDisciplineInfo Major discipline information to be tested
318      * @return results from performing the validation
319      * @throws InvalidParameterException invalid validationTypeKey, cluInfo
320      * @throws MissingParameterException missing validationTypeKey, cluInfo
321      * @throws OperationFailedException unable to complete request
322 	 */
323     public List<ValidationResultInfo> validateMajorDiscipline(@WebParam(name="validationType")String validationType, @WebParam(name="majorDisciplineInfo")MajorDisciplineInfo majorDisciplineInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException;
324 
325 
326     /**
327      * Creates a new Major Discipline version based on the current Major
328      * @param majorDisciplineId identifier for the Major Discipline to be versioned
329      * @param versionComment comment for the current version
330      * @return the new versioned Major Discipline information
331      * @throws DoesNotExistException Major does not exist
332      * @throws InvalidParameterException invalid majorDisciplineId
333      * @throws MissingParameterException invalid majorDisciplineId
334      * @throws OperationFailedException unable to complete request
335      * @throws PermissionDeniedException authorization failure
336      * @throws VersionMismatchException The action was attempted on an out of date version
337      * @throws DataValidationErrorException 
338      */    
339     public MajorDisciplineInfo createNewMajorDisciplineVersion(@WebParam(name="majorDisciplineId")String majorDisciplineId, @WebParam(name="versionComment")String versionComment) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException, DataValidationErrorException; 
340 
341     /**
342 	 * Sets a specific version of the Major as current. The sequence number must be greater than the existing current Major version. This will truncate the current version's end date to the currentVersionStart param. If a Major exists which is set to become current in the future, that Major's currentVersionStart and CurrentVersionEnd will be nullified. The currentVersionStart must be in the future to prevent changing historic data. 
343      * @param majorDisciplineId Version Specific Id of the Major Discipline
344      * @param currentVersionStart Date when this Major becomes current. Must be in the future and be after the most current major's start date.
345      * @return status of the operation (success or failure)
346      * @throws DoesNotExistException Major for majorVersionId does not exist
347      * @throws InvalidParameterException invalid majorVersionId, currentVersionStart
348      * @throws MissingParameterException invalid majorVersionId 
349      * @throws IllegalVersionSequencingException a Major with higher sequence number from the one provided is marked current
350      * @throws OperationFailedException unable to complete request
351      * @throws PermissionDeniedException authorization failure
352      */
353     public StatusInfo setCurrentMajorDisciplineVersion(@WebParam(name="majorDisciplineId")String majorDisciplineId, @WebParam(name="currentVersionStart")Date currentVersionStart) throws DoesNotExistException, InvalidParameterException, MissingParameterException, IllegalVersionSequencingException, OperationFailedException, PermissionDeniedException;
354     
355     /** 
356      * Creates a Minor Discipline Program
357      * @param minorDisciplineInfo minorDisciplineInfo
358      * @return the created Minor Discipline
359      * @throws AlreadyExistsException The Minor already exists
360      * @throws DataValidationErrorException One or more values invalid for this operation
361      * @throws InvalidParameterException invalid Minor
362      * @throws MissingParameterException missing Minor
363      * @throws OperationFailedException unable to complete request
364      * @throws PermissionDeniedException authorization failure
365 	 */
366     public MinorDisciplineInfo createMinorDiscipline(@WebParam(name="minorDisciplineInfo")MinorDisciplineInfo minorDisciplineInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
367 
368     /** 
369      * Updates a Minor Discipline
370      * @param minorDisciplineInfo minorDisciplineInfo
371      * @return updated Minor Discipline
372      * @throws DataValidationErrorException One or more values invalid for this operation
373      * @throws DoesNotExistException Minor not found
374      * @throws InvalidParameterException invalid Minor
375      * @throws MissingParameterException missing Minor
376      * @throws VersionMismatchException The action was attempted on an out of date version
377      * @throws OperationFailedException unable to complete request
378      * @throws PermissionDeniedException authorization failure
379 	 */
380     public MinorDisciplineInfo updateMinorDiscipline(@WebParam(name="minorDisciplineInfo")MinorDisciplineInfo minorDisciplineInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException;
381 
382     /** 
383      * Deletes a Minor Discipline
384      * @param minorDisciplineId identifier for minorDisciplineId.Maps to cluId
385      * @return status of the operation (success or failure)
386      * @throws DoesNotExistException Minor does not exist
387      * @throws InvalidParameterException invalid minorDisciplineId
388      * @throws MissingParameterException invalid minorDisciplineId
389      * @throws OperationFailedException unable to complete request
390      * @throws PermissionDeniedException authorization failure
391 	 */
392     public StatusInfo deleteMinorDiscipline(@WebParam(name="minorDisciplineId")String minorDisciplineId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
393 
394     /** 
395      * Validates a Minor discipline against its data dictionary
396      * @param validationType identifier of the extent of validation
397      * @param minorDisciplineInfo Minor discipline information to be tested
398      * @return results from performing the validation
399      * @throws InvalidParameterException invalid validationTypeKey, cluInfo
400      * @throws MissingParameterException missing validationTypeKey, cluInfo
401      * @throws OperationFailedException unable to complete request
402 	 */
403     public List<ValidationResultInfo> validateMinorDiscipline(@WebParam(name="validationType")String validationType, @WebParam(name="minorDisciplineInfo")MinorDisciplineInfo minorDisciplineInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException;
404 
405     /** 
406      * Creates a Honors Program
407      * @param honorsProgramInfo honorsProgramInfo
408      * @return the created Honors Program
409      * @throws AlreadyExistsException The Honors Program already exists
410      * @throws DataValidationErrorException One or more values invalid for this operation
411      * @throws InvalidParameterException invalid Honors Program
412      * @throws MissingParameterException missing Honors Program
413      * @throws OperationFailedException unable to complete request
414      * @throws PermissionDeniedException authorization failure
415 	 */
416     public HonorsProgramInfo createHonorsProgram(@WebParam(name="honorsProgramInfo")HonorsProgramInfo honorsProgramInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
417 
418     /** 
419      * Updates a Honors Program
420      * @param honorsProgramInfo honorsProgramInfo
421      * @return updated Honors Program
422      * @throws DataValidationErrorException One or more values invalid for this operation
423      * @throws DoesNotExistException Honors Program not found
424      * @throws InvalidParameterException invalid Honors Program
425      * @throws MissingParameterException missing Honors Program
426      * @throws VersionMismatchException The action was attempted on an out of date version
427      * @throws OperationFailedException unable to complete request
428      * @throws PermissionDeniedException authorization failure
429 	 */
430     public HonorsProgramInfo updateHonorsProgram(@WebParam(name="honorsProgramInfo")HonorsProgramInfo honorsProgramInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException;
431 
432     /** 
433      * Deletes a Honors Program
434      * @param honorsProgramId identifier for honorsProgramId.Maps to cluId
435      * @return status of the operation (success or failure)
436      * @throws DoesNotExistException Honors Program does not exist
437      * @throws InvalidParameterException invalid honorsProgramId
438      * @throws MissingParameterException invalid honorsProgramId
439      * @throws OperationFailedException unable to complete request
440      * @throws PermissionDeniedException authorization failure
441 	 */
442     public StatusInfo deleteHonorsProgram(@WebParam(name="honorsProgramId")String honorsProgramId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
443 
444     /** 
445      * Validates a Honors Program against its data dictionary
446      * @param validationType identifier of the extent of validation
447      * @param honorsProgramInfo Honors Program information to be tested
448      * @return results from performing the validation
449      * @throws InvalidParameterException invalid validationTypeKey, cluInfo
450      * @throws MissingParameterException missing validationTypeKey, cluInfo
451      * @throws OperationFailedException unable to complete request
452 	 */
453     public List<ValidationResultInfo> validateHonorsProgram(@WebParam(name="validationType")String validationType, @WebParam(name="honorsProgramInfo")HonorsProgramInfo honorsProgramInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException;
454 
455     /** 
456      * Creates a Core Program
457      * @param coreProgramInfo coreProgramInfo
458      * @return the created Core Program
459      * @throws AlreadyExistsException The Core Program already exists
460      * @throws DataValidationErrorException One or more values invalid for this operation
461      * @throws InvalidParameterException invalid Core Program
462      * @throws MissingParameterException missing Core Program
463      * @throws OperationFailedException unable to complete request
464      * @throws PermissionDeniedException authorization failure
465      */
466     public CoreProgramInfo createCoreProgram(@WebParam(name="coreProgramInfo")CoreProgramInfo coreProgramInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
467 
468     /**
469      * Creates a new Core Program version based on the current Core Program
470      * @param coreProgramId identifier for the Core Program to be versioned
471      * @param versionComment comment for the current version
472      * @return the new versioned Core Program information
473      * @throws DoesNotExistException Core Program does not exist
474      * @throws InvalidParameterException invalid coreProgramId
475      * @throws MissingParameterException invalid coreProgramId
476      * @throws OperationFailedException unable to complete request
477      * @throws PermissionDeniedException authorization failure
478      * @throws VersionMismatchException The action was attempted on an out of date version
479      * @throws DataValidationErrorException 
480      */    
481     public CoreProgramInfo createNewCoreProgramVersion(@WebParam(name="coreProgramId")String coreProgramId, @WebParam(name="versionComment")String versionComment) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException, DataValidationErrorException;
482 
483     
484     /**
485 	 * Sets a specific version of the Core Program as current. The sequence number must be greater than the existing current Core Program version. This will truncate the current version's end date to the currentVersionStart param. If a Major exists which is set to become current in the future, that Major's currentVersionStart and CurrentVersionEnd will be nullified. The currentVersionStart must be in the future to prevent changing historic data. 
486      * @param coreProgramId Version Specific Id of the Core Program
487      * @param currentVersionStart Date when this Core Program becomes current. Must be in the future and be after the most current major's start date.
488      * @return status of the operation (success or failure)
489      * @throws DoesNotExistException Core Program for coreProgramId does not exist
490      * @throws InvalidParameterException invalid coreProgramId, currentVersionStart
491      * @throws MissingParameterException invalid coreProgramId 
492      * @throws IllegalVersionSequencingException a CoreProgram with higher sequence number from the one provided is marked current
493      * @throws OperationFailedException unable to complete request
494      * @throws PermissionDeniedException authorization failure
495      */
496     public StatusInfo setCurrentCoreProgramVersion(@WebParam(name="coreProgramId")String coreProgramId, @WebParam(name="currentVersionStart")Date currentVersionStart) throws DoesNotExistException, InvalidParameterException, MissingParameterException, IllegalVersionSequencingException, OperationFailedException, PermissionDeniedException;
497     
498     /** 
499      * Updates a Core Program
500      * @param coreProgramInfo coreProgramInfo
501      * @return updated Core Program
502      * @throws DataValidationErrorException One or more values invalid for this operation
503      * @throws DoesNotExistException Core Program not found
504      * @throws InvalidParameterException invalid Core Program
505      * @throws MissingParameterException missing Core Program
506      * @throws VersionMismatchException The action was attempted on an out of date version
507      * @throws OperationFailedException unable to complete request
508      * @throws PermissionDeniedException authorization failure
509      */
510     public CoreProgramInfo updateCoreProgram(@WebParam(name="coreProgramInfo")CoreProgramInfo coreProgramInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException;
511 
512     /** 
513      * Deletes a Core Program
514      * @param coreProgramId identifier for coreProgramId.Maps to cluId
515      * @return status of the operation (success or failure)
516      * @throws DoesNotExistException Core Program does not exist
517      * @throws InvalidParameterException invalid coreProgramId
518      * @throws MissingParameterException invalid coreProgramId
519      * @throws OperationFailedException unable to complete request
520      * @throws PermissionDeniedException authorization failure
521      */
522     public StatusInfo deleteCoreProgram(@WebParam(name="coreProgramId")String coreProgramId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
523 
524     /** 
525      * Validates a Core Program against its data dictionary
526      * @param validationType identifier of the extent of validation
527      * @param coreProgramInfo Core Program information to be tested
528      * @return results from performing the validation
529      * @throws InvalidParameterException invalid validationTypeKey, cluInfo
530      * @throws MissingParameterException missing validationTypeKey, cluInfo
531      * @throws OperationFailedException unable to complete request
532      */
533     public List<ValidationResultInfo> validateCoreProgram(@WebParam(name="validationType")String validationType, @WebParam(name="coreProgramInfo")CoreProgramInfo coreProgramInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException;
534 
535     
536     /** 
537      * Creates a Program Requirement
538      * @param programRequirementInfo programRequirementInfo
539      * @return the created Program Requirement
540      * @throws AlreadyExistsException The Program Requirement already exists
541      * @throws DataValidationErrorException One or more values invalid for this operation
542      * @throws InvalidParameterException invalid Program Requirement
543      * @throws MissingParameterException missing Program Requirement
544      * @throws OperationFailedException unable to complete request
545      * @throws PermissionDeniedException authorization failure
546 	 */
547     public ProgramRequirementInfo createProgramRequirement(@WebParam(name="programRequirementInfo")ProgramRequirementInfo programRequirementInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
548 
549     /** 
550      * Updates a Program Requirement
551      * @param programRequirementInfo programRequirementInfo
552      * @return updated Program Requirement
553      * @throws DataValidationErrorException One or more values invalid for this operation
554      * @throws DoesNotExistException Program Requirement not found
555      * @throws InvalidParameterException invalid Program Requirement
556      * @throws MissingParameterException missing Program Requirement
557      * @throws VersionMismatchException The action was attempted on an out of date version
558      * @throws OperationFailedException unable to complete request
559      * @throws PermissionDeniedException authorization failure
560 	 */
561     public ProgramRequirementInfo updateProgramRequirement(@WebParam(name="programRequirementInfo")ProgramRequirementInfo programRequirementInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException;
562 
563     /** 
564      * Deletes a Program Requirement
565      * @param programRequirementId identifier for programRequirementId.Maps to cluId
566      * @return status of the operation (success or failure)
567      * @throws DoesNotExistException Program Requirement does not exist
568      * @throws InvalidParameterException invalid programRequirementId
569      * @throws MissingParameterException invalid programRequirementId
570      * @throws OperationFailedException unable to complete request
571      * @throws PermissionDeniedException authorization failure
572 	 */
573     public StatusInfo deleteProgramRequirement(@WebParam(name="programRequirementId")String programRequirementId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
574 
575     /** 
576      * Validates a Program Requirement against its data dictionary
577      * @param validationType identifier of the extent of validation
578      * @param programRequirementInfo Program Requirement information to be tested
579      * @return results from performing the validation
580      * @throws InvalidParameterException invalid validationTypeKey, cluInfo
581      * @throws MissingParameterException missing validationTypeKey, cluInfo
582      * @throws OperationFailedException unable to complete request
583 	 */
584     public List<ValidationResultInfo> validateProgramRequirement(@WebParam(name="validationType")String validationType, @WebParam(name="programRequirementInfo")ProgramRequirementInfo programRequirementInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException;
585 
586     
587 }