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.exceptions.AlreadyExistsException;
 26  
 import org.kuali.student.common.exceptions.DataValidationErrorException;
 27  
 import org.kuali.student.common.exceptions.DoesNotExistException;
 28  
 import org.kuali.student.common.exceptions.InvalidParameterException;
 29  
 import org.kuali.student.common.exceptions.MissingParameterException;
 30  
 import org.kuali.student.common.exceptions.OperationFailedException;
 31  
 import org.kuali.student.common.exceptions.PermissionDeniedException;
 32  
 import org.kuali.student.common.exceptions.VersionMismatchException;
 33  
 
 34  
 import org.kuali.student.common.dto.ContextInfo;
 35  
 import org.kuali.student.common.dto.StatusInfo;
 36  
 import org.kuali.student.common.dto.ValidationResultInfo;
 37  
 import org.kuali.student.common.service.TypeService;
 38  
 import org.kuali.student.common.service.StateService;
 39  
 
 40  
 import org.kuali.student.core.academiccalendar.dto.AcademicCalendarInfo;
 41  
 import org.kuali.student.core.academiccalendar.dto.CampusCalendarInfo;
 42  
 import org.kuali.student.core.academiccalendar.dto.TermInfo;
 43  
 import org.kuali.student.core.academiccalendar.dto.KeyDateInfo;
 44  
 import org.kuali.student.core.academiccalendar.dto.HolidayInfo;
 45  
 import org.kuali.student.core.academiccalendar.dto.EnrollmentDateGroupInfo;
 46  
 
 47  
 import org.kuali.student.datadictionary.service.DataDictionaryService;
 48  
 
 49  
 /**
 50  
  * Academic Calendar Service Description and Assumptions.
 51  
  *
 52  
  * This service manages Academic Calendars. An Academic Calendar is
 53  
  * related to a credential program type and contains Terms. The Terms
 54  
  * are managed as nested objects inside the Academic Calendar at this
 55  
  * level.
 56  
  *
 57  
  * Key Dates are mapped to Terms but are managed through the service
 58  
  * independent of the Term. This is to allow a reference to a Term
 59  
  * that does not retrieve all the key date information that may relate
 60  
  * to the Term.
 61  
  *
 62  
  * Terms may be nested at this level. A Term may contain another Term
 63  
  * and each of these sub-Terms may have their own key
 64  
  * dates. Convenience service methods exist to query all the key dates
 65  
  * for an Academic Calendar or parent Term.
 66  
  *
 67  
  * An Academic Calendar also has a Campus Calendar. The Campus
 68  
  * Calendar has a campus location, and include the key dates and
 69  
  * holidays that are specific to a campus. The same Campus Calendar
 70  
  * can be used for multiple Academic Calendars.
 71  
  *
 72  
  * Version: 1.0 (Dev)
 73  
  *
 74  
  * @Author tom
 75  
  * @Since Sun Apr 10 14:22:34 EDT 2011
 76  
  */
 77  
 
 78  
 @WebService(name = "AcademicCalendarService", targetNamespace = "http://student.kuali.org/wsdl/academiccalendar")
 79  
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 80  
 public interface AcademicCalendarService extends DataDictionaryService, TypeService, StateService {
 81  
 
 82  
     /** 
 83  
      * Retrieves the details of a single Academic Calendar by an
 84  
      * academic calendar key.
 85  
      *
 86  
      * @param academicCalendarKey Unique key of the Academic Calendar to be retrieved
 87  
      * @param context Context information containing the principalId
 88  
      *                and locale information about the caller of service
 89  
      *                operation
 90  
      * @return the details of the Academic Calendar requested
 91  
      * @throws DoesNotExistException academicCalendarKey not found
 92  
      * @throws InvalidParameterException invalid academicCalendarKey
 93  
      * @throws MissingParameterException missing academicCalendarKey
 94  
      * @throws OperationFailedException unable to complete request
 95  
      * @throws PermissionDeniedException authorization failure
 96  
      */
 97  
     public AcademicCalendarInfo getAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 98  
 
 99  
     /** 
 100  
      * Retrieves a list Academic Calendars corresponding to a list of
 101  
      * academic calendar keys.
 102  
      *
 103  
      * @param academicCalendarKeyList list of unique keys of the
 104  
      *        Academic Calendar to be retrieved
 105  
      * @param context Context information containing the principalId
 106  
      *                and locale information about the caller of service
 107  
      *                operation
 108  
      * @return a list of Academic Calendars
 109  
      * @throws DoesNotExistExceptionan  academicCalendarKey in list not found
 110  
      * @throws InvalidParameterException invalid academicCalendarKey in list
 111  
      * @throws MissingParameterException missing academicCalendarKeyList
 112  
      * @throws OperationFailedException unable to complete request
 113  
      * @throws PermissionDeniedException authorization failure
 114  
      */
 115  
     public List<AcademicCalendarInfo> getAcademicCalendarsByKeyList(@WebParam(name = "academicCalendarKeyList") List<String> academicCalendarKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 116  
 
 117  
     /** 
 118  
      * Retrieves a list of Academic Calendar Keys by Type.
 119  
      *
 120  
      * @param academicCalendarTypeKey a Type of Academic Calendar to be retrieved
 121  
      * @param context Context information containing the principalId
 122  
      *                and locale information about the caller of service
 123  
      *                operation
 124  
      * @return a list of Academic Calendars of the given Type
 125  
      * @throws InvalidParameterException invalid academicCalendarTypeKey
 126  
      * @throws MissingParameterException missing academicCalendarTypeKey
 127  
      * @throws OperationFailedException unable to complete request
 128  
      * @throws PermissionDeniedException authorization failure
 129  
      */
 130  
     public List<String> getAcademicCalendarKeysByType(@WebParam(name = "academicCalendarTypeKey") String academicCalendarTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 131  
 
 132  
     /** 
 133  
      * Retrieves a list of Academic Calendars that pertain to the
 134  
      * given year.
 135  
      *
 136  
      * @param year 
 137  
      * @param context Context information containing the principalId
 138  
      *                and locale information about the caller of service
 139  
      *                operation
 140  
      * @return a list of Academic Calendars 
 141  
      * @throws InvalidParameterException invalid year
 142  
      * @throws MissingParameterException missing year
 143  
      * @throws OperationFailedException unable to complete request
 144  
      * @throws PermissionDeniedException authorization failure
 145  
      */
 146  
     public List<AcademicCalendarInfo> getAcademicCalendarsByYear(@WebParam(name = "year") Integer year, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 147  
 
 148  
     /** 
 149  
      * Retrieves a list of Academic Calendars mapped to a credential
 150  
      * program type.
 151  
      *
 152  
      * @param credentialProgramTypeKey a Type of a credential program
 153  
      * @param context Context information containing the principalId
 154  
      *                and locale information about the caller of service
 155  
      *                operation
 156  
      * @return a list of Academic Calendars
 157  
      * @throws InvalidParameterException invalid credentialProgramTypeKey
 158  
      * @throws MissingParameterException missing credentialProgramTypeKey
 159  
      * @throws OperationFailedException unable to complete request
 160  
      * @throws PermissionDeniedException authorization failure
 161  
      */
 162  
     public List<AcademicCalendarInfo> getAcademicCalendarsByCredentialProgramType(@WebParam(name = "credentialProgramTypeKey") String credentialProgramTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 163  
 
 164  
     /** 
 165  
      * Retrieves a list of Academic Calendars mapped to a credential
 166  
      * program type and pertains to the given year.
 167  
      *
 168  
      * @param credentialProgramTypeKey a Type of a credential program
 169  
      * @param year
 170  
      * @param context Context information containing the principalId
 171  
      *                and locale information about the caller of service
 172  
      *                operation
 173  
      * @return a list of Academic Calendars
 174  
      * @throws InvalidParameterException invalid credentialProgramType or year
 175  
      * @throws MissingParameterException missing credentialProgramTypeKey or year
 176  
      * @throws OperationFailedException unable to complete request
 177  
      * @throws PermissionDeniedException authorization failure
 178  
      */
 179  
     public List<AcademicCalendarInfo> getAcademicCalendarsByCredentialProgramTypeForYear(@WebParam(name = "credentialProgramTypeKey") String credentialProgramTypeKey, @WebParam(name = "year") Integer year, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 180  
 
 181  
     /** 
 182  
      * Validates an academic calendar. Depending on the value of
 183  
      * validationType, this validation could be limited to tests on
 184  
      * just the current object and its directly contained subobjects
 185  
      * or expanded to perform all tests related to this object. If an
 186  
      * identifier is present for the academic calendar and a record
 187  
      * is found for that identifier, the validation checks if the
 188  
      * academic calendar can be shifted to the new values. If a
 189  
      * record cannot be found for the identifier, it is assumed that
 190  
      * the record does not exist and as such, the checks performed
 191  
      * will be much shallower, typically mimicking those performed by
 192  
      * setting the validationType to the current object. This is a
 193  
      * slightly different pattern from the standard validation as the
 194  
      * caller provides the identifier in the create statement instead
 195  
      * of the server assigning an identifier.
 196  
      *
 197  
      * @param validationType Identifier of the extent of validation
 198  
      * @param academicCalendarInfo the academic calendar information to be tested.
 199  
      * @param context Context information containing the principalId
 200  
      *                and locale information about the caller of service
 201  
      *                operation
 202  
      * @return the results from performing the validation
 203  
      * @throws DoesNotExistException validationTypeKey not found
 204  
      * @throws InvalidParameterException invalid validationTypeKey, academicCalendarInfo
 205  
      * @throws MissingParameterException missing validationTypeKey, academicCalendarInfo
 206  
      * @throws OperationFailedException unable to complete request
 207  
      */
 208  
     public List<ValidationResultInfo> validateAcademicCalendar(@WebParam(name = "validationType") String validationType, @WebParam(name = "academicCalendarInfo") AcademicCalendarInfo academicCalendarInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 209  
 
 210  
     /** 
 211  
      * Creates a new Academic Calendar.
 212  
      *
 213  
      * @param academicCalendarKey the key of the Academic Calendar to be created
 214  
      * @param academicCalendarInfo Details of the Academic Calendar to be created
 215  
      * @param context Context information containing the principalId
 216  
      *                and locale information about the caller of service
 217  
      *                operation
 218  
      * @return the details of the Academic Calendar just created
 219  
      * @throws AlreadyExistsException the Academic Calendar being created already exists
 220  
      * @throws DataValidationErrorException One or more values invalid for this operation
 221  
      * @throws InvalidParameterException One or more parameters invalid
 222  
      * @throws MissingParameterException One or more parameters missing
 223  
      * @throws OperationFailedException unable to complete request
 224  
      * @throws PermissionDeniedException authorization failure
 225  
      */
 226  
     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;
 227  
 
 228  
     /** 
 229  
      * Updates an existing Academic Calendar.
 230  
      *
 231  
      * @param academicCalendarKey Key of Academic Calendar to be updated
 232  
      * @param academicCalendarInfo Details of updates to the Academic
 233  
      *        Calendar being updated
 234  
      * @param context Context information containing the principalId
 235  
      *                and locale information about the caller of service
 236  
      *                operation
 237  
      * @return the details of Academic Calendar just updated
 238  
      * @throws DataValidationErrorException One or more values invalid for this 
 239  
      *         operation
 240  
      * @throws DoesNotExistException the Academic Calendar does not exist
 241  
      * @throws InvalidParameterException One or more parameters invalid
 242  
      * @throws MissingParameterException One or more parameters missing
 243  
      * @throws OperationFailedException unable to complete request
 244  
      * @throws PermissionDeniedException authorization failure
 245  
      * @throws VersionMismatchException The action was attempted on an out of date 
 246  
      *         version.
 247  
      */
 248  
     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;
 249  
 
 250  
     /** 
 251  
      * Deletes an existing Academic Calendar.
 252  
      *
 253  
      * @param academicCalendarKey the key of the Academic Calendar to
 254  
      *        be deleted
 255  
      * @param context Context information containing the principalId
 256  
      *                and locale information about the caller of service
 257  
      *                operation
 258  
      * @return status of the operation (success, failed)
 259  
      * @throws DoesNotExistException the Academic Calendar does not exist
 260  
      * @throws InvalidParameterException One or more parameters invalid
 261  
      * @throws MissingParameterException One or more parameters missing
 262  
      * @throws OperationFailedException unable to complete request
 263  
      * @throws PermissionDeniedException authorization failure
 264  
      */
 265  
     public StatusInfo deleteAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 266  
 
 267  
     /** 
 268  
      * Copy an Academic Calendar. The associated Terms and key datess
 269  
      * are also copied and related to this new calendar. This copy
 270  
      * operation allows for a calendar template to be created from an
 271  
      * existing calendar in which the dates of the Terms and
 272  
      * Key Dates will be updated.
 273  
      *
 274  
      * Currently, this method does not perform any date
 275  
      * transformations on the Terms and key dates (Labor Day has a
 276  
      * new date). A rollover process needs to make a copy of a
 277  
      * calendar and set the new dates for the new year.
 278  
      *
 279  
      * @param academicCalendarKey the key of the Academic Calendar to
 280  
      *        be copied
 281  
      * @param newAcademicCalendarKey the key of the new copy of the
 282  
      *        Academic Calendar
 283  
      * @param context Context information containing the principalId
 284  
      *                and locale information about the caller of service
 285  
      *                operation
 286  
      * @return status of the operation (success, failed)
 287  
      * @throws AlreadyExistsException newAcademicCalendarKey already exists
 288  
      * @throws DoesNotExistException the Academic Calendar does not exist
 289  
      * @throws InvalidParameterException One or more parameters invalid
 290  
      * @throws MissingParameterException One or more parameters missing
 291  
      * @throws OperationFailedException unable to complete request
 292  
      * @throws PermissionDeniedException authorization failure
 293  
      */
 294  
     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;
 295  
 
 296  
     /** 
 297  
      * Generates calendaring data for the Terms and key dates in an
 298  
      * Academic Calendar. The format of the data is specified by the
 299  
      * calendarDataFormatType. An example of such a type is VCALENDAR.
 300  
      *
 301  
      * @param academicCalendarKey the key of the Academic Calendar to
 302  
      *        be retrieved
 303  
      * @param calendarDataFormatTypeKey the type of format
 304  
      * @param context Context information containing the principalId
 305  
      *                and locale information about the caller of service
 306  
      *                operation
 307  
      * @return status of the operation (success, failed)
 308  
      * @throws DoesNotExistException the Academic Calendar or format
 309  
      *         type does not exist
 310  
      * @throws InvalidParameterException One or more parameters invalid
 311  
      * @throws MissingParameterException One or more parameters missing
 312  
      * @throws OperationFailedException unable to complete request
 313  
      * @throws PermissionDeniedException authorization failure
 314  
      */
 315  
     public String getAcademicCalendarData(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "calendarDataFormatTypeKey") String calendarDataFormatTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 316  
 
 317  
     /** 
 318  
      * Retrieves the details of a single Campus Calendar by an
 319  
      * campus calendar key.
 320  
      *
 321  
      * @param campusCalendarKey Unique key of the Campus Calendar to be retrieved
 322  
      * @param context Context information containing the principalId
 323  
      *                and locale information about the caller of service
 324  
      *                operation
 325  
      * @return the details of the Campus Calendar requested
 326  
      * @throws DoesNotExistException campusCalendarKey not found
 327  
      * @throws InvalidParameterException invalid campusCalendarKey
 328  
      * @throws MissingParameterException missing campusCalendarKey
 329  
      * @throws OperationFailedException unable to complete request
 330  
      * @throws PermissionDeniedException authorization failure
 331  
      */
 332  
     public CampusCalendarInfo getCampusCalendar(@WebParam(name = "campusCalendarKey") String campusCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 333  
 
 334  
     /** 
 335  
      * Retrieves a list Campus Calendars corresponding to a list of
 336  
      * campus calendar keys.
 337  
      *
 338  
      * @param campusCalendarKeyList list of unique keys of the
 339  
      *        Campus Calendar to be retrieved
 340  
      * @param context Context information containing the principalId
 341  
      *                and locale information about the caller of service
 342  
      *                operation
 343  
      * @return a list of Campus Calendars
 344  
      * @throws DoesNotExistExceptionan  campusCalendarKey in list not found
 345  
      * @throws InvalidParameterException invalid campusCalendarKey in list
 346  
      * @throws MissingParameterException missing campusCalendarKeyList
 347  
      * @throws OperationFailedException unable to complete request
 348  
      * @throws PermissionDeniedException authorization failure
 349  
      */
 350  
     public List<CampusCalendarInfo> getCampusCalendarsByKeyList(@WebParam(name = "campusCalendarKeyList") List<String> campusCalendarKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 351  
 
 352  
     /** 
 353  
      * Retrieves a list of Campus Calendars by Type.
 354  
      *
 355  
      * @param campusCalendarTypeKey a Type of Campus Calendar to be retrieved
 356  
      * @param context Context information containing the principalId
 357  
      *                and locale information about the caller of service
 358  
      *                operation
 359  
      * @return a list of Campus Calendars of the given Type
 360  
      * @throws InvalidParameterException invalid campusCalendarTypeKey
 361  
      * @throws MissingParameterException missing campusCalendarTypeKey
 362  
      * @throws OperationFailedException unable to complete request
 363  
      * @throws PermissionDeniedException authorization failure
 364  
      */
 365  
     public List<String> getCampusCalendarKeysByType(@WebParam(name = "campusCalendarTypeKey") String campusCalendarTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 366  
 
 367  
     /** 
 368  
      * Retrieves a list of Campus Calendars that pertain to the
 369  
      * given year.
 370  
      *
 371  
      * @param year 
 372  
      * @param context Context information containing the principalId
 373  
      *                and locale information about the caller of service
 374  
      *                operation
 375  
      * @return a list of Campus Calendars 
 376  
      * @throws InvalidParameterException invalid year
 377  
      * @throws MissingParameterException missing year
 378  
      * @throws OperationFailedException unable to complete request
 379  
      * @throws PermissionDeniedException authorization failure
 380  
      */
 381  
     public List<CampusCalendarInfo> getCampusCalendarsByYear(@WebParam(name = "year") Integer year, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 382  
 
 383  
     /** 
 384  
      * Validates a campus calendar. Depending on the value of
 385  
      * validationType, this validation could be limited to tests on
 386  
      * just the current object and its directly contained subobjects
 387  
      * or expanded to perform all tests related to this object. If an
 388  
      * identifier is present for the campus calendar and a record
 389  
      * is found for that identifier, the validation checks if the
 390  
      * campus calendar can be shifted to the new values. If a
 391  
      * record cannot be found for the identifier, it is assumed that
 392  
      * the record does not exist and as such, the checks performed
 393  
      * will be much shallower, typically mimicking those performed by
 394  
      * setting the validationType to the current object. This is a
 395  
      * slightly different pattern from the standard validation as the
 396  
      * caller provides the identifier in the create statement instead
 397  
      * of the server assigning an identifier.
 398  
      *
 399  
      * @param validationType Identifier of the extent of validation
 400  
      * @param campusCalendarInfo the campus calendar information to be tested.
 401  
      * @param context Context information containing the principalId
 402  
      *                and locale information about the caller of service
 403  
      *                operation
 404  
      * @return the results from performing the validation
 405  
      * @throws DoesNotExistException validationTypeKey not found
 406  
      * @throws InvalidParameterException invalid validationTypeKey, campusCalendarInfo
 407  
      * @throws MissingParameterException missing validationTypeKey, campusCalendarInfo
 408  
      * @throws OperationFailedException unable to complete request
 409  
      */
 410  
     public List<ValidationResultInfo> validateCampusCalendar(@WebParam(name = "validationType") String validationType, @WebParam(name = "campusCalendarInfo") CampusCalendarInfo campusCalendarInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 411  
 
 412  
     /** 
 413  
      * Creates a new Campus Calendar.
 414  
      *
 415  
      * @param campusCalendarKey the key of the Campus Calendar to be created
 416  
      * @param campusCalendarInfo Details of the Campus Calendar to be created
 417  
      * @param context Context information containing the principalId
 418  
      *                and locale information about the caller of service
 419  
      *                operation
 420  
      * @return the details of the Campus Calendar just created
 421  
      * @throws AlreadyExistsException the Campus Calendar being created already exists
 422  
      * @throws DataValidationErrorException One or more values invalid for this operation
 423  
      * @throws InvalidParameterException One or more parameters invalid
 424  
      * @throws MissingParameterException One or more parameters missing
 425  
      * @throws OperationFailedException unable to complete request
 426  
      * @throws PermissionDeniedException authorization failure
 427  
      */
 428  
     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;
 429  
 
 430  
     /** 
 431  
      * Updates an existing Campus Calendar.
 432  
      *
 433  
      * @param campusCalendarKey Key of Campus Calendar to be updated
 434  
      * @param campusCalendarInfo Details of updates to the Campus
 435  
      *        Calendar being updated
 436  
      * @param context Context information containing the principalId
 437  
      *                and locale information about the caller of service
 438  
      *                operation
 439  
      * @return the details of Campus Calendar just updated
 440  
      * @throws DataValidationErrorException One or more values invalid for this 
 441  
      *         operation
 442  
      * @throws DoesNotExistException the Campus Calendar does not exist
 443  
      * @throws InvalidParameterException One or more parameters invalid
 444  
      * @throws MissingParameterException One or more parameters missing
 445  
      * @throws OperationFailedException unable to complete request
 446  
      * @throws PermissionDeniedException authorization failure
 447  
      * @throws VersionMismatchException The action was attempted on an out of date 
 448  
      *         version.
 449  
      */
 450  
     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;
 451  
 
 452  
     /** 
 453  
      * Deletes an existing Campus Calendar.
 454  
      *
 455  
      * @param campusCalendarKey the key of the Campus Calendar to
 456  
      *        be deleted
 457  
      * @param context Context information containing the principalId
 458  
      *                and locale information about the caller of service
 459  
      *                operation
 460  
      * @return status of the operation (success, failed)
 461  
      * @throws DoesNotExistException the Campus Calendar does not exist
 462  
      * @throws InvalidParameterException One or more parameters invalid
 463  
      * @throws MissingParameterException One or more parameters missing
 464  
      * @throws OperationFailedException unable to complete request
 465  
      * @throws PermissionDeniedException authorization failure
 466  
      */
 467  
     public StatusInfo deleteCampusCalendar(@WebParam(name = "campusCalendarKey") String campusCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 468  
 
 469  
     /** 
 470  
      * Retrieves the details of a single Term by a term key.
 471  
      *
 472  
      * @param termKey Unique key of the Term to be retrieved
 473  
      * @param context Context information containing the principalId
 474  
      *                and locale information about the caller of service
 475  
      *                operation
 476  
      * @return the details of the Term requested
 477  
      * @throws DoesNotExistException termKey not found
 478  
      * @throws InvalidParameterException invalid termKey
 479  
      * @throws MissingParameterException missing termKey
 480  
      * @throws OperationFailedException unable to complete request
 481  
      * @throws PermissionDeniedException authorization failure
 482  
      */
 483  
     public TermInfo getTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 484  
 
 485  
     /** 
 486  
      * Retrieves a list Terms corresponding to a list of
 487  
      * terms keys.
 488  
      *
 489  
      * @param termKeyList list of unique keys of the
 490  
      *        Term to be retrieved
 491  
      * @param context Context information containing the principalId
 492  
      *                and locale information about the caller of service
 493  
      *                operation
 494  
      * @return a list of Terms
 495  
      * @throws DoesNotExistExceptionan  termKey in list not found
 496  
      * @throws InvalidParameterException invalid termKey in list
 497  
      * @throws MissingParameterException missing termKeyList
 498  
      * @throws OperationFailedException unable to complete request
 499  
      * @throws PermissionDeniedException authorization failure
 500  
      */
 501  
     public List<TermInfo> getTermsByKeyList(@WebParam(name = "termKeyList") List<String> termKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 502  
 
 503  
     /** 
 504  
      * Retrieves a list of Terms by Type.
 505  
      *
 506  
      * @param termTypeKey a Type of Term to be retrieved
 507  
      * @param context Context information containing the principalId
 508  
      *                and locale information about the caller of service
 509  
      *                operation
 510  
      * @return a list of Terms of the given Type
 511  
      * @throws InvalidParameterException invalid termTypeKey
 512  
      * @throws MissingParameterException missing termTypeKey
 513  
      * @throws OperationFailedException unable to complete request
 514  
      * @throws PermissionDeniedException authorization failure
 515  
      */
 516  
     public List<String> getTermKeysByType(@WebParam(name = "termTypeKey") String termTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 517  
 
 518  
     /** 
 519  
      * Retrieves the details of a single key date by a key date key.
 520  
      *
 521  
      * @param keyDateKey Unique key of the key date to be retrieved
 522  
      * @param context Context information containing the principalId
 523  
      *                and locale information about the caller of service
 524  
      *                operation
 525  
      * @return the details of the key date requested
 526  
      * @throws DoesNotExistException keyDateKey not found
 527  
      * @throws InvalidParameterException invalid keyDateKey
 528  
      * @throws MissingParameterException missing keyDateKey
 529  
      * @throws OperationFailedException unable to complete request
 530  
      * @throws PermissionDeniedException authorization failure
 531  
      */
 532  
     public KeyDateInfo getKeyDate(@WebParam(name = "keyDateKey") String keyDateKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 533  
 
 534  
     /** 
 535  
      * Retrieves a list of key dates corresponding to a list of
 536  
      * key date keys.
 537  
      *
 538  
      * @param keyDateKeyList list of unique keys of the
 539  
      *        key date to be retrieved
 540  
      * @param context Context information containing the principalId
 541  
      *                and locale information about the caller of service
 542  
      *                operation
 543  
      * @return a list of key dates
 544  
      * @throws DoesNotExistExceptionan  keyDateKey in list not found
 545  
      * @throws InvalidParameterException invalid keyDateKey in list
 546  
      * @throws MissingParameterException missing keyDateKeyList
 547  
      * @throws OperationFailedException unable to complete request
 548  
      * @throws PermissionDeniedException authorization failure
 549  
      */
 550  
     public List<KeyDateInfo> getKeyDatesByKeyList(@WebParam(name = "keyDateKeyList") List<String> keyDateKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 551  
 
 552  
     /** 
 553  
      * Retrieves a list of key dates by Type.
 554  
      *
 555  
      * @param keyDateTypeKey a Type of key date to be retrieved
 556  
      * @param context Context information containing the principalId
 557  
      *                and locale information about the caller of service
 558  
      *                operation
 559  
      * @return a list of key dates of the given Type
 560  
      * @throws InvalidParameterException invalid key dateTypeKey
 561  
      * @throws MissingParameterException missing keyDateTypeKey
 562  
      * @throws OperationFailedException unable to complete request
 563  
      * @throws PermissionDeniedException authorization failure
 564  
      */
 565  
     public List<String> getKeyDateKeysByType(@WebParam(name = "keyDateTypeKey") String keyDateTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 566  
 
 567  
     /** 
 568  
      * Retrieves a list of key dates for an academic calendar. The
 569  
      * dates include all key dates mapped to any terms, sub terms, or
 570  
      * campus calendars.
 571  
      *
 572  
      * @param academicCalendarKey
 573  
      * @param context Context information containing the principalId
 574  
      *                and locale information about the caller of service
 575  
      *                operation
 576  
      * @return a list of key dates
 577  
      * @throws DoesNotExistExceptionan academicCalendarKey not found
 578  
      * @throws InvalidParameterException invalid academicCalendarKey
 579  
      * @throws MissingParameterException missing academicCalendarKey
 580  
      * @throws OperationFailedException unable to complete request
 581  
      * @throws PermissionDeniedException authorization failure
 582  
      */
 583  
     public List<KeyDateInfo> getKeyDatesForAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 584  
 
 585  
     /** 
 586  
      * Retrieves a list of key dates immediately mapped to a Term.
 587  
      *
 588  
      * @param termKey
 589  
      * @param context Context information containing the principalId
 590  
      *                and locale information about the caller of service
 591  
      *                operation
 592  
      * @return a list of key dates
 593  
      * @throws DoesNotExistExceptionan termKey not found
 594  
      * @throws InvalidParameterException invalid termKey
 595  
      * @throws MissingParameterException missing termKey
 596  
      * @throws OperationFailedException unable to complete request
 597  
      * @throws PermissionDeniedException authorization failure
 598  
      */
 599  
     public List<KeyDateInfo> getKeyDatesForTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 600  
 
 601  
     /** 
 602  
      * Retrieves a list of key dates for a Term. The dates
 603  
      * include all key dates mapped to any nested terms.
 604  
      *
 605  
      * @param termKey
 606  
      * @param context Context information containing the principalId
 607  
      *                and locale information about the caller of service
 608  
      *                operation
 609  
      * @return a list of key dates
 610  
      * @throws DoesNotExistExceptionan termKey not found
 611  
      * @throws InvalidParameterException invalid termKey
 612  
      * @throws MissingParameterException missing termKey
 613  
      * @throws OperationFailedException unable to complete request
 614  
      * @throws PermissionDeniedException authorization failure
 615  
      */
 616  
     public List<KeyDateInfo> getAllKeyDatesForTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 617  
 
 618  
     /** 
 619  
      * Validates a key date. Depending on the value of validationType,
 620  
      * this validation could be limited to tests on just the current
 621  
      * object and its directly contained subobjects or expanded to
 622  
      * perform all tests related to this object. If an identifier is
 623  
      * present for the key date and a record is found for that identifier,
 624  
      * the validation checks if the key date can be shifted to the new
 625  
      * values. If a record cannot be found for the identifier, it is
 626  
      * assumed that the record does not exist and as such, the checks
 627  
      * performed will be much shallower, typically mimicking those
 628  
      * performed by setting the validationType to the current
 629  
      * object. This is a slightly different pattern from the standard
 630  
      * validation as the caller provides the identifier in the create
 631  
      * statement instead of the server assigning an identifier.
 632  
      *
 633  
      * @param validationType Identifier of the extent of validation
 634  
      * @param keyDateInfo the key date information to be tested.
 635  
      * @param context Context information containing the principalId
 636  
      *                and locale information about the caller of service
 637  
      *                operation
 638  
      * @return the results from performing the validation
 639  
      * @throws DoesNotExistException validationTypeKey not found
 640  
      * @throws InvalidParameterException invalid validationTypeKey, keyDateInfo
 641  
      * @throws MissingParameterException missing validationTypeKey, keyDateInfo
 642  
      * @throws OperationFailedException unable to complete request
 643  
      */
 644  
     public List<ValidationResultInfo> validateKeyDate(@WebParam(name = "validationType") String validationType, @WebParam(name = "keyDateInfo") KeyDateInfo keyDateInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 645  
 
 646  
     /** 
 647  
      * Creates a new Key Date for a Term.
 648  
      *
 649  
      * @param termKey a key for a Term to which this date is mapped
 650  
      * @param keyDateKey the key of the Key Date to be created
 651  
      * @param keyDateInfo Details of the Key Date to be created
 652  
      * @param context Context information containing the principalId
 653  
      *                and locale information about the caller of service
 654  
      *                operation
 655  
      * @return the details of the Key Date just created
 656  
      * @throws AlreadyExistsException the Key Date being created already exists
 657  
      * @throws DataValidationErrorException One or more values invalid for this operation
 658  
      * @throws InvalidParameterException One or more parameters invalid
 659  
      * @throws MissingParameterException One or more parameters missing
 660  
      * @throws OperationFailedException unable to complete request
 661  
      * @throws PermissionDeniedException authorization failure
 662  
      */
 663  
     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;
 664  
 
 665  
     /** 
 666  
      * Creates a new Key Date for a Campus Calendar.
 667  
      *
 668  
      * @param campusCalendarKey a key for a Term to which this key date is mapped
 669  
      * @param keyDateKey the key of the Key Date to be created
 670  
      * @param keyDateInfo Details of the Key Date to be created
 671  
      * @param context Context information containing the principalId
 672  
      *                and locale information about the caller of service
 673  
      *                operation
 674  
      * @return the details of the Key Date just created
 675  
      * @throws AlreadyExistsException the Key Date being created already exists
 676  
      * @throws DataValidationErrorException One or more values invalid for this operation
 677  
      * @throws InvalidParameterException One or more parameters invalid
 678  
      * @throws MissingParameterException One or more parameters missing
 679  
      * @throws OperationFailedException unable to complete request
 680  
      * @throws PermissionDeniedException authorization failure
 681  
      */
 682  
     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;
 683  
 
 684  
     /** 
 685  
      * Updates an existing Key Date.
 686  
      *
 687  
      * @param keyDateKey Key of Key Date to be updated
 688  
      * @param keyDateInfo Details of updates to the key date
 689  
      *        being updated
 690  
      * @param context Context information containing the principalId
 691  
      *                and locale information about the caller of service
 692  
      *                operation
 693  
      * @return the details of key date just updated
 694  
      * @throws DataValidationErrorException One or more values invalid for this 
 695  
      *         operation
 696  
      * @throws DoesNotExistException the key date does not exist
 697  
      * @throws InvalidParameterException One or more parameters invalid
 698  
      * @throws MissingParameterException One or more parameters missing
 699  
      * @throws OperationFailedException unable to complete request
 700  
      * @throws PermissionDeniedException authorization failure
 701  
      * @throws VersionMismatchException The action was attempted on an out of date 
 702  
      *         version.
 703  
      */
 704  
     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;
 705  
 
 706  
     /** 
 707  
      * Deletes an existing KeyDate.
 708  
      *
 709  
      * @param keyDateKey the key of the Key Date to
 710  
      *        be deleted
 711  
      * @param context Context information containing the principalId
 712  
      *                and locale information about the caller of service
 713  
      *                operation
 714  
      * @return status of the operation (success, failed)
 715  
      * @throws DoesNotExistException the KeyDate does not exist
 716  
      * @throws InvalidParameterException One or more parameters invalid
 717  
      * @throws MissingParameterException One or more parameters missing
 718  
      * @throws OperationFailedException unable to complete request
 719  
      * @throws PermissionDeniedException authorization failure
 720  
      */
 721  
     public StatusInfo deleteKeyDate(@WebParam(name = "keyDateKey") String keyDateKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 722  
 
 723  
     /** 
 724  
      * Retrieves a list of holidays for an academic calendar.
 725  
      *
 726  
      * @param academicCalendarKey
 727  
      * @param context Context information containing the principalId
 728  
      *                and locale information about the caller of service
 729  
      *                operation
 730  
      * @return a list of holidays
 731  
      * @throws DoesNotExistExceptionan academicCalendarKey not found
 732  
      * @throws InvalidParameterException invalid academicCalendarKey
 733  
      * @throws MissingParameterException missing academicCalendarKey
 734  
      * @throws OperationFailedException unable to complete request
 735  
      * @throws PermissionDeniedException authorization failure
 736  
      */
 737  
     public List<HolidayInfo> getHolidaysForAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 738  
 
 739  
     /** 
 740  
      * Validates a holiday. Depending on the value of validationType,
 741  
      * this validation could be limited to tests on just the current
 742  
      * object and its directly contained subobjects or expanded to
 743  
      * perform all tests related to this object. If an identifier is
 744  
      * present for the holiday and a record is found for that identifier,
 745  
      * the validation checks if the holiday can be shifted to the new
 746  
      * values. If a record cannot be found for the identifier, it is
 747  
      * assumed that the record does not exist and as such, the checks
 748  
      * performed will be much shallower, typically mimicking those
 749  
      * performed by setting the validationType to the current
 750  
      * object. This is a slightly different pattern from the standard
 751  
      * validation as the caller provides the identifier in the create
 752  
      * statement instead of the server assigning an identifier.
 753  
      *
 754  
      * @param validationType Identifier of the extent of validation
 755  
      * @param holidayInfo the holiday information to be tested.
 756  
      * @param context Context information containing the principalId
 757  
      *                and locale information about the caller of service
 758  
      *                operation
 759  
      * @return the results from performing the validation
 760  
      * @throws DoesNotExistException validationTypeKey not found
 761  
      * @throws InvalidParameterException invalid validationTypeKey, holidayInfo
 762  
      * @throws MissingParameterException missing validationTypeKey, holidayInfo
 763  
      * @throws OperationFailedException unable to complete request
 764  
      */
 765  
     public List<ValidationResultInfo> validateHoliday(@WebParam(name = "validationType") String validationType, @WebParam(name = "holidayInfo") HolidayInfo holidayInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 766  
 
 767  
     /** 
 768  
      * Creates a new Holiday for a Campus Calendar.
 769  
      *
 770  
      * @param campusCalendarKey a key for a Term to which this holiday is mapped
 771  
      * @param holidayKey the key of the Holiday to be created
 772  
      * @param holidayInfo Details of the Holiday to be created
 773  
      * @param context Context information containing the principalId
 774  
      *                and locale information about the caller of service
 775  
      *                operation
 776  
      * @return the details of the Holiday just created
 777  
      * @throws AlreadyExistsException the Holiday being created already exists
 778  
      * @throws DataValidationErrorException One or more values invalid for this operation
 779  
      * @throws InvalidParameterException One or more parameters invalid
 780  
      * @throws MissingParameterException One or more parameters missing
 781  
      * @throws OperationFailedException unable to complete request
 782  
      * @throws PermissionDeniedException authorization failure
 783  
      */
 784  
     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;
 785  
 
 786  
     /** 
 787  
      * Updates an existing Holiday.
 788  
      *
 789  
      * @param holidayKey Key of Holiday to be updated
 790  
      * @param holidayInfo Details of updates to the holiday
 791  
      *        being updated
 792  
      * @param context Context information containing the principalId
 793  
      *                and locale information about the caller of service
 794  
      *                operation
 795  
      * @return the details of holiday just updated
 796  
      * @throws DataValidationErrorException One or more values invalid for this 
 797  
      *         operation
 798  
      * @throws DoesNotExistException the holiday does not exist
 799  
      * @throws InvalidParameterException One or more parameters invalid
 800  
      * @throws MissingParameterException One or more parameters missing
 801  
      * @throws OperationFailedException unable to complete request
 802  
      * @throws PermissionDeniedException authorization failure
 803  
      * @throws VersionMismatchException The action was attempted on an out of date 
 804  
      *         version.
 805  
      */
 806  
     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;
 807  
 
 808  
     /** 
 809  
      * Deletes an existing Holiday.
 810  
      *
 811  
      * @param holidayKey the key of the Holiday to
 812  
      *        be deleted
 813  
      * @param context Context information containing the principalId
 814  
      *                and locale information about the caller of service
 815  
      *                operation
 816  
      * @return status of the operation (success, failed)
 817  
      * @throws DoesNotExistException the Holiday does not exist
 818  
      * @throws InvalidParameterException One or more parameters invalid
 819  
      * @throws MissingParameterException One or more parameters missing
 820  
      * @throws OperationFailedException unable to complete request
 821  
      * @throws PermissionDeniedException authorization failure
 822  
      */
 823  
     public StatusInfo deleteHoliday(@WebParam(name = "holidayKey") String holidayKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 824  
 
 825  
     /** 
 826  
      * Gets the enrollment key date group for a term.
 827  
      *
 828  
      * @param termKey unique key of a term
 829  
      * @param context Context information containing the principalId
 830  
      *                and locale information about the caller of service
 831  
      *                operation
 832  
      * @return the enrollment date group
 833  
      * @throws DoesNotExistException termKey not found
 834  
      * @throws InvalidParameterException invalid termKey
 835  
      * @throws MissingParameterException missing termKey
 836  
      * @throws OperationFailedException unable to complete request
 837  
      * @throws PermissionDeniedException authorization failure
 838  
      */
 839  
     public EnrollmentDateGroupInfo getEnrollmentDateGroup(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 840  
 
 841  
     /** 
 842  
      * Updates a the enrollment key date group for a term. The
 843  
      * date group is a set of hardened well-known dates. Updating
 844  
      * a key date group is a short cut to creating the corresponding
 845  
      * key dates and relating them to the given term.
 846  
      *
 847  
      * @param termKey key of Term
 848  
      * @param enrollmentDateGroup the enrollment date group
 849  
      * @param context Context information containing the principalId
 850  
      *                and locale information about the caller of service
 851  
      *                operation
 852  
      * @return the details of enrollmemnt date group just updated
 853  
      * @throws DataValidationErrorException One or more values invalid for this 
 854  
      *         operation
 855  
      * @throws DoesNotExistException the term does not exist
 856  
      * @throws InvalidParameterException One or more parameters invalid
 857  
      * @throws MissingParameterException One or more parameters missing
 858  
      * @throws OperationFailedException unable to complete request
 859  
      * @throws PermissionDeniedException authorization failure
 860  
      * @throws VersionMismatchException The action was attempted on an out of date 
 861  
      *         version.
 862  
      */
 863  
     public EnrollmentDateGroupInfo updateEnrollmentDateGroup(@WebParam(name = "termKey") String termKey, @WebParam(name = "enrollmentDateGroup") EnrollmentDateGroupInfo enrollmentDateGroupInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 864  
 
 865  
     /** 
 866  
      * Calculates the number of instructional days for a Term. The
 867  
      * number of instructional days is the number of class days in a
 868  
      * Term minus the non-instructional holidays on the related campus
 869  
      * calendar.
 870  
      *
 871  
      * @param termKey unique key of a term
 872  
      * @param context Context information containing the principalId
 873  
      *                and locale information about the caller of service
 874  
      *                operation
 875  
      * @return the number of instructional days
 876  
      * @throws DoesNotExistException termKey not found
 877  
      * @throws InvalidParameterException invalid termKey
 878  
      * @throws MissingParameterException missing termKey
 879  
      * @throws OperationFailedException unable to complete request
 880  
      * @throws PermissionDeniedException authorization failure
 881  
      */
 882  
     public Integer getInstructionalDaysForTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 883  
 }