001 /*
002 * Copyright 2009 The Kuali Foundation Licensed under the Educational Community
003 * License, Version 1.0 (the "License"); you may not use this file except in
004 * compliance with the License. You may obtain a copy of the License at
005 * http://www.opensource.org/licenses/ecl1.php Unless required by applicable law
006 * or agreed to in writing, software distributed under the License is
007 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
008 * KIND, either express or implied. See the License for the specific language
009 * governing permissions and limitations under the License.
010 */
011 package org.kuali.student.r2.lum.program.service;
012
013 import java.util.Date;
014 import java.util.List;
015
016 import javax.jws.WebParam;
017 import javax.jws.WebService;
018 import javax.jws.soap.SOAPBinding;
019
020
021 import org.kuali.student.r1.common.dictionary.service.DictionaryService;
022 import org.kuali.student.r2.core.search.service.SearchService;
023 import org.kuali.student.r2.common.dto.ContextInfo;
024 import org.kuali.student.r2.common.dto.StatusInfo;
025 import org.kuali.student.r2.common.dto.ValidationResultInfo;
026 import org.kuali.student.r2.common.exceptions.AlreadyExistsException;
027 import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
028 import org.kuali.student.r2.common.exceptions.DoesNotExistException;
029 import org.kuali.student.r2.common.exceptions.IllegalVersionSequencingException;
030 import org.kuali.student.r2.common.exceptions.InvalidParameterException;
031 import org.kuali.student.r2.common.exceptions.MissingParameterException;
032 import org.kuali.student.r2.common.exceptions.OperationFailedException;
033 import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
034 import org.kuali.student.r2.common.exceptions.ReadOnlyException;
035 import org.kuali.student.r2.common.exceptions.VersionMismatchException;
036
037 import org.kuali.student.r2.common.util.constants.ProgramServiceConstants;
038 import org.kuali.student.r2.core.versionmanagement.service.VersionManagementService;
039 import org.kuali.student.r2.lum.program.dto.CredentialProgramInfo;
040 import org.kuali.student.r2.lum.program.dto.HonorsProgramInfo;
041 import org.kuali.student.r2.lum.program.dto.MajorDisciplineInfo;
042 import org.kuali.student.r2.lum.program.dto.MinorDisciplineInfo;
043
044 import org.kuali.student.r2.lum.program.dto.CoreProgramInfo;
045 import org.kuali.student.r2.lum.program.dto.ProgramRequirementInfo;
046 import org.kuali.student.r2.lum.program.dto.ProgramVariationInfo;
047
048 /**
049 * The Program Service allows for the creation and management of programs.
050 *
051 * @version 2.0
052 * @Author sambitpa@usc.edu
053 */
054 @WebService(name = "ProgramService", targetNamespace = ProgramServiceConstants.PROGRAM_NAMESPACE)
055 // TODO CHECK THESE VALUES
056 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
057 public interface ProgramService extends SearchService, VersionManagementService, DictionaryService
058 {
059
060 /**
061 * Retrieves a CredentialProgram
062 *
063 * @param credentialProgramId Unique Id of the CredentialProgram. Maps to
064 * cluId
065 * @return the created Credential Program
066 * @throws DoesNotExistException CredentialProgram does not exist
067 * @throws InvalidParameterException invalid Credential Program
068 * @throws MissingParameterException missing Credential Program
069 * @throws OperationFailedException unable to complete request
070 * @throws PermissionDeniedException authorization failure
071 * @throws org.kuali.student.r2.common.exceptions.OperationFailedException
072 * @throws org.kuali.student.r2.common.exceptions.PermissionDeniedException
073 */
074 public CredentialProgramInfo getCredentialProgram(@WebParam(name = "credentialProgramId") String credentialProgramId, @WebParam(name = "contextInfo") ContextInfo contextInfo)
075 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
076
077 /**
078 * Retrieves a list of CredentialPrograms corresponding to the given list of
079 * CredentialProgram Ids
080 *
081 * @param credentialProgramIds list of CredentialPrograms to be retrieved
082 * @param contextInfo Context information containing the principalId and
083 * locale information about the caller of service operation
084 * @return list of CredentialProgram
085 * @throws DoesNotExistException an commentKey in list not found
086 * @throws InvalidParameterException invalid commentKey
087 * @throws MissingParameterException commentIds, contextInfo not specified
088 * @throws OperationFailedException unable to complete request
089 * @throws PermissionDeniedException authorization failure
090 */
091 public List<CredentialProgramInfo> getCredentialProgramsByIds(@WebParam(name = "credentialProgramIds") List<String> credentialProgramIds, @WebParam(name = "contextInfo") ContextInfo contextInfo)
092 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
093
094 /**
095 * Validates a Credential Program against its data dictionary
096 *
097 * @param validationType identifier of the extent of validation
098 * @param credentialProgramInfo Credential Program information to be tested
099 * @return results from performing the validation
100 * @throws InvalidParameterException invalid validationTypeKey, cluInfo
101 * @throws MissingParameterException missing validationTypeKey, cluInfo
102 * @throws OperationFailedException unable to complete request
103 */
104 public List<ValidationResultInfo> validateCredentialProgram(@WebParam(name = "validationType") String validationType,
105 @WebParam(name = "credentialProgramInfo") CredentialProgramInfo credentialProgramInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException,
106 MissingParameterException, OperationFailedException;
107
108 /**
109 * Creates a Credential Program
110 *
111 * @param credentialProgramInfo credentialProgramInfo
112 * @return the created Credential Program
113 * @throws AlreadyExistsException The Credential Program already exists
114 * @throws DataValidationErrorException One or more values invalid for this
115 * operation
116 * @throws InvalidParameterException invalid Credential Program
117 * @throws MissingParameterException missing Credential Program
118 * @throws OperationFailedException unable to complete request
119 * @throws PermissionDeniedException authorization failure
120 */
121 public CredentialProgramInfo createCredentialProgram(@WebParam(name = "credentialProgramTypeKey") String credentialProgramTypeKey,
122 @WebParam(name = "credentialProgramInfo") CredentialProgramInfo credentialProgramInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws AlreadyExistsException,
123 DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
124
125 /**
126 * Creates a new Credential Program version based on the current Credential
127 * Program
128 *
129 * @param credentialProgramId identifier for the Credential Program to be
130 * versioned
131 * @param versionComment comment for the current version
132 * @return the new versioned Credential Program information
133 * @throws DoesNotExistException Credential Program does not exist
134 * @throws InvalidParameterException invalid credentialProgramId
135 * @throws MissingParameterException invalid credentialProgramId
136 * @throws OperationFailedException unable to complete request
137 * @throws PermissionDeniedException authorization failure
138 * @throws VersionMismatchException The action was attempted on an out of
139 * date version
140 * @throws DataValidationErrorException
141 * @throws ReadOnlyException
142 */
143 public CredentialProgramInfo createNewCredentialProgramVersion(@WebParam(name = "credentialProgramId") String credentialProgramId, @WebParam(name = "versionComment") String versionComment,
144 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException,
145 PermissionDeniedException, VersionMismatchException, DataValidationErrorException, ReadOnlyException;
146
147 /**
148 * Sets a specific version of the Credential Program as current. The
149 * sequence number must be greater than the existing current Credential
150 * Program version. This will truncate the current version's end date to the
151 * currentVersionStart param. If a Major exists which is set to become
152 * current in the future, that Major's currentVersionStart and
153 * CurrentVersionEnd will be nullified. The currentVersionStart must be in
154 * the future to prevent changing historic data.
155 *
156 * @param credentialProgramId Version Specific Id of the Credential Program
157 * @param currentVersionStart Date when this Credential Program becomes
158 * current. Must be in the future and be after the most current
159 * Credential Program's start date.
160 * @return status of the operation (success or failure)
161 * @throws DoesNotExistException Credential Program for credentialProgramId
162 * does not exist
163 * @throws InvalidParameterException invalid credentialProgramId,
164 * currentVersionStart
165 * @throws MissingParameterException invalid credentialProgramId
166 * @throws IllegalVersionSequencingException a Credential Program with
167 * higher sequence number from the one provided is marked
168 * current
169 * @throws OperationFailedException unable to complete request
170 * @throws PermissionDeniedException authorization failure
171 * @throws DataValidationErrorException
172 */
173 public StatusInfo setCurrentCredentialProgramVersion(@WebParam(name = "credentialProgramId") String credentialProgramId, @WebParam(name = "currentVersionStart") Date currentVersionStart,
174 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, IllegalVersionSequencingException,
175 OperationFailedException, PermissionDeniedException, DataValidationErrorException;
176
177 /**
178 * Updates a Credential Program
179 *
180 * @param credentialProgramInfo credentialProgramInfo
181 * @return updated Credential Program
182 * @throws DataValidationErrorException One or more values invalid for this
183 * operation
184 * @throws DoesNotExistException Credential Program not found
185 * @throws InvalidParameterException invalid Credential Program
186 * @throws MissingParameterException missing Credential Program
187 * @throws VersionMismatchException The action was attempted on an out of
188 * date version
189 * @throws OperationFailedException unable to complete request
190 * @throws PermissionDeniedException authorization failure
191 */
192 public CredentialProgramInfo updateCredentialProgram(@WebParam(name = "credentialProgramId") String credentialProgramId,
193 @WebParam(name = "credentialProgramInfo") CredentialProgramInfo credentialProgramInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException,
194 DoesNotExistException, InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException;
195
196 /**
197 * Deletes a Credential Program
198 *
199 * @param credentialProgramId identifier for credentialProgramId.Maps to
200 * cluId
201 * @return status of the operation (success or failure)
202 * @throws DoesNotExistException Credential Program does not exist
203 * @throws InvalidParameterException invalid credentialProgramId
204 * @throws MissingParameterException invalid credentialProgramId
205 * @throws OperationFailedException unable to complete request
206 * @throws PermissionDeniedException authorization failure
207 */
208 public StatusInfo deleteCredentialProgram(@WebParam(name = "credentialProgramId") String credentialProgramId, @WebParam(name = "contextInfo") ContextInfo contextInfo)
209 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
210
211 /**
212 * Retrieves a MajorDiscipline
213 *
214 * @param majorDisciplineId Unique Id of the MajorDiscipline. Maps to cluId
215 * @return the created MajorDiscipline
216 * @throws DoesNotExistException MajorDiscipline does not exist
217 * @throws InvalidParameterException invalid MajorDiscipline
218 * @throws MissingParameterException missing MajorDiscipline
219 * @throws OperationFailedException unable to complete request
220 * @throws PermissionDeniedException authorization failure
221 */
222 public MajorDisciplineInfo getMajorDiscipline(@WebParam(name = "majorDisciplineId") String majorDisciplineId, @WebParam(name = "contextInfo") ContextInfo contextInfo)
223 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
224
225 /**
226 * Retrieves a list of MajorDiscipline corresponding to the given list of
227 * major discipline Ids
228 *
229 * @param majorDisciplineIds list of MajorDisciplines to be retrieved
230 * @param contextInfo Context information containing the principalId and
231 * locale information about the caller of service operation
232 * @return list of MajorDiscipline
233 * @throws DoesNotExistException an commentKey in list not found
234 * @throws InvalidParameterException invalid commentKey
235 * @throws MissingParameterException commentIds, contextInfo not specified
236 * @throws OperationFailedException unable to complete request
237 * @throws PermissionDeniedException authorization failure
238 */
239 public List<MajorDisciplineInfo> getMajorDisciplinesByIds(@WebParam(name = "majorDisciplineIds") List<String> majorDisciplineIds, @WebParam(name = "contextInfo") ContextInfo contextInfo)
240 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
241
242 /**
243 * Retrieves the list of Major Discipline identifiers a given Credential
244 * Program Type.
245 *
246 * @param programType Type of Credential Program
247 * @return List of Major Discipline identifiers for the given Credential
248 * Program Type
249 * @throws DoesNotExistException program type not found
250 * @throws InvalidParameterException invalid program type
251 * @throws MissingParameterException program type is not specified
252 * @throws OperationFailedException unable to complete request
253 */
254 public List<String> getMajorDisciplineIdsByCredentialProgramType(@WebParam(name = "programType") String programType,
255 @WebParam(name = "contextInfo") ContextInfo contextInfo)
256 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
257
258 /**
259 * Retrieves a list of program variations for a particular major
260 * @param majorDisciplineId Major Discipline Identifier
261 * @return list of program variations associated with the specified Major
262 * @throws DoesNotExistException Major not found
263 * @throws InvalidParameterException invalid majorDisciplineId
264 * @throws MissingParameterException majorDisciplineId not specified
265 * @throws OperationFailedException unable to complete request
266 */
267 public List<ProgramVariationInfo> getProgramVariationsByMajorDiscipline(@WebParam(name = "majorDisciplineId") String majorDisciplineId,
268 @WebParam(name = "contextInfo") ContextInfo contextInfo)
269 throws DoesNotExistException,
270 InvalidParameterException,
271 MissingParameterException,
272 OperationFailedException;
273
274 /**
275 * Validates a Major discipline against its data dictionary
276 *
277 * @param validationType identifier of the extent of validation
278 * @param majorDisciplineInfo Major discipline information to be tested
279 * @return results from performing the validation
280 * @throws InvalidParameterException invalid validationTypeKey, cluInfo
281 * @throws MissingParameterException missing validationTypeKey, cluInfo
282 * @throws OperationFailedException unable to complete request
283 * @throws PermissionDeniedException
284 */
285 public List<ValidationResultInfo> validateMajorDiscipline(@WebParam(name = "validationType") String validationType,
286 @WebParam(name = "majorDisciplineInfo") MajorDisciplineInfo majorDisciplineInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException,
287 MissingParameterException, OperationFailedException, PermissionDeniedException;
288
289 /**
290 * Creates a Major Discipline Program
291 *
292 * @param majorDisciplineInfo majorDisciplineInfo
293 * @return the created Major Discipline
294 * @throws AlreadyExistsException The Major already exists
295 * @throws DataValidationErrorException One or more values invalid for this
296 * operation
297 * @throws InvalidParameterException invalid Major
298 * @throws MissingParameterException missing Major
299 * @throws OperationFailedException unable to complete request
300 * @throws PermissionDeniedException authorization failure
301 */
302 public MajorDisciplineInfo createMajorDiscipline(@WebParam(name = "majorDisciplineTypeKey") String majorDisciplineTypeKey,
303 @WebParam(name = "majorDisciplineInfo") MajorDisciplineInfo majorDisciplineInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws AlreadyExistsException,
304 DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
305
306 /**
307 * Updates a Major Discipline
308 *
309 * @param majorDisciplineInfo majorDisciplineInfo
310 * @return updated Major Discipline
311 * @throws DataValidationErrorException One or more values invalid for this
312 * operation
313 * @throws DoesNotExistException Major not found
314 * @throws InvalidParameterException invalid Major
315 * @throws MissingParameterException missing Major
316 * @throws VersionMismatchException The action was attempted on an out of
317 * date version
318 * @throws OperationFailedException unable to complete request
319 * @throws PermissionDeniedException authorization failure
320 */
321 public MajorDisciplineInfo updateMajorDiscipline(@WebParam(name = "majorDisciplineId") String majorDisciplineId, @WebParam(name = "majorDisciplineInfo") MajorDisciplineInfo majorDisciplineInfo,
322 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException,
323 VersionMismatchException, OperationFailedException, PermissionDeniedException;
324
325 /**
326 * Deletes a Major Discipline
327 *
328 * @param majorDisciplineId identifier for majorDisciplineId.Maps to cluId
329 * @return status of the operation (success or failure)
330 * @throws DoesNotExistException Major does not exist
331 * @throws InvalidParameterException invalid majorDisciplineId
332 * @throws MissingParameterException invalid majorDisciplineId
333 * @throws OperationFailedException unable to complete request
334 * @throws PermissionDeniedException authorization failure
335 */
336 public StatusInfo deleteMajorDiscipline(@WebParam(name = "majorDisciplineId") String majorDisciplineId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
337 InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
338
339 /**
340 * Creates a new Major Discipline version based on the current Major
341 *
342 * @param majorDisciplineId identifier for the Major Discipline to be
343 * versioned
344 * @param versionComment comment for the current version
345 * @return the new versioned Major Discipline information
346 * @throws DoesNotExistException Major does not exist
347 * @throws InvalidParameterException invalid majorDisciplineId
348 * @throws MissingParameterException invalid majorDisciplineId
349 * @throws OperationFailedException unable to complete request
350 * @throws PermissionDeniedException authorization failure
351 * @throws VersionMismatchException The action was attempted on an out of
352 * date version
353 * @throws DataValidationErrorException
354 * @throws ReadOnlyException
355 */
356 public MajorDisciplineInfo createNewMajorDisciplineVersion(@WebParam(name = "majorDisciplineId") String majorDisciplineId, @WebParam(name = "versionComment") String versionComment,
357 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException,
358 PermissionDeniedException, VersionMismatchException, DataValidationErrorException, ReadOnlyException;
359
360 /**
361 * Retrieves a HonorsProgram
362 *
363 * @param honorsProgramId Unique Id of the HonorsProgram. Maps to cluId
364 * @return the created Honors Program
365 * @throws DoesNotExistException HonorsProgram does not exist
366 * @throws InvalidParameterException invalid Honors Program
367 * @throws MissingParameterException missing Honors Program
368 * @throws OperationFailedException unable to complete request
369 * @throws PermissionDeniedException authorization failure
370 */
371 public HonorsProgramInfo getHonorsProgram(@WebParam(name = "honorsProgramId") String honorsProgramId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
372 InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
373
374 /**
375 *
376 * Retrieves a list of honors program by Ids
377 *
378 * @param honorsProgramIds
379 * @param contextInfo
380 * @return
381 * @throws DoesNotExistException
382 * @throws InvalidParameterException
383 * @throws MissingParameterException
384 * @throws OperationFailedException
385 * @throws PermissionDeniedException
386 */
387 public List<HonorsProgramInfo> getHonorsProgramsByIds(@WebParam(name = "honorsProgramIds") List<String> honorsProgramIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
388 InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
389
390 /**
391 * Retrieves the list of Honors Program Program a given Credential Program
392 * Type.
393 *
394 * @param programType Type of Credential Program
395 * @return List of Honors Programs for the given Credential Program Type
396 * @throws DoesNotExistException program type not found
397 * @throws InvalidParameterException invalid program type
398 * @throws MissingParameterException program type is not specified
399 * @throws OperationFailedException unable to complete request
400 */
401 public List<String> getHonorProgramIdsByCredentialProgramType(@WebParam(name = "programType") String programType, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
402 InvalidParameterException, MissingParameterException, OperationFailedException;
403
404 /**
405 * Validates a Honors Program against its data dictionary
406 *
407 * @param validationType identifier of the extent of validation
408 * @param honorsProgramInfo Honors Program information to be tested
409 * @return results from performing the validation
410 * @throws InvalidParameterException invalid validationTypeKey, cluInfo
411 * @throws MissingParameterException missing validationTypeKey, cluInfo
412 * @throws OperationFailedException unable to complete request
413 */
414 public List<ValidationResultInfo> validateHonorsProgram(@WebParam(name = "validationType") String validationType, @WebParam(name = "honorsProgramInfo") HonorsProgramInfo honorsProgramInfo,
415 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException;
416
417 /**
418 * Creates a Honors Program
419 *
420 * @param honorsProgramInfo honorsProgramInfo
421 * @return the created Honors Program
422 * @throws AlreadyExistsException The Honors Program already exists
423 * @throws DataValidationErrorException One or more values invalid for this
424 * operation
425 * @throws InvalidParameterException invalid Honors Program
426 * @throws MissingParameterException missing Honors Program
427 * @throws OperationFailedException unable to complete request
428 * @throws PermissionDeniedException authorization failure
429 */
430 public HonorsProgramInfo createHonorsProgram(@WebParam(name = "honorsProgramTypeKey") String honorsProgramTypeKey, @WebParam(name = "honorsProgramInfo") HonorsProgramInfo honorsProgramInfo,
431 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException,
432 OperationFailedException, PermissionDeniedException;
433
434 /**
435 * Updates a Honors Program
436 *
437 * @param honorsProgramInfo honorsProgramInfo
438 * @return updated Honors Program
439 * @throws DataValidationErrorException One or more values invalid for this
440 * operation
441 * @throws DoesNotExistException Honors Program not found
442 * @throws InvalidParameterException invalid Honors Program
443 * @throws MissingParameterException missing Honors Program
444 * @throws VersionMismatchException The action was attempted on an out of
445 * date version
446 * @throws OperationFailedException unable to complete request
447 * @throws PermissionDeniedException authorization failure
448 */
449 public HonorsProgramInfo updateHonorsProgram(@WebParam(name = "honorsProgramId") String honorsProgramId, @WebParam(name = "honorsProgramTypeKey") String honorsProgramTypeKey,
450 @WebParam(name = "honorsProgramInfo") HonorsProgramInfo honorsProgramInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException,
451 DoesNotExistException, InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException;
452
453 /**
454 * Deletes a Honors Program
455 *
456 * @param honorsProgramId identifier for honorsProgramId.Maps to cluId
457 * @return status of the operation (success or failure)
458 * @throws DoesNotExistException Honors Program does not exist
459 * @throws InvalidParameterException invalid honorsProgramId
460 * @throws MissingParameterException invalid honorsProgramId
461 * @throws OperationFailedException unable to complete request
462 * @throws PermissionDeniedException authorization failure
463 */
464 public StatusInfo deleteHonorsProgram(@WebParam(name = "honorsProgramId") String honorsProgramId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
465 InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
466
467 /**
468 * Retrieves a Core Program
469 *
470 * @param coreProgramId Unique Id of the Core Program. Maps to cluId
471 * @return the Core Program
472 * @throws DoesNotExistException Program Requirement does not exist
473 * @throws InvalidParameterException invalid Program Requirement
474 * @throws MissingParameterException missing Program Requirement
475 * @throws OperationFailedException unable to complete request
476 * @throws PermissionDeniedException authorization failure
477 */
478 public CoreProgramInfo getCoreProgram(@WebParam(name = "coreProgramId") String coreProgramId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
479 InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
480
481 /**
482 *
483 * Retrieves a list of core program by Ids
484 *
485 * @param coreProgramIds
486 * @param contextInfo
487 * @return
488 * @throws DoesNotExistException
489 * @throws InvalidParameterException
490 * @throws MissingParameterException
491 * @throws OperationFailedException
492 * @throws PermissionDeniedException
493 */
494 public List<CoreProgramInfo> getCoreProgramsByIds(@WebParam(name = "coreProgramIds") List<String> coreProgramIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
495 InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
496
497 /**
498 * Validates a Core Program against its data dictionary
499 *
500 * @param validationType identifier of the extent of validation
501 * @param coreProgramInfo Core Program information to be tested
502 * @return results from performing the validation
503 * @throws InvalidParameterException invalid validationTypeKey, cluInfo
504 * @throws MissingParameterException missing validationTypeKey, cluInfo
505 * @throws OperationFailedException unable to complete request
506 */
507 public List<ValidationResultInfo> validateCoreProgram(@WebParam(name = "validationType") String validationType, @WebParam(name = "coreProgramInfo") CoreProgramInfo coreProgramInfo,
508 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException;
509
510 /**
511 * Creates a Core Program
512 *
513 * @param coreProgramInfo coreProgramInfo
514 * @return the created Core Program
515 * @throws AlreadyExistsException The Core Program already exists
516 * @throws DataValidationErrorException One or more values invalid for this
517 * operation
518 * @throws InvalidParameterException invalid Core Program
519 * @throws MissingParameterException missing Core Program
520 * @throws OperationFailedException unable to complete request
521 * @throws PermissionDeniedException authorization failure
522 */
523 public CoreProgramInfo createCoreProgram(@WebParam(name = "coreProgramTypeKey") String coreProgramTypeKey, @WebParam(name = "coreProgramInfo") CoreProgramInfo coreProgramInfo,
524 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException,
525 OperationFailedException, PermissionDeniedException, DoesNotExistException;
526
527 /**
528 * Creates a new Core Program version based on the current Core Program
529 *
530 * @param coreProgramId identifier for the Core Program to be versioned
531 * @param versionComment comment for the current version
532 * @return the new versioned Core Program information
533 * @throws DoesNotExistException Core Program does not exist
534 * @throws InvalidParameterException invalid coreProgramId
535 * @throws MissingParameterException invalid coreProgramId
536 * @throws OperationFailedException unable to complete request
537 * @throws PermissionDeniedException authorization failure
538 * @throws VersionMismatchException The action was attempted on an out of
539 * date version
540 * @throws DataValidationErrorException
541 * @throws ReadOnlyException
542 */
543 public CoreProgramInfo createNewCoreProgramVersion(@WebParam(name = "coreProgramId") String coreProgramId, @WebParam(name = "versionComment") String versionComment,
544 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException,
545 PermissionDeniedException, VersionMismatchException, DataValidationErrorException, ReadOnlyException;
546
547 /**
548 * Sets a specific version of the Core Program as current. The sequence
549 * number must be greater than the existing current Core Program version.
550 * This will truncate the current version's end date to the
551 * currentVersionStart param. If a Major exists which is set to become
552 * current in the future, that Major's currentVersionStart and
553 * CurrentVersionEnd will be nullified. The currentVersionStart must be in
554 * the future to prevent changing historic data.
555 *
556 * @param coreProgramId Version Specific Id of the Core Program
557 * @param currentVersionStart Date when this Core Program becomes current.
558 * Must be in the future and be after the most current major's
559 * start date.
560 * @return status of the operation (success or failure)
561 * @throws DoesNotExistException Core Program for coreProgramId does not
562 * exist
563 * @throws InvalidParameterException invalid coreProgramId,
564 * currentVersionStart
565 * @throws MissingParameterException invalid coreProgramId
566 * @throws IllegalVersionSequencingException a CoreProgram with higher
567 * sequence number from the one provided is marked current
568 * @throws OperationFailedException unable to complete request
569 * @throws PermissionDeniedException authorization failure
570 * @throws DataValidationErrorException
571 */
572 public StatusInfo setCurrentCoreProgramVersion(@WebParam(name = "coreProgramId") String coreProgramId, @WebParam(name = "currentVersionStart") Date currentVersionStart,
573 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, IllegalVersionSequencingException,
574 OperationFailedException, PermissionDeniedException, DataValidationErrorException;
575
576 /**
577 * Updates a Core Program
578 *
579 * @param coreProgramInfo coreProgramInfo
580 * @return updated Core Program
581 * @throws DataValidationErrorException One or more values invalid for this
582 * operation
583 * @throws DoesNotExistException Core Program not found
584 * @throws InvalidParameterException invalid Core Program
585 * @throws MissingParameterException missing Core Program
586 * @throws VersionMismatchException The action was attempted on an out of
587 * date version
588 * @throws OperationFailedException unable to complete request
589 * @throws PermissionDeniedException authorization failure
590 */
591 public CoreProgramInfo updateCoreProgram(@WebParam(name = "coreProgramId") String coreProgramId, @WebParam(name = "coreProgramTypeKey") String coreProgramTypeKey,
592 @WebParam(name = "coreProgramInfo") CoreProgramInfo coreProgramInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException,
593 InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException;
594
595 /**
596 * Deletes a Core Program
597 *
598 * @param coreProgramId identifier for coreProgramId.Maps to cluId
599 * @return status of the operation (success or failure)
600 * @throws DoesNotExistException Core Program does not exist
601 * @throws InvalidParameterException invalid coreProgramId
602 * @throws MissingParameterException invalid coreProgramId
603 * @throws OperationFailedException unable to complete request
604 * @throws PermissionDeniedException authorization failure
605 */
606 public StatusInfo deleteCoreProgram(@WebParam(name = "coreProgramId") String coreProgramId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
607 InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
608
609 /**
610 * Retrieves a ProgramRequirement
611 *
612 * @param programRequirementId Unique Id of the ProgramRequirement. Maps to
613 * cluId
614 * @return the Program Requirement
615 * @throws DoesNotExistException Program Requirement does not exist
616 * @throws InvalidParameterException invalid Program Requirement
617 * @throws MissingParameterException missing Program Requirement
618 * @throws OperationFailedException unable to complete request
619 * @throws PermissionDeniedException authorization failure
620 */
621 public ProgramRequirementInfo getProgramRequirement(@WebParam(name = "programRequirementId") String programRequirementId, @WebParam(name = "contextInfo") ContextInfo contextInfo)
622 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
623
624 /**
625 *
626 * Retrieves a list of ProgramRequirements by Ids
627 *
628 * @param programRequirementIds
629 * @param contextInfo
630 * @return
631 * @throws DoesNotExistException
632 * @throws InvalidParameterException
633 * @throws MissingParameterException
634 * @throws OperationFailedException
635 * @throws PermissionDeniedException
636 */
637 public List<ProgramRequirementInfo> getProgramRequirementsByIds(@WebParam(name = "programRequirementIds") List<String> programRequirementIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
638 InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
639
640 /**
641 * Validates a Program Requirement against its data dictionary
642 *
643 * @param validationType identifier of the extent of validation
644 * @param programRequirementInfo Program Requirement information to be
645 * tested
646 * @return results from performing the validation
647 * @throws InvalidParameterException invalid validationTypeKey, cluInfo
648 * @throws MissingParameterException missing validationTypeKey, cluInfo
649 * @throws OperationFailedException unable to complete request
650 */
651 public List<ValidationResultInfo> validateProgramRequirement(@WebParam(name = "validationType") String validationType,
652 @WebParam(name = "programRequirementInfo") ProgramRequirementInfo programRequirementInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException,
653 MissingParameterException, OperationFailedException;
654
655 /**
656 * Creates a Program Requirement
657 *
658 * @param programRequirementInfo programRequirementInfo
659 * @return the created Program Requirement
660 * @throws AlreadyExistsException The Program Requirement already exists
661 * @throws DataValidationErrorException One or more values invalid for this
662 * operation
663 * @throws InvalidParameterException invalid Program Requirement
664 * @throws MissingParameterException missing Program Requirement
665 * @throws OperationFailedException unable to complete request
666 * @throws PermissionDeniedException authorization failure
667 */
668 public ProgramRequirementInfo createProgramRequirement(@WebParam(name = "programRequirementTypeKey") String programRequirementTypeKey,
669 @WebParam(name = "programRequirementInfo") ProgramRequirementInfo programRequirementInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws AlreadyExistsException,
670 DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
671
672 /**
673 * Updates a Program Requirement
674 *
675 * @param programRequirementInfo programRequirementInfo
676 * @return updated Program Requirement
677 * @throws DataValidationErrorException One or more values invalid for this
678 * operation
679 * @throws DoesNotExistException Program Requirement not found
680 * @throws InvalidParameterException invalid Program Requirement
681 * @throws MissingParameterException missing Program Requirement
682 * @throws VersionMismatchException The action was attempted on an out of
683 * date version
684 * @throws OperationFailedException unable to complete request
685 * @throws PermissionDeniedException authorization failure
686 */
687 public ProgramRequirementInfo updateProgramRequirement(@WebParam(name = "programRequirementId") String programRequirementId,
688 @WebParam(name = "programRequirementTypeKey") String programRequirementTypeKey, @WebParam(name = "programRequirementInfo") ProgramRequirementInfo programRequirementInfo,
689 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException,
690 VersionMismatchException, OperationFailedException, PermissionDeniedException;
691
692 /**
693 * Deletes a Program Requirement
694 *
695 * @param programRequirementId identifier for programRequirementId.Maps to
696 * cluId
697 * @return status of the operation (success or failure)
698 * @throws DoesNotExistException Program Requirement does not exist
699 * @throws InvalidParameterException invalid programRequirementId
700 * @throws MissingParameterException invalid programRequirementId
701 * @throws OperationFailedException unable to complete request
702 * @throws PermissionDeniedException authorization failure
703 */
704 public StatusInfo deleteProgramRequirement(@WebParam(name = "programRequirementId") String programRequirementId, @WebParam(name = "contextInfo") ContextInfo contextInfo)
705 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
706
707 /**
708 * Sets a specific version of the Major as current. The sequence number must
709 * be greater than the existing current Major version. This will truncate
710 * the current version's end date to the currentVersionStart param. If a
711 * Major exists which is set to become current in the future, that Major's
712 * currentVersionStart and CurrentVersionEnd will be nullified. The
713 * currentVersionStart must be in the future to prevent changing historic
714 * data.
715 *
716 * @param majorDisciplineId Version Specific Id of the Major Discipline
717 * @param currentVersionStart Date when this Major becomes current. Must be
718 * in the future and be after the most current major's start
719 * date.
720 * @return status of the operation (success or failure)
721 * @throws DoesNotExistException Major for majorVersionId does not exist
722 * @throws InvalidParameterException invalid majorVersionId,
723 * currentVersionStart
724 * @throws MissingParameterException invalid majorVersionId
725 * @throws IllegalVersionSequencingException a Major with higher sequence
726 * number from the one provided is marked current
727 * @throws OperationFailedException unable to complete request
728 * @throws PermissionDeniedException authorization failure
729 * @throws DataValidationErrorException
730 */
731 public StatusInfo setCurrentMajorDisciplineVersion(@WebParam(name = "majorDisciplineId") String majorDisciplineId, @WebParam(name = "currentVersionStart") Date currentVersionStart,
732 @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, IllegalVersionSequencingException,
733 OperationFailedException, PermissionDeniedException, DataValidationErrorException;
734
735 /**
736 * Retrieves a MinorDiscipline
737 *
738 * @param minorDisciplineId Unique Id of the MinorDiscipline. Maps to cluId
739 * @return the created MinorDiscipline
740 * @throws DoesNotExistException MinorDiscipline does not exist
741 * @throws InvalidParameterException invalid MinorDiscipline
742 * @throws MissingParameterException missing MinorDiscipline
743 * @throws OperationFailedException unable to complete request
744 * @throws PermissionDeniedException authorization failure
745 */
746 public MinorDisciplineInfo getMinorDiscipline(@WebParam(name = "minorDisciplineId") String minorDisciplineId, @WebParam(name = "contextInfo") ContextInfo contextInfo)
747 throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
748
749 /**
750 * Retrieves the list of Minor Discipline Program a given Credential Program
751 * Type.
752 *
753 * @param programType Type of Credential Program
754 * @return List of Minor Disciplines for the given Credential Program Type
755 * @throws DoesNotExistException program type not found
756 * @throws InvalidParameterException invalid program type
757 * @throws MissingParameterException program type is not specified
758 * @throws OperationFailedException unable to complete request
759 */
760 public List<String> getMinorsByCredentialProgramType(@WebParam(name = "programType") String programType, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
761 InvalidParameterException, MissingParameterException, OperationFailedException;
762
763 /**
764 * Validates a Minor discipline against its data dictionary
765 *
766 * @param validationType identifier of the extent of validation
767 * @param minorDisciplineInfo Minor discipline information to be tested
768 * @return results from performing the validation
769 * @throws InvalidParameterException invalid validationTypeKey, cluInfo
770 * @throws MissingParameterException missing validationTypeKey, cluInfo
771 * @throws OperationFailedException unable to complete request
772 */
773 public List<ValidationResultInfo> validateMinorDiscipline(@WebParam(name = "validationType") String validationType,
774 @WebParam(name = "minorDisciplineInfo") MinorDisciplineInfo minorDisciplineInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException,
775 MissingParameterException, OperationFailedException;
776
777 /**
778 * Creates a Minor Discipline Program
779 *
780 * @param minorDisciplineInfo minorDisciplineInfo
781 * @return the created Minor Discipline
782 * @throws AlreadyExistsException The Minor already exists
783 * @throws DataValidationErrorException One or more values invalid for this
784 * operation
785 * @throws InvalidParameterException invalid Minor
786 * @throws MissingParameterException missing Minor
787 * @throws OperationFailedException unable to complete request
788 * @throws PermissionDeniedException authorization failure
789 */
790 public MinorDisciplineInfo createMinorDiscipline(@WebParam(name = "minorDisciplineTypeKey") String minorDisciplineTypeKey,
791 @WebParam(name = "minorDisciplineInfo") MinorDisciplineInfo minorDisciplineInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws AlreadyExistsException,
792 DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
793
794 /**
795 * Updates a Minor Discipline
796 *
797 * @param minorDisciplineInfo minorDisciplineInfo
798 * @return updated Minor Discipline
799 * @throws DataValidationErrorException One or more values invalid for this
800 * operation
801 * @throws DoesNotExistException Minor not found
802 * @throws InvalidParameterException invalid Minor
803 * @throws MissingParameterException missing Minor
804 * @throws VersionMismatchException The action was attempted on an out of
805 * date version
806 * @throws OperationFailedException unable to complete request
807 * @throws PermissionDeniedException authorization failure
808 */
809 public MinorDisciplineInfo updateMinorDiscipline(@WebParam(name = "minorDisciplineId") String minorDisciplineId, @WebParam(name = "minorDisciplineTypeKey") String minorDisciplineTypeKey,
810 @WebParam(name = "minorDisciplineInfo") MinorDisciplineInfo minorDisciplineInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException,
811 DoesNotExistException, InvalidParameterException, MissingParameterException, VersionMismatchException, OperationFailedException, PermissionDeniedException;
812
813 /**
814 * Deletes a Minor Discipline
815 *
816 * @param minorDisciplineId identifier for minorDisciplineId.Maps to cluId
817 * @return status of the operation (success or failure)
818 * @throws DoesNotExistException Minor does not exist
819 * @throws InvalidParameterException invalid minorDisciplineId
820 * @throws MissingParameterException invalid minorDisciplineId
821 * @throws OperationFailedException unable to complete request
822 * @throws PermissionDeniedException authorization failure
823 */
824 public StatusInfo deleteMinorDiscipline(@WebParam(name = "minorDisciplineId") String minorDisciplineId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
825 InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
826
827 @Deprecated
828 /**
829 *
830 * This method ...
831 *
832 * @param majorDisciplineId
833 * @param contextInfo
834 * @return
835 * @throws DoesNotExistException
836 * @throws InvalidParameterException
837 * @throws MissingParameterException
838 * @throws OperationFailedException
839 */
840 public List<ProgramVariationInfo> getVariationsByMajorDisciplineId(@WebParam(name="majorDisciplineId") String majorDisciplineId, @WebParam(name="contextInfo") ContextInfo contextInfo)
841 throws DoesNotExistException, InvalidParameterException,
842 MissingParameterException, OperationFailedException;
843
844 }