Coverage Report - org.kuali.student.core.academiccalendar.service.AcademicCalendarService
 
Classes in this File Line Coverage Branch Coverage Complexity
AcademicCalendarService
N/A
N/A
1
 
 1  
 /**
 2  
  * Copyright 2010 The Kuali Foundation Licensed under the
 3  
  * Educational Community License, Version 2.0 (the "License"); you may
 4  
  * not use this file except in compliance with the License. You may
 5  
  * obtain a copy of the License at
 6  
  *
 7  
  * http://www.osedu.org/licenses/ECL-2.0
 8  
  *
 9  
  * Unless required by applicable law or agreed to in writing,
 10  
  * software distributed under the License is distributed on an "AS IS"
 11  
  * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 12  
  * or implied. See the License for the specific language governing
 13  
  * permissions and limitations under the License.
 14  
  */
 15  
 
 16  
 package org.kuali.student.core.academiccalendar.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.service.TypeService;
 26  
 import org.kuali.student.common.service.StateService;
 27  
 import org.kuali.student.common.util.constants.AcademicCalendarServiceConstants;
 28  
 import org.kuali.student.datadictionary.service.DataDictionaryService;
 29  
 
 30  
 import org.kuali.student.core.academiccalendar.dto.AcademicCalendarInfo;
 31  
 import org.kuali.student.core.academiccalendar.dto.CampusCalendarInfo;
 32  
 import org.kuali.student.core.academiccalendar.dto.TermInfo;
 33  
 import org.kuali.student.core.academiccalendar.dto.KeyDateInfo;
 34  
 import org.kuali.student.core.academiccalendar.dto.HolidayInfo;
 35  
 import org.kuali.student.core.academiccalendar.dto.RegistrationDateGroupInfo;
 36  
 
 37  
 import org.kuali.student.r2.common.dto.ContextInfo;
 38  
 import org.kuali.student.r2.common.dto.StatusInfo;
 39  
 import org.kuali.student.r2.common.dto.ValidationResultInfo;
 40  
 
 41  
 import org.kuali.student.r2.common.exceptions.AlreadyExistsException;
 42  
 import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
 43  
 import org.kuali.student.r2.common.exceptions.DoesNotExistException;
 44  
 import org.kuali.student.r2.common.exceptions.InvalidParameterException;
 45  
 import org.kuali.student.r2.common.exceptions.MissingParameterException;
 46  
 import org.kuali.student.r2.common.exceptions.OperationFailedException;
 47  
 import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
 48  
 import org.kuali.student.r2.common.exceptions.VersionMismatchException;
 49  
 
 50  
 /**
 51  
  * Academic Calendar Service Description and Assumptions.
 52  
  *
 53  
  * This service manages Academic Calendars. An Academic Calendar is
 54  
  * related to a credential program type and contains Terms. The Terms
 55  
  * are managed as nested objects inside the Academic Calendar at this
 56  
  * level.
 57  
  *
 58  
  * Key Dates are mapped to Terms but are managed through the service
 59  
  * independent of the Term. This is to allow a reference to a Term
 60  
  * that does not retrieve all the key date information that may relate
 61  
  * to the Term.
 62  
  *
 63  
  * Terms may be nested at this level. A Term may contain another Term
 64  
  * and each of these sub-Terms may have their own key
 65  
  * dates. Convenience service methods exist to query all the key dates
 66  
  * for an Academic Calendar or parent Term.
 67  
  *
 68  
  * An Academic Calendar also has a Campus Calendar. The Campus
 69  
  * Calendar has a campus location, and include the key dates and
 70  
  * holidays that are specific to a campus. The same Campus Calendar
 71  
  * can be used for multiple Academic Calendars.
 72  
  *
 73  
  * Version: 1.0 (Dev)
 74  
  *
 75  
  * @Author tom
 76  
  * @Since Sun Apr 10 14:22:34 EDT 2011
 77  
  */
 78  
 
 79  
 @WebService(name = "AcademicCalendarService", targetNamespace = AcademicCalendarServiceConstants.NAMESPACE)
 80  
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 81  
 public interface AcademicCalendarService extends DataDictionaryService, TypeService, StateService {
 82  
 
 83  
     /** 
 84  
      * Retrieves the details of a single Academic Calendar by an
 85  
      * academic calendar key.
 86  
      *
 87  
      * @param academicCalendarKey Unique key of the Academic Calendar to be retrieved
 88  
      * @param context Context information containing the principalId
 89  
      *                and locale information about the caller of service
 90  
      *                operation
 91  
      * @return the details of the Academic Calendar requested
 92  
      * @throws DoesNotExistException academicCalendarKey not found
 93  
      * @throws InvalidParameterException invalid academicCalendarKey
 94  
      * @throws MissingParameterException missing academicCalendarKey
 95  
      * @throws OperationFailedException unable to complete request
 96  
      * @throws PermissionDeniedException authorization failure
 97  
      */
 98  
     public AcademicCalendarInfo getAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 99  
 
 100  
     /** 
 101  
      * Retrieves a list Academic Calendars corresponding to a list of
 102  
      * academic calendar keys.
 103  
      *
 104  
      * @param academicCalendarKeyList list of unique keys of the
 105  
      *        Academic Calendar to be retrieved
 106  
      * @param context Context information containing the principalId
 107  
      *                and locale information about the caller of service
 108  
      *                operation
 109  
      * @return a list of Academic Calendars
 110  
      * @throws DoesNotExistException an  academicCalendarKey in list not found
 111  
      * @throws InvalidParameterException invalid academicCalendarKey in list
 112  
      * @throws MissingParameterException missing academicCalendarKeyList
 113  
      * @throws OperationFailedException unable to complete request
 114  
      * @throws PermissionDeniedException authorization failure
 115  
      */
 116  
     public List<AcademicCalendarInfo> getAcademicCalendarsByKeyList(@WebParam(name = "academicCalendarKeyList") List<String> academicCalendarKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 117  
 
 118  
     /** 
 119  
      * Retrieves a list of Academic Calendar Keys by Type.
 120  
      *
 121  
      * @param academicCalendarTypeKey a Type of Academic Calendar to be retrieved
 122  
      * @param context Context information containing the principalId
 123  
      *                and locale information about the caller of service
 124  
      *                operation
 125  
      * @return a list of Academic Calendars of the given Type
 126  
      * @throws InvalidParameterException invalid academicCalendarTypeKey
 127  
      * @throws MissingParameterException missing academicCalendarTypeKey
 128  
      * @throws OperationFailedException unable to complete request
 129  
      * @throws PermissionDeniedException authorization failure
 130  
      */
 131  
     public List<String> getAcademicCalendarKeysByType(@WebParam(name = "academicCalendarTypeKey") String academicCalendarTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 132  
 
 133  
     /** 
 134  
      * Retrieves a list of Academic Calendars that pertain to the
 135  
      * given year.
 136  
      *
 137  
      * @param year 
 138  
      * @param context Context information containing the principalId
 139  
      *                and locale information about the caller of service
 140  
      *                operation
 141  
      * @return a list of Academic Calendars 
 142  
      * @throws InvalidParameterException invalid year
 143  
      * @throws MissingParameterException missing year
 144  
      * @throws OperationFailedException unable to complete request
 145  
      * @throws PermissionDeniedException authorization failure
 146  
      */
 147  
     public List<AcademicCalendarInfo> getAcademicCalendarsByYear(@WebParam(name = "year") Integer year, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 148  
 
 149  
     /** 
 150  
      * Retrieves a list of Academic Calendars mapped to a credential
 151  
      * program type.
 152  
      *
 153  
      * @param credentialProgramTypeKey a Type of a credential program
 154  
      * @param context Context information containing the principalId
 155  
      *                and locale information about the caller of service
 156  
      *                operation
 157  
      * @return a list of Academic Calendars
 158  
      * @throws InvalidParameterException invalid credentialProgramTypeKey
 159  
      * @throws MissingParameterException missing credentialProgramTypeKey
 160  
      * @throws OperationFailedException unable to complete request
 161  
      * @throws PermissionDeniedException authorization failure
 162  
      */
 163  
     public List<AcademicCalendarInfo> getAcademicCalendarsByCredentialProgramType(@WebParam(name = "credentialProgramTypeKey") String credentialProgramTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 164  
 
 165  
     /** 
 166  
      * Retrieves a list of Academic Calendars mapped to a credential
 167  
      * program type and pertains to the given year.
 168  
      *
 169  
      * @param credentialProgramTypeKey a Type of a credential program
 170  
      * @param year
 171  
      * @param context Context information containing the principalId
 172  
      *                and locale information about the caller of service
 173  
      *                operation
 174  
      * @return a list of Academic Calendars
 175  
      * @throws InvalidParameterException invalid credentialProgramType or year
 176  
      * @throws MissingParameterException missing credentialProgramTypeKey or year
 177  
      * @throws OperationFailedException unable to complete request
 178  
      * @throws PermissionDeniedException authorization failure
 179  
      */
 180  
     public List<AcademicCalendarInfo> getAcademicCalendarsByCredentialProgramTypeForYear(@WebParam(name = "credentialProgramTypeKey") String credentialProgramTypeKey, @WebParam(name = "year") Integer year, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 181  
 
 182  
     /** 
 183  
      * Validates an academic calendar. Depending on the value of
 184  
      * validationType, this validation could be limited to tests on
 185  
      * just the current object and its directly contained subobjects
 186  
      * or expanded to perform all tests related to this object. If an
 187  
      * identifier is present for the academic calendar and a record
 188  
      * is found for that identifier, the validation checks if the
 189  
      * academic calendar can be shifted to the new values. If a
 190  
      * record cannot be found for the identifier, it is assumed that
 191  
      * the record does not exist and as such, the checks performed
 192  
      * will be much shallower, typically mimicking those performed by
 193  
      * setting the validationType to the current object. This is a
 194  
      * slightly different pattern from the standard validation as the
 195  
      * caller provides the identifier in the create statement instead
 196  
      * of the server assigning an identifier.
 197  
      *
 198  
      * @param validationType Identifier of the extent of validation
 199  
      * @param academicCalendarInfo the academic calendar information to be tested.
 200  
      * @param context Context information containing the principalId
 201  
      *                and locale information about the caller of service
 202  
      *                operation
 203  
      * @return the results from performing the validation
 204  
      * @throws DoesNotExistException validationTypeKey not found
 205  
      * @throws InvalidParameterException invalid validationTypeKey, academicCalendarInfo
 206  
      * @throws MissingParameterException missing validationTypeKey, academicCalendarInfo
 207  
      * @throws OperationFailedException unable to complete request
 208  
      */
 209  
     public List<ValidationResultInfo> validateAcademicCalendar(@WebParam(name = "validationType") String validationType, @WebParam(name = "academicCalendarInfo") AcademicCalendarInfo academicCalendarInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 210  
 
 211  
     /** 
 212  
      * Creates a new Academic Calendar.
 213  
      *
 214  
      * @param academicCalendarKey the key of the Academic Calendar to be created
 215  
      * @param academicCalendarInfo Details of the Academic Calendar to be created
 216  
      * @param context Context information containing the principalId
 217  
      *                and locale information about the caller of service
 218  
      *                operation
 219  
      * @return the details of the Academic Calendar just created
 220  
      * @throws AlreadyExistsException the Academic Calendar being created already exists
 221  
      * @throws DataValidationErrorException One or more values invalid for this operation
 222  
      * @throws InvalidParameterException One or more parameters invalid
 223  
      * @throws MissingParameterException One or more parameters missing
 224  
      * @throws OperationFailedException unable to complete request
 225  
      * @throws PermissionDeniedException authorization failure
 226  
      */
 227  
     public AcademicCalendarInfo createAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "academicCalendarInfo") AcademicCalendarInfo academicCalendarInfo, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 228  
 
 229  
     /** 
 230  
      * Updates an existing Academic Calendar.
 231  
      *
 232  
      * @param academicCalendarKey Key of Academic Calendar to be updated
 233  
      * @param academicCalendarInfo Details of updates to the Academic
 234  
      *        Calendar being updated
 235  
      * @param context Context information containing the principalId
 236  
      *                and locale information about the caller of service
 237  
      *                operation
 238  
      * @return the details of Academic Calendar just updated
 239  
      * @throws DataValidationErrorException One or more values invalid for this 
 240  
      *         operation
 241  
      * @throws DoesNotExistException the Academic Calendar does not exist
 242  
      * @throws InvalidParameterException One or more parameters invalid
 243  
      * @throws MissingParameterException One or more parameters missing
 244  
      * @throws OperationFailedException unable to complete request
 245  
      * @throws PermissionDeniedException authorization failure
 246  
      * @throws VersionMismatchException The action was attempted on an out of date 
 247  
      *         version.
 248  
      */
 249  
     public AcademicCalendarInfo updateAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "academicCalendarInfo") AcademicCalendarInfo academicCalendarInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 250  
 
 251  
     /** 
 252  
      * Deletes an existing Academic Calendar.
 253  
      *
 254  
      * @param academicCalendarKey the key of the Academic Calendar to
 255  
      *        be deleted
 256  
      * @param context Context information containing the principalId
 257  
      *                and locale information about the caller of service
 258  
      *                operation
 259  
      * @return status of the operation (success, failed)
 260  
      * @throws DoesNotExistException the Academic Calendar does not exist
 261  
      * @throws InvalidParameterException One or more parameters invalid
 262  
      * @throws MissingParameterException One or more parameters missing
 263  
      * @throws OperationFailedException unable to complete request
 264  
      * @throws PermissionDeniedException authorization failure
 265  
      */
 266  
     public StatusInfo deleteAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 267  
 
 268  
     /** 
 269  
      * Copy an Academic Calendar. The associated Terms and key dates
 270  
      * are also copied and related to this new calendar. This copy
 271  
      * operation allows for a calendar template to be created from an
 272  
      * existing calendar in which the dates of the Terms and
 273  
      * Key Dates will be updated.
 274  
      *
 275  
      * Currently, this method does not perform any date
 276  
      * transformations on the Terms and key dates (Labor Day has a
 277  
      * new date). A rollover process needs to make a copy of a
 278  
      * calendar and set the new dates for the new year.
 279  
      *
 280  
      * @param academicCalendarKey the key of the Academic Calendar to
 281  
      *        be copied
 282  
      * @param newAcademicCalendarKey the key of the new copy of the
 283  
      *        Academic Calendar
 284  
      * @param context Context information containing the principalId
 285  
      *                and locale information about the caller of service
 286  
      *                operation
 287  
      * @return status of the operation (success, failed)
 288  
      * @throws AlreadyExistsException newAcademicCalendarKey already exists
 289  
      * @throws DoesNotExistException the Academic Calendar does not exist
 290  
      * @throws InvalidParameterException One or more parameters invalid
 291  
      * @throws MissingParameterException One or more parameters missing
 292  
      * @throws OperationFailedException unable to complete request
 293  
      * @throws PermissionDeniedException authorization failure
 294  
      */
 295  
     public AcademicCalendarInfo copyAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "newAcademicCalendarKey") String newAcademicCalendarKey, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 296  
 
 297  
     /** 
 298  
      * Generates calendaring data for the Terms and key dates in an
 299  
      * Academic Calendar. The format of the data is specified by the
 300  
      * calendarDataFormatType. An example of such a type is VCALENDAR.
 301  
      *
 302  
      * @param academicCalendarKey the key of the Academic Calendar to
 303  
      *        be retrieved
 304  
      * @param calendarDataFormatTypeKey the type of format
 305  
      * @param context Context information containing the principalId
 306  
      *                and locale information about the caller of service
 307  
      *                operation
 308  
      * @return status of the operation (success, failed)
 309  
      * @throws DoesNotExistException the Academic Calendar or format
 310  
      *         type does not exist
 311  
      * @throws InvalidParameterException One or more parameters invalid
 312  
      * @throws MissingParameterException One or more parameters missing
 313  
      * @throws OperationFailedException unable to complete request
 314  
      * @throws PermissionDeniedException authorization failure
 315  
      */
 316  
     public String getAcademicCalendarData(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "calendarDataFormatTypeKey") String calendarDataFormatTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 317  
 
 318  
     /** 
 319  
      * Retrieves the details of a single Campus Calendar by an
 320  
      * campus calendar key.
 321  
      *
 322  
      * @param campusCalendarKey Unique key of the Campus Calendar to be retrieved
 323  
      * @param context Context information containing the principalId
 324  
      *                and locale information about the caller of service
 325  
      *                operation
 326  
      * @return the details of the Campus Calendar requested
 327  
      * @throws DoesNotExistException campusCalendarKey not found
 328  
      * @throws InvalidParameterException invalid campusCalendarKey
 329  
      * @throws MissingParameterException missing campusCalendarKey
 330  
      * @throws OperationFailedException unable to complete request
 331  
      * @throws PermissionDeniedException authorization failure
 332  
      */
 333  
     public CampusCalendarInfo getCampusCalendar(@WebParam(name = "campusCalendarKey") String campusCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 334  
 
 335  
     /** 
 336  
      * Retrieves a list Campus Calendars corresponding to a list of
 337  
      * campus calendar keys.
 338  
      *
 339  
      * @param campusCalendarKeyList list of unique keys of the
 340  
      *        Campus Calendar to be retrieved
 341  
      * @param context Context information containing the principalId
 342  
      *                and locale information about the caller of service
 343  
      *                operation
 344  
      * @return a list of Campus Calendars
 345  
      * @throws DoesNotExistException a campusCalendarKey in list not found
 346  
      * @throws InvalidParameterException invalid campusCalendarKey in list
 347  
      * @throws MissingParameterException missing campusCalendarKeyList
 348  
      * @throws OperationFailedException unable to complete request
 349  
      * @throws PermissionDeniedException authorization failure
 350  
      */
 351  
     public List<CampusCalendarInfo> getCampusCalendarsByKeyList(@WebParam(name = "campusCalendarKeyList") List<String> campusCalendarKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 352  
 
 353  
     /** 
 354  
      * Retrieves a list of Campus Calendars by Type.
 355  
      *
 356  
      * @param campusCalendarTypeKey a Type of Campus Calendar to be retrieved
 357  
      * @param context Context information containing the principalId
 358  
      *                and locale information about the caller of service
 359  
      *                operation
 360  
      * @return a list of Campus Calendars of the given Type
 361  
      * @throws InvalidParameterException invalid campusCalendarTypeKey
 362  
      * @throws MissingParameterException missing campusCalendarTypeKey
 363  
      * @throws OperationFailedException unable to complete request
 364  
      * @throws PermissionDeniedException authorization failure
 365  
      */
 366  
     public List<String> getCampusCalendarKeysByType(@WebParam(name = "campusCalendarTypeKey") String campusCalendarTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 367  
 
 368  
     /** 
 369  
      * Retrieves a list of Campus Calendars that pertain to the
 370  
      * given year.
 371  
      *
 372  
      * @param year 
 373  
      * @param context Context information containing the principalId
 374  
      *                and locale information about the caller of service
 375  
      *                operation
 376  
      * @return a list of Campus Calendars 
 377  
      * @throws InvalidParameterException invalid year
 378  
      * @throws MissingParameterException missing year
 379  
      * @throws OperationFailedException unable to complete request
 380  
      * @throws PermissionDeniedException authorization failure
 381  
      */
 382  
     public List<CampusCalendarInfo> getCampusCalendarsByYear(@WebParam(name = "year") Integer year, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 383  
 
 384  
     /** 
 385  
      * Validates a campus calendar. Depending on the value of
 386  
      * validationType, this validation could be limited to tests on
 387  
      * just the current object and its directly contained subobjects
 388  
      * or expanded to perform all tests related to this object. If an
 389  
      * identifier is present for the campus calendar and a record
 390  
      * is found for that identifier, the validation checks if the
 391  
      * campus calendar can be shifted to the new values. If a
 392  
      * record cannot be found for the identifier, it is assumed that
 393  
      * the record does not exist and as such, the checks performed
 394  
      * will be much shallower, typically mimicking those performed by
 395  
      * setting the validationType to the current object. This is a
 396  
      * slightly different pattern from the standard validation as the
 397  
      * caller provides the identifier in the create statement instead
 398  
      * of the server assigning an identifier.
 399  
      *
 400  
      * @param validationType Identifier of the extent of validation
 401  
      * @param campusCalendarInfo the campus calendar information to be tested.
 402  
      * @param context Context information containing the principalId
 403  
      *                and locale information about the caller of service
 404  
      *                operation
 405  
      * @return the results from performing the validation
 406  
      * @throws DoesNotExistException validationTypeKey not found
 407  
      * @throws InvalidParameterException invalid validationTypeKey, campusCalendarInfo
 408  
      * @throws MissingParameterException missing validationTypeKey, campusCalendarInfo
 409  
      * @throws OperationFailedException unable to complete request
 410  
      */
 411  
     public List<ValidationResultInfo> validateCampusCalendar(@WebParam(name = "validationType") String validationType, @WebParam(name = "campusCalendarInfo") CampusCalendarInfo campusCalendarInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 412  
 
 413  
     /** 
 414  
      * Creates a new Campus Calendar.
 415  
      *
 416  
      * @param campusCalendarKey the key of the Campus Calendar to be created
 417  
      * @param campusCalendarInfo Details of the Campus Calendar to be created
 418  
      * @param context Context information containing the principalId
 419  
      *                and locale information about the caller of service
 420  
      *                operation
 421  
      * @return the details of the Campus Calendar just created
 422  
      * @throws AlreadyExistsException the Campus Calendar being created already exists
 423  
      * @throws DataValidationErrorException One or more values invalid for this operation
 424  
      * @throws InvalidParameterException One or more parameters invalid
 425  
      * @throws MissingParameterException One or more parameters missing
 426  
      * @throws OperationFailedException unable to complete request
 427  
      * @throws PermissionDeniedException authorization failure
 428  
      */
 429  
     public CampusCalendarInfo createCampusCalendar(@WebParam(name = "campusCalendarKey") String campusCalendarKey, @WebParam(name = "campusCalendarInfo") CampusCalendarInfo campusCalendarInfo, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 430  
 
 431  
     /** 
 432  
      * Updates an existing Campus Calendar.
 433  
      *
 434  
      * @param campusCalendarKey Key of Campus Calendar to be updated
 435  
      * @param campusCalendarInfo Details of updates to the Campus
 436  
      *        Calendar being updated
 437  
      * @param context Context information containing the principalId
 438  
      *                and locale information about the caller of service
 439  
      *                operation
 440  
      * @return the details of Campus Calendar just updated
 441  
      * @throws DataValidationErrorException One or more values invalid for this 
 442  
      *         operation
 443  
      * @throws DoesNotExistException the Campus Calendar does not exist
 444  
      * @throws InvalidParameterException One or more parameters invalid
 445  
      * @throws MissingParameterException One or more parameters missing
 446  
      * @throws OperationFailedException unable to complete request
 447  
      * @throws PermissionDeniedException authorization failure
 448  
      * @throws VersionMismatchException The action was attempted on an out of date 
 449  
      *         version.
 450  
      */
 451  
     public CampusCalendarInfo updateCampusCalendar(@WebParam(name = "campusCalendarKey") String campusCalendarKey, @WebParam(name = "campusCalendarInfo") CampusCalendarInfo campusCalendarInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 452  
 
 453  
     /** 
 454  
      * Deletes an existing Campus Calendar.
 455  
      *
 456  
      * @param campusCalendarKey the key of the Campus Calendar to
 457  
      *        be deleted
 458  
      * @param context Context information containing the principalId
 459  
      *                and locale information about the caller of service
 460  
      *                operation
 461  
      * @return status of the operation (success, failed)
 462  
      * @throws DoesNotExistException the Campus Calendar does not exist
 463  
      * @throws InvalidParameterException One or more parameters invalid
 464  
      * @throws MissingParameterException One or more parameters missing
 465  
      * @throws OperationFailedException unable to complete request
 466  
      * @throws PermissionDeniedException authorization failure
 467  
      */
 468  
     public StatusInfo deleteCampusCalendar(@WebParam(name = "campusCalendarKey") String campusCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 469  
 
 470  
     /** 
 471  
      * Retrieves the details of a single Term by a term key.
 472  
      *
 473  
      * @param termKey Unique key of the Term to be retrieved
 474  
      * @param context Context information containing the principalId
 475  
      *                and locale information about the caller of service
 476  
      *                operation
 477  
      * @return the details of the Term requested
 478  
      * @throws DoesNotExistException termKey not found
 479  
      * @throws InvalidParameterException invalid termKey
 480  
      * @throws MissingParameterException missing termKey
 481  
      * @throws OperationFailedException unable to complete request
 482  
      * @throws PermissionDeniedException authorization failure
 483  
      */
 484  
     public TermInfo getTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 485  
 
 486  
     /** 
 487  
      * Retrieves a list Terms corresponding to a list of
 488  
      * terms keys.
 489  
      *
 490  
      * @param termKeyList list of unique keys of the
 491  
      *        Term to be retrieved
 492  
      * @param context Context information containing the principalId
 493  
      *                and locale information about the caller of service
 494  
      *                operation
 495  
      * @return a list of Terms
 496  
      * @throws DoesNotExistException a termKey in list not found
 497  
      * @throws InvalidParameterException invalid termKey in list
 498  
      * @throws MissingParameterException missing termKeyList
 499  
      * @throws OperationFailedException unable to complete request
 500  
      * @throws PermissionDeniedException authorization failure
 501  
      */
 502  
     public List<TermInfo> getTermsByKeyList(@WebParam(name = "termKeyList") List<String> termKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 503  
 
 504  
     /** 
 505  
      * Retrieves a list of Terms by Type.
 506  
      *
 507  
      * @param termTypeKey a Type of Term to be retrieved
 508  
      * @param context Context information containing the principalId
 509  
      *                and locale information about the caller of service
 510  
      *                operation
 511  
      * @return a list of Terms of the given Type
 512  
      * @throws InvalidParameterException invalid termTypeKey
 513  
      * @throws MissingParameterException missing termTypeKey
 514  
      * @throws OperationFailedException unable to complete request
 515  
      * @throws PermissionDeniedException authorization failure
 516  
      */
 517  
     public List<String> getTermKeysByType(@WebParam(name = "termTypeKey") String termTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 518  
 
 519  
     /** 
 520  
      * Retrieves a list Terms mapped to the given Academic Calendar.
 521  
      *
 522  
      * Mappings are managed through Type configuration and inferred by
 523  
      * the dates of the calendar and term so operations to manage the
 524  
      * mappings are not currently defined.
 525  
      *
 526  
      * @param academicCalendarKey a key for an academic calendar
 527  
      * @param context Context information containing the principalId
 528  
      *                and locale information about the caller of service
 529  
      *                operation
 530  
      * @return a list of Terms
 531  
      * @throws DoesNotExistException the academic calendar not found
 532  
      * @throws InvalidParameterException invalid acadenmicCalendarKey
 533  
      * @throws MissingParameterException missing academicCalendarKey
 534  
      * @throws OperationFailedException unable to complete request
 535  
      * @throws PermissionDeniedException authorization failure
 536  
      */
 537  
     public List<TermInfo> getTermsForAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 538  
 
 539  
     /** 
 540  
      * Retrieves a list Terms nested inside the given Term.
 541  
      *
 542  
      * Mappings are managed through Type configuration and inferred by
 543  
      * the dates of the terms so operations to manage the mappings are
 544  
      * not currently defined.
 545  
      *
 546  
      * @param termKey a key for a Term
 547  
      * @param context Context information containing the principalId
 548  
      *                and locale information about the caller of service
 549  
      *                operation
 550  
      * @return a list of Terms
 551  
      * @throws DoesNotExistException the term is not found
 552  
      * @throws InvalidParameterException invalid termKey
 553  
      * @throws MissingParameterException missing termKey
 554  
      * @throws OperationFailedException unable to complete request
 555  
      * @throws PermissionDeniedException authorization failure
 556  
      */
 557  
     public List<TermInfo> getTermsForTerm(@WebParam(name = "termKey") List<String> termCalendar, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 558  
 
 559  
     /** 
 560  
      * Validates a term. Depending on the value of validationType,
 561  
      * this validation could be limited to tests on just the current
 562  
      * object and its directly contained subobjects or expanded to
 563  
      * perform all tests related to this object. If an identifier is
 564  
      * present for the term and a record is found for that identifier,
 565  
      * the validation checks if the term can be shifted to the new
 566  
      * values. If a record cannot be found for the identifier, it is
 567  
      * assumed that the record does not exist and as such, the checks
 568  
      * performed will be much shallower, typically mimicking those
 569  
      * performed by setting the validationType to the current
 570  
      * object. This is a slightly different pattern from the standard
 571  
      * validation as the caller provides the identifier in the create
 572  
      * statement instead of the server assigning an identifier.
 573  
      *
 574  
      * @param validationType Identifier of the extent of validation
 575  
      * @param termInfo the term information to be tested.
 576  
      * @param context Context information containing the principalId
 577  
      *                and locale information about the caller of service
 578  
      *                operation
 579  
      * @return the results from performing the validation
 580  
      * @throws DoesNotExistException validationTypeKey not found
 581  
      * @throws InvalidParameterException invalid validationTypeKey, termInfo
 582  
      * @throws MissingParameterException missing validationTypeKey, termInfo
 583  
      * @throws OperationFailedException unable to complete request
 584  
      */
 585  
     public List<ValidationResultInfo> validateTerm(@WebParam(name = "validationType") String validationType, @WebParam(name = "termInfo") TermInfo termInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 586  
 
 587  
     /** 
 588  
      * Creates a new Tern.
 589  
      *
 590  
      * @param termKey the key of the term to be created
 591  
      * @param termInfo Details of the term to be created
 592  
      * @param context Context information containing the principalId
 593  
      *                and locale information about the caller of service
 594  
      *                operation
 595  
      * @return the details of the Term just created
 596  
      * @throws AlreadyExistsException the Term being created already exists
 597  
      * @throws DataValidationErrorException One or more values invalid for this operation
 598  
      * @throws InvalidParameterException One or more parameters invalid
 599  
      * @throws MissingParameterException One or more parameters missing
 600  
      * @throws OperationFailedException unable to complete request
 601  
      * @throws PermissionDeniedException authorization failure
 602  
      */
 603  
     public TermInfo createTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "termInfo") TermInfo termInfo, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 604  
 
 605  
     /** 
 606  
      * Updates an existing Term.
 607  
      *
 608  
      * @param termKey Key of Term to be updated
 609  
      * @param termInfo Details of updates to the Term being updated
 610  
      * @param context Context information containing the principalId
 611  
      *                and locale information about the caller of service
 612  
      *                operation
 613  
      * @return the details of Term just updated
 614  
      * @throws DataValidationErrorException One or more values invalid for this 
 615  
      *         operation
 616  
      * @throws DoesNotExistException the Term does not exist
 617  
      * @throws InvalidParameterException One or more parameters invalid
 618  
      * @throws MissingParameterException One or more parameters missing
 619  
      * @throws OperationFailedException unable to complete request
 620  
      * @throws PermissionDeniedException authorization failure
 621  
      * @throws VersionMismatchException The action was attempted on an out of date 
 622  
      *         version.
 623  
      */
 624  
     public TermInfo updateTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "termInfo") TermInfo termInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 625  
 
 626  
     /** 
 627  
      * Deletes an existing Term.
 628  
      *
 629  
      * @param termKey the key of the Term to be deleted
 630  
      * @param context Context information containing the principalId
 631  
      *                and locale information about the caller of service
 632  
      *                operation
 633  
      * @return status of the operation (success, failed)
 634  
      * @throws DoesNotExistException the Term does not exist
 635  
      * @throws InvalidParameterException One or more parameters invalid
 636  
      * @throws MissingParameterException One or more parameters missing
 637  
      * @throws OperationFailedException unable to complete request
 638  
      * @throws PermissionDeniedException authorization failure
 639  
      */
 640  
     public StatusInfo deleteTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 641  
 
 642  
     /** 
 643  
      * Retrieves the details of a single key date by a key date key.
 644  
      *
 645  
      * @param keyDateKey Unique key of the key date to be retrieved
 646  
      * @param context Context information containing the principalId
 647  
      *                and locale information about the caller of service
 648  
      *                operation
 649  
      * @return the details of the key date requested
 650  
      * @throws DoesNotExistException keyDateKey not found
 651  
      * @throws InvalidParameterException invalid keyDateKey
 652  
      * @throws MissingParameterException missing keyDateKey
 653  
      * @throws OperationFailedException unable to complete request
 654  
      * @throws PermissionDeniedException authorization failure
 655  
      */
 656  
     public KeyDateInfo getKeyDate(@WebParam(name = "keyDateKey") String keyDateKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 657  
 
 658  
     /** 
 659  
      * Retrieves a list of key dates corresponding to a list of
 660  
      * key date keys.
 661  
      *
 662  
      * @param keyDateKeyList list of unique keys of the
 663  
      *        key date to be retrieved
 664  
      * @param context Context information containing the principalId
 665  
      *                and locale information about the caller of service
 666  
      *                operation
 667  
      * @return a list of key dates
 668  
      * @throws DoesNotExistException an  keyDateKey in list not found
 669  
      * @throws InvalidParameterException invalid keyDateKey in list
 670  
      * @throws MissingParameterException missing keyDateKeyList
 671  
      * @throws OperationFailedException unable to complete request
 672  
      * @throws PermissionDeniedException authorization failure
 673  
      */
 674  
     public List<KeyDateInfo> getKeyDatesByKeyList(@WebParam(name = "keyDateKeyList") List<String> keyDateKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 675  
 
 676  
     /** 
 677  
      * Retrieves a list of key dates by Type.
 678  
      *
 679  
      * @param keyDateTypeKey a Type of key date to be retrieved
 680  
      * @param context Context information containing the principalId
 681  
      *                and locale information about the caller of service
 682  
      *                operation
 683  
      * @return a list of key dates of the given Type
 684  
      * @throws InvalidParameterException invalid key dateTypeKey
 685  
      * @throws MissingParameterException missing keyDateTypeKey
 686  
      * @throws OperationFailedException unable to complete request
 687  
      * @throws PermissionDeniedException authorization failure
 688  
      */
 689  
     public List<String> getKeyDateKeysByType(@WebParam(name = "keyDateTypeKey") String keyDateTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 690  
 
 691  
     /** 
 692  
      * Retrieves a list of key dates for an academic calendar. The
 693  
      * dates include all key dates mapped to any terms, sub terms, or
 694  
      * campus calendars.
 695  
      *
 696  
      * @param academicCalendarKey
 697  
      * @param context Context information containing the principalId
 698  
      *                and locale information about the caller of service
 699  
      *                operation
 700  
      * @return a list of key dates
 701  
      * @throws DoesNotExistException an academicCalendarKey not found
 702  
      * @throws InvalidParameterException invalid academicCalendarKey
 703  
      * @throws MissingParameterException missing academicCalendarKey
 704  
      * @throws OperationFailedException unable to complete request
 705  
      * @throws PermissionDeniedException authorization failure
 706  
      */
 707  
     public List<KeyDateInfo> getKeyDatesForAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 708  
 
 709  
     /** 
 710  
      * Retrieves a list of key dates for an academic calendar that 
 711  
      * fall within the given date range inclusive. The dates
 712  
      * include all key dates mapped to any terms, sub terms, or
 713  
      * campus calendars.
 714  
      *
 715  
      * @param academicCalendarKey
 716  
      * @param startDate the start of the date range
 717  
      * @param endDate the end of the date range
 718  
      * @param context Context information containing the principalId
 719  
      *                and locale information about the caller of service
 720  
      *                operation
 721  
      * @return a list of key dates
 722  
      * @throws DoesNotExistException an academicCalendarKey not found
 723  
      * @throws InvalidParameterException invalid academicCalendarKey
 724  
      * @throws MissingParameterException missing parameter
 725  
      * @throws OperationFailedException unable to complete request
 726  
      * @throws PermissionDeniedException authorization failure
 727  
      */
 728  
     public List<KeyDateInfo> getKeyDatesForAcademicCalendarByDate(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "startDate") Date startDate, @WebParam(name = "endDate") Date endDate, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 729  
 
 730  
     /** 
 731  
      * Retrieves a list of key dates immediately mapped to a Term.
 732  
      *
 733  
      * @param termKey
 734  
      * @param context Context information containing the principalId
 735  
      *                and locale information about the caller of service
 736  
      *                operation
 737  
      * @return a list of key dates
 738  
      * @throws DoesNotExistException a termKey not found
 739  
      * @throws InvalidParameterException invalid termKey
 740  
      * @throws MissingParameterException missing termKey
 741  
      * @throws OperationFailedException unable to complete request
 742  
      * @throws PermissionDeniedException authorization failure
 743  
      */
 744  
     public List<KeyDateInfo> getKeyDatesForTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 745  
 
 746  
     /** 
 747  
      * Retrieves a list of key dates for a given Term that 
 748  
      * fall within the given date range inclusive. The dates
 749  
      * include only those dates immediate mapped to the Term.
 750  
      *
 751  
      * @param termKey unique key for a Term
 752  
      * @param startDate start of date range
 753  
      * @param endDate end of date range
 754  
      * @param context Context information containing the principalId
 755  
      *                and locale information about the caller of service
 756  
      *                operation
 757  
      * @return a list of key dates
 758  
      * @throws DoesNotExistException a termKey not found
 759  
      * @throws InvalidParameterException invalid termKey
 760  
      * @throws MissingParameterException missing parameter
 761  
      * @throws OperationFailedException unable to complete request
 762  
      * @throws PermissionDeniedException authorization failure
 763  
      */
 764  
     public List<KeyDateInfo> getKeyDatesForTermByDate(@WebParam(name = "termKey") String termKey, @WebParam(name = "startDate") Date startDate, @WebParam(name = "endDate") Date endDate, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 765  
 
 766  
     /** 
 767  
      * Retrieves a list of key dates for a Term. The dates
 768  
      * include all key dates mapped to any nested terms.
 769  
      *
 770  
      * @param termKey unique key for a Term
 771  
      * @param context Context information containing the principalId
 772  
      *                and locale information about the caller of service
 773  
      *                operation
 774  
      * @return a list of key dates
 775  
      * @throws DoesNotExistException a termKey not found
 776  
      * @throws InvalidParameterException invalid termKey
 777  
      * @throws MissingParameterException missing termKey
 778  
      * @throws OperationFailedException unable to complete request
 779  
      * @throws PermissionDeniedException authorization failure
 780  
      */
 781  
     public List<KeyDateInfo> getAllKeyDatesForTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 782  
 
 783  
     /** 
 784  
      * Retrieves a list of key dates for a given Term that 
 785  
      * fall within the given date range inclusive. The dates
 786  
      * include all key dates mapped to any nested terms.
 787  
      *
 788  
      * @param termKey unique key for a Term
 789  
      * @param startDate start of date range
 790  
      * @param endDate end of date range
 791  
      * @param context Context information containing the principalId
 792  
      *                and locale information about the caller of service
 793  
      *                operation
 794  
      * @return a list of key dates
 795  
      * @throws DoesNotExistException a termKey not found
 796  
      * @throws InvalidParameterException invalid termKey
 797  
      * @throws MissingParameterException missing parameter
 798  
      * @throws OperationFailedException unable to complete request
 799  
      * @throws PermissionDeniedException authorization failure
 800  
      */
 801  
     public List<KeyDateInfo> getKeyDatesForAllTermsByDate(@WebParam(name = "termKey") String termKey, @WebParam(name = "startDate") Date startDate, @WebParam(name = "endDate") Date endDate, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 802  
 
 803  
     /** 
 804  
      * Validates a key date. Depending on the value of validationType,
 805  
      * this validation could be limited to tests on just the current
 806  
      * object and its directly contained subobjects or expanded to
 807  
      * perform all tests related to this object. If an identifier is
 808  
      * present for the key date and a record is found for that identifier,
 809  
      * the validation checks if the key date can be shifted to the new
 810  
      * values. If a record cannot be found for the identifier, it is
 811  
      * assumed that the record does not exist and as such, the checks
 812  
      * performed will be much shallower, typically mimicking those
 813  
      * performed by setting the validationType to the current
 814  
      * object. This is a slightly different pattern from the standard
 815  
      * validation as the caller provides the identifier in the create
 816  
      * statement instead of the server assigning an identifier.
 817  
      *
 818  
      * @param validationType Identifier of the extent of validation
 819  
      * @param keyDateInfo the key date information to be tested.
 820  
      * @param context Context information containing the principalId
 821  
      *                and locale information about the caller of service
 822  
      *                operation
 823  
      * @return the results from performing the validation
 824  
      * @throws DoesNotExistException validationTypeKey not found
 825  
      * @throws InvalidParameterException invalid validationTypeKey, keyDateInfo
 826  
      * @throws MissingParameterException missing validationTypeKey, keyDateInfo
 827  
      * @throws OperationFailedException unable to complete request
 828  
      */
 829  
     public List<ValidationResultInfo> validateKeyDate(@WebParam(name = "validationType") String validationType, @WebParam(name = "keyDateInfo") KeyDateInfo keyDateInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 830  
 
 831  
     /** 
 832  
      * Creates a new Key Date for a Term.
 833  
      *
 834  
      * @param termKey a key for a Term to which this date is mapped
 835  
      * @param keyDateKey the key of the Key Date to be created
 836  
      * @param keyDateInfo Details of the Key Date to be created
 837  
      * @param context Context information containing the principalId
 838  
      *                and locale information about the caller of service
 839  
      *                operation
 840  
      * @return the details of the Key Date just created
 841  
      * @throws AlreadyExistsException the Key Date being created already exists
 842  
      * @throws DataValidationErrorException One or more values invalid for this operation
 843  
      * @throws InvalidParameterException One or more parameters invalid
 844  
      * @throws MissingParameterException One or more parameters missing
 845  
      * @throws OperationFailedException unable to complete request
 846  
      * @throws PermissionDeniedException authorization failure
 847  
      */
 848  
     public KeyDateInfo createKeyDateForTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "keyDateKey") String keyDateKey, @WebParam(name = "keyDateInfo") KeyDateInfo keyDateInfo, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 849  
 
 850  
     /** 
 851  
      * Creates a new Key Date for a Campus Calendar.
 852  
      *
 853  
      * @param campusCalendarKey a key for a Term to which this key date is mapped
 854  
      * @param keyDateKey the key of the Key Date to be created
 855  
      * @param keyDateInfo Details of the Key Date to be created
 856  
      * @param context Context information containing the principalId
 857  
      *                and locale information about the caller of service
 858  
      *                operation
 859  
      * @return the details of the Key Date just created
 860  
      * @throws AlreadyExistsException the Key Date being created already exists
 861  
      * @throws DataValidationErrorException One or more values invalid for this operation
 862  
      * @throws InvalidParameterException One or more parameters invalid
 863  
      * @throws MissingParameterException One or more parameters missing
 864  
      * @throws OperationFailedException unable to complete request
 865  
      * @throws PermissionDeniedException authorization failure
 866  
      */
 867  
     public KeyDateInfo createKeyDateForCampusCalendar(@WebParam(name = "campusCalendarKey") String campusCalendarKey, @WebParam(name = "keyDateKey") String keyDateKey, @WebParam(name = "keyDateInfo") KeyDateInfo keyDateInfo, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 868  
 
 869  
     /** 
 870  
      * Updates an existing Key Date.
 871  
      *
 872  
      * @param keyDateKey Key of Key Date to be updated
 873  
      * @param keyDateInfo Details of updates to the key date
 874  
      *        being updated
 875  
      * @param context Context information containing the principalId
 876  
      *                and locale information about the caller of service
 877  
      *                operation
 878  
      * @return the details of key date just updated
 879  
      * @throws DataValidationErrorException One or more values invalid for this 
 880  
      *         operation
 881  
      * @throws DoesNotExistException the key date does not exist
 882  
      * @throws InvalidParameterException One or more parameters invalid
 883  
      * @throws MissingParameterException One or more parameters missing
 884  
      * @throws OperationFailedException unable to complete request
 885  
      * @throws PermissionDeniedException authorization failure
 886  
      * @throws VersionMismatchException The action was attempted on an out of date 
 887  
      *         version.
 888  
      */
 889  
     public KeyDateInfo updateKeyDate(@WebParam(name = "keyDateKey") String keyDateKey, @WebParam(name = "keyDateInfo") KeyDateInfo keyDateInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 890  
 
 891  
     /** 
 892  
      * Deletes an existing KeyDate.
 893  
      *
 894  
      * @param keyDateKey the key of the Key Date to
 895  
      *        be deleted
 896  
      * @param context Context information containing the principalId
 897  
      *                and locale information about the caller of service
 898  
      *                operation
 899  
      * @return status of the operation (success, failed)
 900  
      * @throws DoesNotExistException the KeyDate does not exist
 901  
      * @throws InvalidParameterException One or more parameters invalid
 902  
      * @throws MissingParameterException One or more parameters missing
 903  
      * @throws OperationFailedException unable to complete request
 904  
      * @throws PermissionDeniedException authorization failure
 905  
      */
 906  
     public StatusInfo deleteKeyDate(@WebParam(name = "keyDateKey") String keyDateKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 907  
 
 908  
     /** 
 909  
      * Retrieves a list of holidays for an academic calendar.
 910  
      *
 911  
      * @param academicCalendarKey
 912  
      * @param context Context information containing the principalId
 913  
      *                and locale information about the caller of service
 914  
      *                operation
 915  
      * @return a list of holidays
 916  
      * @throws DoesNotExistException an academicCalendarKey not found
 917  
      * @throws InvalidParameterException invalid academicCalendarKey
 918  
      * @throws MissingParameterException missing academicCalendarKey
 919  
      * @throws OperationFailedException unable to complete request
 920  
      * @throws PermissionDeniedException authorization failure
 921  
      */
 922  
     public List<HolidayInfo> getHolidaysForAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 923  
 
 924  
     /** 
 925  
      * Validates a holiday. Depending on the value of validationType,
 926  
      * this validation could be limited to tests on just the current
 927  
      * object and its directly contained subobjects or expanded to
 928  
      * perform all tests related to this object. If an identifier is
 929  
      * present for the holiday and a record is found for that identifier,
 930  
      * the validation checks if the holiday can be shifted to the new
 931  
      * values. If a record cannot be found for the identifier, it is
 932  
      * assumed that the record does not exist and as such, the checks
 933  
      * performed will be much shallower, typically mimicking those
 934  
      * performed by setting the validationType to the current
 935  
      * object. This is a slightly different pattern from the standard
 936  
      * validation as the caller provides the identifier in the create
 937  
      * statement instead of the server assigning an identifier.
 938  
      *
 939  
      * @param validationType Identifier of the extent of validation
 940  
      * @param holidayInfo the holiday information to be tested.
 941  
      * @param context Context information containing the principalId
 942  
      *                and locale information about the caller of service
 943  
      *                operation
 944  
      * @return the results from performing the validation
 945  
      * @throws DoesNotExistException validationTypeKey not found
 946  
      * @throws InvalidParameterException invalid validationTypeKey, holidayInfo
 947  
      * @throws MissingParameterException missing validationTypeKey, holidayInfo
 948  
      * @throws OperationFailedException unable to complete request
 949  
      */
 950  
     public List<ValidationResultInfo> validateHoliday(@WebParam(name = "validationType") String validationType, @WebParam(name = "holidayInfo") HolidayInfo holidayInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 951  
 
 952  
     /** 
 953  
      * Creates a new Holiday for a Campus Calendar.
 954  
      *
 955  
      * @param campusCalendarKey a key for a Term to which this holiday is mapped
 956  
      * @param holidayKey the key of the Holiday to be created
 957  
      * @param holidayInfo Details of the Holiday to be created
 958  
      * @param context Context information containing the principalId
 959  
      *                and locale information about the caller of service
 960  
      *                operation
 961  
      * @return the details of the Holiday just created
 962  
      * @throws AlreadyExistsException the Holiday being created already exists
 963  
      * @throws DataValidationErrorException One or more values invalid for this operation
 964  
      * @throws InvalidParameterException One or more parameters invalid
 965  
      * @throws MissingParameterException One or more parameters missing
 966  
      * @throws OperationFailedException unable to complete request
 967  
      * @throws PermissionDeniedException authorization failure
 968  
      */
 969  
     public HolidayInfo createHolidayForCampusCalendar(@WebParam(name = "campusCalendarKey") String campusCalendarKey, @WebParam(name = "holidayKey") String holidayKey, @WebParam(name = "holidayInfo") HolidayInfo holidayInfo, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 970  
 
 971  
     /** 
 972  
      * Updates an existing Holiday.
 973  
      *
 974  
      * @param holidayKey Key of Holiday to be updated
 975  
      * @param holidayInfo Details of updates to the holiday
 976  
      *        being updated
 977  
      * @param context Context information containing the principalId
 978  
      *                and locale information about the caller of service
 979  
      *                operation
 980  
      * @return the details of holiday just updated
 981  
      * @throws DataValidationErrorException One or more values invalid for this 
 982  
      *         operation
 983  
      * @throws DoesNotExistException the holiday does not exist
 984  
      * @throws InvalidParameterException One or more parameters invalid
 985  
      * @throws MissingParameterException One or more parameters missing
 986  
      * @throws OperationFailedException unable to complete request
 987  
      * @throws PermissionDeniedException authorization failure
 988  
      * @throws VersionMismatchException The action was attempted on an out of date 
 989  
      *         version.
 990  
      */
 991  
     public HolidayInfo updateHoliday(@WebParam(name = "holidayKey") String holidayKey, @WebParam(name = "holidayInfo") HolidayInfo holidayInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 992  
 
 993  
     /** 
 994  
      * Deletes an existing Holiday.
 995  
      *
 996  
      * @param holidayKey the key of the Holiday to
 997  
      *        be deleted
 998  
      * @param context Context information containing the principalId
 999  
      *                and locale information about the caller of service
 1000  
      *                operation
 1001  
      * @return status of the operation (success, failed)
 1002  
      * @throws DoesNotExistException the Holiday does not exist
 1003  
      * @throws InvalidParameterException One or more parameters invalid
 1004  
      * @throws MissingParameterException One or more parameters missing
 1005  
      * @throws OperationFailedException unable to complete request
 1006  
      * @throws PermissionDeniedException authorization failure
 1007  
      */
 1008  
     public StatusInfo deleteHoliday(@WebParam(name = "holidayKey") String holidayKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1009  
 
 1010  
     /** 
 1011  
      * Gets the registration key date group for a term.
 1012  
      *
 1013  
      * @param termKey unique key of a term
 1014  
      * @param context Context information containing the principalId
 1015  
      *                and locale information about the caller of service
 1016  
      *                operation
 1017  
      * @return the registration date group
 1018  
      * @throws DoesNotExistException termKey not found
 1019  
      * @throws InvalidParameterException invalid termKey
 1020  
      * @throws MissingParameterException missing termKey
 1021  
      * @throws OperationFailedException unable to complete request
 1022  
      * @throws PermissionDeniedException authorization failure
 1023  
      */
 1024  
     public RegistrationDateGroupInfo getRegistrationDateGroup(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1025  
 
 1026  
     /** 
 1027  
      * Validates an registration date grpup. Depending on the value of
 1028  
      * validationType, this validation could be limited to tests on
 1029  
      * just the current object and its directly contained subobjects
 1030  
      * or expanded to perform all tests related to this object. If an
 1031  
      * identifier is present for the registration date group and a
 1032  
      * record is found for that identifier, the validation checks if
 1033  
      * the registration date group can be shifted to the new values. If
 1034  
      * a record cannot be found for the identifier, it is assumed that
 1035  
      * the record does not exist and as such, the checks performed
 1036  
      * will be much shallower, typically mimicking those performed by
 1037  
      * setting the validationType to the current object. This is a
 1038  
      * slightly different pattern from the standard validation as the
 1039  
      * caller provides the identifier in the create statement instead
 1040  
      * of the server assigning an identifier.
 1041  
      *
 1042  
      * @param validationType Identifier of the extent of validation
 1043  
      * @param registrationDateGroupInfo the registration date group to be tested.
 1044  
      * @param context Context information containing the principalId
 1045  
      *                and locale information about the caller of service
 1046  
      *                operation
 1047  
      * @return the results from performing the validation
 1048  
      * @throws DoesNotExistException validationTypeKey not found
 1049  
      * @throws InvalidParameterException invalid validationTypeKey, academicCalendarInfo
 1050  
      * @throws MissingParameterException missing validationTypeKey, academicCalendarInfo
 1051  
      * @throws OperationFailedException unable to complete request
 1052  
      */
 1053  
     public List<ValidationResultInfo> validateRegistrationDateGroup(@WebParam(name = "validationType") String validationType, @WebParam(name = "registrationDateGroupInfo") RegistrationDateGroupInfo registrationDateGroupInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 1054  
 
 1055  
     /** 
 1056  
      * Updates a the registration key date group for a term. The
 1057  
      * date group is a set of hardened well-known dates. 
 1058  
      *
 1059  
      * Updating an registration date group is a short cut to creating or
 1060  
      * updating the corresponding key dates and relating them to the
 1061  
      * given term. An RegistrationDateGroupInfo is available for all
 1062  
      * Terms by default and does not explicitly need to be created.
 1063  
      *
 1064  
      * If the KeyDates have not been created for the dates in
 1065  
      * the group, an RegistrationDateGroup is still returned from
 1066  
      * getRegistrationDateGroup() but with empty or default dates.
 1067  
      *
 1068  
      * Setting date values in an RegistrationDateGroup through this
 1069  
      * update method either creates the KeyDates with the appropriate
 1070  
      * Types that map to the fields in the date group for the given
 1071  
      * Term or updates them if they already exist.
 1072  
      *
 1073  
      * @param termKey key of Term
 1074  
      * @param registrationDateGroup the registration date group
 1075  
      * @param context Context information containing the principalId
 1076  
      *                and locale information about the caller of service
 1077  
      *                operation
 1078  
      * @return the details of enrollmemnt date group just updated
 1079  
      * @throws DataValidationErrorException One or more values invalid for this 
 1080  
      *         operation
 1081  
      * @throws DoesNotExistException the term does not exist
 1082  
      * @throws InvalidParameterException One or more parameters invalid
 1083  
      * @throws MissingParameterException One or more parameters missing
 1084  
      * @throws OperationFailedException unable to complete request
 1085  
      * @throws PermissionDeniedException authorization failure
 1086  
      * @throws VersionMismatchException The action was attempted on an out of date 
 1087  
      *         version.
 1088  
      */
 1089  
     public RegistrationDateGroupInfo updateRegistrationDateGroup(@WebParam(name = "termKey") String termKey, @WebParam(name = "registrationDateGroupInfo") RegistrationDateGroupInfo registrationDateGroupInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 1090  
 
 1091  
     /** 
 1092  
      * Calculates the number of instructional days for a Term. The
 1093  
      * number of instructional days is the number of class days in a
 1094  
      * Term minus the non-instructional holidays on the related campus
 1095  
      * calendar.
 1096  
      *
 1097  
      * @param termKey unique key of a term
 1098  
      * @param context Context information containing the principalId
 1099  
      *                and locale information about the caller of service
 1100  
      *                operation
 1101  
      * @return the number of instructional days
 1102  
      * @throws DoesNotExistException termKey not found
 1103  
      * @throws InvalidParameterException invalid termKey
 1104  
      * @throws MissingParameterException missing termKey
 1105  
      * @throws OperationFailedException unable to complete request
 1106  
      * @throws PermissionDeniedException authorization failure
 1107  
      */
 1108  
     public Integer getInstructionalDaysForTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1109  
 }