Coverage Report - org.kuali.student.enrollment.classII.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.enrollment.classII.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  
 
 26  
 import org.kuali.student.enrollment.classII.academiccalendar.dto.AcademicCalendarInfo;
 27  
 import org.kuali.student.enrollment.classII.academiccalendar.dto.CampusCalendarInfo;
 28  
 import org.kuali.student.enrollment.classII.academiccalendar.dto.HolidayInfo;
 29  
 import org.kuali.student.enrollment.classII.academiccalendar.dto.KeyDateInfo;
 30  
 import org.kuali.student.enrollment.classII.academiccalendar.dto.RegistrationDateGroupInfo;
 31  
 import org.kuali.student.enrollment.classII.academiccalendar.dto.TermInfo;
 32  
 
 33  
 import org.kuali.student.r2.common.datadictionary.service.DataDictionaryService;
 34  
 import org.kuali.student.r2.common.dto.ContextInfo;
 35  
 import org.kuali.student.r2.common.dto.StatusInfo;
 36  
 import org.kuali.student.r2.common.dto.TypeInfo;
 37  
 import org.kuali.student.r2.common.dto.StateInfo;
 38  
 import org.kuali.student.r2.common.dto.ValidationResultInfo;
 39  
 
 40  
 import org.kuali.student.r2.common.exceptions.AlreadyExistsException;
 41  
 import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
 42  
 import org.kuali.student.r2.common.exceptions.DoesNotExistException;
 43  
 import org.kuali.student.r2.common.exceptions.InvalidParameterException;
 44  
 import org.kuali.student.r2.common.exceptions.MissingParameterException;
 45  
 import org.kuali.student.r2.common.exceptions.OperationFailedException;
 46  
 import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
 47  
 import org.kuali.student.r2.common.exceptions.VersionMismatchException;
 48  
 import org.kuali.student.r2.common.util.constants.AcademicCalendarServiceConstants;
 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 {
 82  
 
 83  
     /**
 84  
      * This method returns the TypeInfo for a given academic calendar
 85  
      * type key.
 86  
      *
 87  
      * @param academicCalendarTypeKey Key of the type
 88  
      * @param context Context information containing the principalId
 89  
      *        and locale information about the caller of service
 90  
      *        operation
 91  
      * @return Information about the Type
 92  
      * @throws DoesNotExistException academicCalendarTypeKey not found
 93  
      * @throws InvalidParameterException invalid academicCalendarTypeKey
 94  
      * @throws MissingParameterException missing academicCalendarTypeKey
 95  
      * @throws OperationFailedException unable to complete request
 96  
      */    
 97  
     public TypeInfo getAcademicCalendarType(@WebParam(name = "academicCalendarTypeKey") String academicCalendarTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 98  
 
 99  
     /**
 100  
      * This method returns the valid academic calendar types.
 101  
      *
 102  
      * @param context Context information containing the principalId and 
 103  
      *        locale information about the caller of service operation
 104  
      * @return a list of valid academic calendar Types
 105  
      * @throws InvalidParameterException invalid context
 106  
      * @throws MissingParameterException missing context
 107  
      * @throws OperationFailedException unable to complete request
 108  
      */
 109  
     public List<TypeInfo> getAcademicCalendarTypes(@WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 110  
 
 111  
     /**
 112  
      * This method returns the details on an academic calendar state.
 113  
      *
 114  
      * @param academicCalendarStateKey a key for an academic calendar state
 115  
      * @param context Context information containing the principalId and 
 116  
      *        locale information about the caller of service operation
 117  
      * @return details on the academic calendar state
 118  
      * @throws DoesNotExistException academicCalendarStateKey not found
 119  
      * @throws InvalidParameterException invalid context
 120  
      * @throws MissingParameterException missing context
 121  
      * @throws OperationFailedException unable to complete request
 122  
      */
 123  
     public StateInfo getAcademicCalendarState(@WebParam(name = "academicCalendarStateKey") String academicCalendarStateKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 124  
 
 125  
     /**
 126  
      * This method returns the possible academic calendar states.
 127  
      *
 128  
      * @param context Context information containing the principalId and 
 129  
      *        locale information about the caller of service operation
 130  
      * @return a list of valid academic calendar states
 131  
      * @throws InvalidParameterException invalid context
 132  
      * @throws MissingParameterException missing context
 133  
      * @throws OperationFailedException unable to complete request
 134  
      */
 135  
     public List<StateInfo> getAcademicCalendarStates(@WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, DoesNotExistException;
 136  
 
 137  
     /** 
 138  
      * Retrieves the details of a single Academic Calendar by an
 139  
      * academic calendar key.
 140  
      *
 141  
      * @param academicCalendarKey Unique key of the Academic Calendar to be retrieved
 142  
      * @param context Context information containing the principalId
 143  
      *                and locale information about the caller of service
 144  
      *                operation
 145  
      * @return the details of the Academic Calendar requested
 146  
      * @throws DoesNotExistException academicCalendarKey not found
 147  
      * @throws InvalidParameterException invalid academicCalendarKey
 148  
      * @throws MissingParameterException missing academicCalendarKey
 149  
      * @throws OperationFailedException unable to complete request
 150  
      * @throws PermissionDeniedException authorization failure
 151  
      */
 152  
     public AcademicCalendarInfo getAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 153  
 
 154  
     /** 
 155  
      * Retrieves a list Academic Calendars corresponding to a list of
 156  
      * academic calendar keys.
 157  
      *
 158  
      * @param academicCalendarKeyList list of unique keys of the
 159  
      *        Academic Calendar to be retrieved
 160  
      * @param context Context information containing the principalId
 161  
      *                and locale information about the caller of service
 162  
      *                operation
 163  
      * @return a list of Academic Calendars
 164  
      * @throws DoesNotExistException an  academicCalendarKey in list not found
 165  
      * @throws InvalidParameterException invalid academicCalendarKey in list
 166  
      * @throws MissingParameterException missing academicCalendarKeyList
 167  
      * @throws OperationFailedException unable to complete request
 168  
      * @throws PermissionDeniedException authorization failure
 169  
      */
 170  
     public List<AcademicCalendarInfo> getAcademicCalendarsByKeyList(@WebParam(name = "academicCalendarKeyList") List<String> academicCalendarKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 171  
 
 172  
     /** 
 173  
      * Retrieves a list of Academic Calendar Keys by Type.
 174  
      *
 175  
      * @param academicCalendarTypeKey a Type of Academic Calendar to be retrieved
 176  
      * @param context Context information containing the principalId
 177  
      *                and locale information about the caller of service
 178  
      *                operation
 179  
      * @return a list of Academic Calendars of the given Type
 180  
      * @throws InvalidParameterException invalid academicCalendarTypeKey
 181  
      * @throws MissingParameterException missing academicCalendarTypeKey
 182  
      * @throws OperationFailedException unable to complete request
 183  
      * @throws PermissionDeniedException authorization failure
 184  
      */
 185  
     public List<String> getAcademicCalendarKeysByType(@WebParam(name = "academicCalendarTypeKey") String academicCalendarTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 186  
 
 187  
     /** 
 188  
      * Retrieves a list of Academic Calendars that pertain to the
 189  
      * given year.
 190  
      *
 191  
      * @param year 
 192  
      * @param context Context information containing the principalId
 193  
      *                and locale information about the caller of service
 194  
      *                operation
 195  
      * @return a list of Academic Calendars 
 196  
      * @throws InvalidParameterException invalid year
 197  
      * @throws MissingParameterException missing year
 198  
      * @throws OperationFailedException unable to complete request
 199  
      * @throws PermissionDeniedException authorization failure
 200  
      */
 201  
     public List<AcademicCalendarInfo> getAcademicCalendarsByYear(@WebParam(name = "year") Integer year, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 202  
 
 203  
     /** 
 204  
      * Retrieves a list of Academic Calendars mapped to a credential
 205  
      * program type.
 206  
      *
 207  
      * @param credentialProgramTypeKey a Type of a credential program
 208  
      * @param context Context information containing the principalId
 209  
      *                and locale information about the caller of service
 210  
      *                operation
 211  
      * @return a list of Academic Calendars
 212  
      * @throws InvalidParameterException invalid credentialProgramTypeKey
 213  
      * @throws MissingParameterException missing credentialProgramTypeKey
 214  
      * @throws OperationFailedException unable to complete request
 215  
      * @throws PermissionDeniedException authorization failure
 216  
      */
 217  
     public List<AcademicCalendarInfo> getAcademicCalendarsByCredentialProgramType(@WebParam(name = "credentialProgramTypeKey") String credentialProgramTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 218  
 
 219  
     /** 
 220  
      * Retrieves a list of Academic Calendars mapped to a credential
 221  
      * program type and pertains to the given year.
 222  
      *
 223  
      * @param credentialProgramTypeKey a Type of a credential program
 224  
      * @param year
 225  
      * @param context Context information containing the principalId
 226  
      *                and locale information about the caller of service
 227  
      *                operation
 228  
      * @return a list of Academic Calendars
 229  
      * @throws InvalidParameterException invalid credentialProgramType or year
 230  
      * @throws MissingParameterException missing credentialProgramTypeKey or year
 231  
      * @throws OperationFailedException unable to complete request
 232  
      * @throws PermissionDeniedException authorization failure
 233  
      */
 234  
     public List<AcademicCalendarInfo> getAcademicCalendarsByCredentialProgramTypeForYear(@WebParam(name = "credentialProgramTypeKey") String credentialProgramTypeKey, @WebParam(name = "year") Integer year, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 235  
 
 236  
     /** 
 237  
      * Validates an academic calendar. Depending on the value of
 238  
      * validationType, this validation could be limited to tests on
 239  
      * just the current object and its directly contained subobjects
 240  
      * or expanded to perform all tests related to this object. If an
 241  
      * identifier is present for the academic calendar and a record
 242  
      * is found for that identifier, the validation checks if the
 243  
      * academic calendar can be shifted to the new values. If a
 244  
      * record cannot be found for the identifier, it is assumed that
 245  
      * the record does not exist and as such, the checks performed
 246  
      * will be much shallower, typically mimicking those performed by
 247  
      * setting the validationType to the current object. This is a
 248  
      * slightly different pattern from the standard validation as the
 249  
      * caller provides the identifier in the create statement instead
 250  
      * of the server assigning an identifier.
 251  
      *
 252  
      * @param validationType Identifier of the extent of validation
 253  
      * @param academicCalendarInfo the academic calendar information to be tested.
 254  
      * @param context Context information containing the principalId
 255  
      *                and locale information about the caller of service
 256  
      *                operation
 257  
      * @return the results from performing the validation
 258  
      * @throws DoesNotExistException validationTypeKey not found
 259  
      * @throws InvalidParameterException invalid validationTypeKey, academicCalendarInfo
 260  
      * @throws MissingParameterException missing validationTypeKey, academicCalendarInfo
 261  
      * @throws OperationFailedException unable to complete request
 262  
      */
 263  
     public List<ValidationResultInfo> validateAcademicCalendar(@WebParam(name = "validationType") String validationType, @WebParam(name = "academicCalendarInfo") AcademicCalendarInfo academicCalendarInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 264  
 
 265  
     /** 
 266  
      * Creates a new Academic Calendar.
 267  
      *
 268  
      * @param academicCalendarKey the key of the Academic Calendar to be created
 269  
      * @param academicCalendarInfo Details of the Academic Calendar to be created
 270  
      * @param context Context information containing the principalId
 271  
      *                and locale information about the caller of service
 272  
      *                operation
 273  
      * @return the details of the Academic Calendar just created
 274  
      * @throws AlreadyExistsException the Academic Calendar being created already exists
 275  
      * @throws DataValidationErrorException One or more values invalid for this operation
 276  
      * @throws InvalidParameterException One or more parameters invalid
 277  
      * @throws MissingParameterException One or more parameters missing
 278  
      * @throws OperationFailedException unable to complete request
 279  
      * @throws PermissionDeniedException authorization failure
 280  
      */
 281  
     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;
 282  
 
 283  
     /** 
 284  
      * Updates an existing Academic Calendar.
 285  
      *
 286  
      * @param academicCalendarKey Key of Academic Calendar to be updated
 287  
      * @param academicCalendarInfo Details of updates to the Academic
 288  
      *        Calendar being updated
 289  
      * @param context Context information containing the principalId
 290  
      *                and locale information about the caller of service
 291  
      *                operation
 292  
      * @return the details of Academic Calendar just updated
 293  
      * @throws DataValidationErrorException One or more values invalid for this 
 294  
      *         operation
 295  
      * @throws DoesNotExistException the Academic Calendar does not exist
 296  
      * @throws InvalidParameterException One or more parameters invalid
 297  
      * @throws MissingParameterException One or more parameters missing
 298  
      * @throws OperationFailedException unable to complete request
 299  
      * @throws PermissionDeniedException authorization failure
 300  
      * @throws VersionMismatchException The action was attempted on an out of date 
 301  
      *         version.
 302  
      */
 303  
     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;
 304  
 
 305  
     /** 
 306  
      * Deletes an existing Academic Calendar.
 307  
      *
 308  
      * @param academicCalendarKey the key of the Academic Calendar to
 309  
      *        be deleted
 310  
      * @param context Context information containing the principalId
 311  
      *                and locale information about the caller of service
 312  
      *                operation
 313  
      * @return status of the operation (success, failed)
 314  
      * @throws DoesNotExistException the Academic Calendar does not exist
 315  
      * @throws InvalidParameterException One or more parameters invalid
 316  
      * @throws MissingParameterException One or more parameters missing
 317  
      * @throws OperationFailedException unable to complete request
 318  
      * @throws PermissionDeniedException authorization failure
 319  
      */
 320  
     public StatusInfo deleteAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 321  
 
 322  
     /** 
 323  
      * Copy an Academic Calendar. The associated Terms and key dates
 324  
      * are also copied and related to this new calendar. This copy
 325  
      * operation allows for a calendar template to be created from an
 326  
      * existing calendar in which the dates of the Terms and
 327  
      * Key Dates will be updated.
 328  
      *
 329  
      * Currently, this method does not perform any date
 330  
      * transformations on the Terms and key dates (Labor Day has a
 331  
      * new date). A rollover process needs to make a copy of a
 332  
      * calendar and set the new dates for the new year.
 333  
      *
 334  
      * @param academicCalendarKey the key of the Academic Calendar to
 335  
      *        be copied
 336  
      * @param newAcademicCalendarKey the key of the new copy of the
 337  
      *        Academic Calendar
 338  
      * @param context Context information containing the principalId
 339  
      *                and locale information about the caller of service
 340  
      *                operation
 341  
      * @return status of the operation (success, failed)
 342  
      * @throws AlreadyExistsException newAcademicCalendarKey already exists
 343  
      * @throws DoesNotExistException the Academic Calendar does not exist
 344  
      * @throws InvalidParameterException One or more parameters invalid
 345  
      * @throws MissingParameterException One or more parameters missing
 346  
      * @throws OperationFailedException unable to complete request
 347  
      * @throws PermissionDeniedException authorization failure
 348  
      */
 349  
     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;
 350  
 
 351  
     /** 
 352  
      * Generates calendaring data for the Terms and key dates in an
 353  
      * Academic Calendar. The format of the data is specified by the
 354  
      * calendarDataFormatType. An example of such a type is VCALENDAR.
 355  
      *
 356  
      * @param academicCalendarKey the key of the Academic Calendar to
 357  
      *        be retrieved
 358  
      * @param calendarDataFormatTypeKey the type of format
 359  
      * @param context Context information containing the principalId
 360  
      *                and locale information about the caller of service
 361  
      *                operation
 362  
      * @return status of the operation (success, failed)
 363  
      * @throws DoesNotExistException the Academic Calendar or format
 364  
      *         type does not exist
 365  
      * @throws InvalidParameterException One or more parameters invalid
 366  
      * @throws MissingParameterException One or more parameters missing
 367  
      * @throws OperationFailedException unable to complete request
 368  
      * @throws PermissionDeniedException authorization failure
 369  
      */
 370  
     public String getAcademicCalendarData(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "calendarDataFormatTypeKey") String calendarDataFormatTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 371  
 
 372  
     /**
 373  
      * This method returns the TypeInfo for a campus calendar type
 374  
      * key.
 375  
      *
 376  
      * @param campusCalendarTypeKey Key of the type
 377  
      * @param context Context information containing the principalId
 378  
      *        and locale information about the caller of service
 379  
      *        operation
 380  
      * @return Information about the Type
 381  
      * @throws DoesNotExistException  campusCalendarTypeKey not found
 382  
      * @throws InvalidParameterException invalid campusCalendarTypeKey
 383  
      * @throws MissingParameterException missing campusCalendarTypeKey
 384  
      * @throws OperationFailedException unable to complete request
 385  
      */    
 386  
     public TypeInfo getCampusCalendarType(@WebParam(name = "campusCalendarTypeKey") String campusCalendarTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 387  
 
 388  
     /**
 389  
      * This method returns the valid campus calendar types.
 390  
      *
 391  
      * @param context Context information containing the principalId
 392  
      *        and locale information about the caller of service
 393  
      *        operation
 394  
      * @return a list of valid campus calendar Types
 395  
      * @throws InvalidParameterException invalid context
 396  
      * @throws MissingParameterException missing context
 397  
      * @throws OperationFailedException unable to complete request
 398  
      */
 399  
     public List<TypeInfo> getCampusCalendarTypes(@WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 400  
 
 401  
     /**
 402  
      * This method returns the details on a campus calendar state.
 403  
      *
 404  
      * @param campusCalendarStateKey a key for a campus calendar state
 405  
      * @param context Context information containing the principalId and 
 406  
      *        locale information about the caller of service operation
 407  
      * @return details on the campus calendar state
 408  
      * @throws DoesNotExistException campusCalendarStateKey not found
 409  
      * @throws InvalidParameterException invalid context
 410  
      * @throws MissingParameterException missing context
 411  
      * @throws OperationFailedException unable to complete request
 412  
      */
 413  
     public StateInfo getCampusCalendarState(@WebParam(name = "campusCalendarStateKey") String campusCalendarStateKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 414  
 
 415  
     /**
 416  
      * This method returns the possible campus calendar states.
 417  
      *
 418  
      * @param context Context information containing the principalId and 
 419  
      *        locale information about the caller of service operation
 420  
      * @return a list of valid campus calendar states
 421  
      * @throws InvalidParameterException invalid context
 422  
      * @throws MissingParameterException missing context
 423  
      * @throws OperationFailedException unable to complete request
 424  
      * @throws DoesNotExistException 
 425  
      */
 426  
     public List<StateInfo> getCampusCalendarStates(@WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, DoesNotExistException;
 427  
 
 428  
     /** 
 429  
      * Retrieves the details of a single Campus Calendar by an
 430  
      * campus calendar key.
 431  
      *
 432  
      * @param campusCalendarKey Unique key of the Campus Calendar to be retrieved
 433  
      * @param context Context information containing the principalId
 434  
      *                and locale information about the caller of service
 435  
      *                operation
 436  
      * @return the details of the Campus Calendar requested
 437  
      * @throws DoesNotExistException campusCalendarKey not found
 438  
      * @throws InvalidParameterException invalid campusCalendarKey
 439  
      * @throws MissingParameterException missing campusCalendarKey
 440  
      * @throws OperationFailedException unable to complete request
 441  
      * @throws PermissionDeniedException authorization failure
 442  
      */
 443  
     public CampusCalendarInfo getCampusCalendar(@WebParam(name = "campusCalendarKey") String campusCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 444  
 
 445  
     /** 
 446  
      * Retrieves a list Campus Calendars corresponding to a list of
 447  
      * campus calendar keys.
 448  
      *
 449  
      * @param campusCalendarKeyList list of unique keys of the
 450  
      *        Campus Calendar to be retrieved
 451  
      * @param context Context information containing the principalId
 452  
      *                and locale information about the caller of service
 453  
      *                operation
 454  
      * @return a list of Campus Calendars
 455  
      * @throws DoesNotExistException a campusCalendarKey in list not found
 456  
      * @throws InvalidParameterException invalid campusCalendarKey in list
 457  
      * @throws MissingParameterException missing campusCalendarKeyList
 458  
      * @throws OperationFailedException unable to complete request
 459  
      * @throws PermissionDeniedException authorization failure
 460  
      */
 461  
     public List<CampusCalendarInfo> getCampusCalendarsByKeyList(@WebParam(name = "campusCalendarKeyList") List<String> campusCalendarKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 462  
 
 463  
     /** 
 464  
      * Retrieves a list of Campus Calendars by Type.
 465  
      *
 466  
      * @param campusCalendarTypeKey a Type of Campus Calendar to be retrieved
 467  
      * @param context Context information containing the principalId
 468  
      *                and locale information about the caller of service
 469  
      *                operation
 470  
      * @return a list of Campus Calendars of the given Type
 471  
      * @throws InvalidParameterException invalid campusCalendarTypeKey
 472  
      * @throws MissingParameterException missing campusCalendarTypeKey
 473  
      * @throws OperationFailedException unable to complete request
 474  
      * @throws PermissionDeniedException authorization failure
 475  
      */
 476  
     public List<String> getCampusCalendarKeysByType(@WebParam(name = "campusCalendarTypeKey") String campusCalendarTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 477  
 
 478  
     /** 
 479  
      * Retrieves a list of Campus Calendars that pertain to the
 480  
      * given year.
 481  
      *
 482  
      * @param year 
 483  
      * @param context Context information containing the principalId
 484  
      *                and locale information about the caller of service
 485  
      *                operation
 486  
      * @return a list of Campus Calendars 
 487  
      * @throws InvalidParameterException invalid year
 488  
      * @throws MissingParameterException missing year
 489  
      * @throws OperationFailedException unable to complete request
 490  
      * @throws PermissionDeniedException authorization failure
 491  
      */
 492  
     public List<CampusCalendarInfo> getCampusCalendarsByYear(@WebParam(name = "year") Integer year, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 493  
 
 494  
     /** 
 495  
      * Validates a campus calendar. Depending on the value of
 496  
      * validationType, this validation could be limited to tests on
 497  
      * just the current object and its directly contained subobjects
 498  
      * or expanded to perform all tests related to this object. If an
 499  
      * identifier is present for the campus calendar and a record
 500  
      * is found for that identifier, the validation checks if the
 501  
      * campus calendar can be shifted to the new values. If a
 502  
      * record cannot be found for the identifier, it is assumed that
 503  
      * the record does not exist and as such, the checks performed
 504  
      * will be much shallower, typically mimicking those performed by
 505  
      * setting the validationType to the current object. This is a
 506  
      * slightly different pattern from the standard validation as the
 507  
      * caller provides the identifier in the create statement instead
 508  
      * of the server assigning an identifier.
 509  
      *
 510  
      * @param validationType Identifier of the extent of validation
 511  
      * @param campusCalendarInfo the campus calendar information to be tested.
 512  
      * @param context Context information containing the principalId
 513  
      *                and locale information about the caller of service
 514  
      *                operation
 515  
      * @return the results from performing the validation
 516  
      * @throws DoesNotExistException validationTypeKey not found
 517  
      * @throws InvalidParameterException invalid validationTypeKey, campusCalendarInfo
 518  
      * @throws MissingParameterException missing validationTypeKey, campusCalendarInfo
 519  
      * @throws OperationFailedException unable to complete request
 520  
      */
 521  
     public List<ValidationResultInfo> validateCampusCalendar(@WebParam(name = "validationType") String validationType, @WebParam(name = "campusCalendarInfo") CampusCalendarInfo campusCalendarInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 522  
 
 523  
     /** 
 524  
      * Creates a new Campus Calendar.
 525  
      *
 526  
      * @param campusCalendarKey the key of the Campus Calendar to be created
 527  
      * @param campusCalendarInfo Details of the Campus Calendar to be created
 528  
      * @param context Context information containing the principalId
 529  
      *                and locale information about the caller of service
 530  
      *                operation
 531  
      * @return the details of the Campus Calendar just created
 532  
      * @throws AlreadyExistsException the Campus Calendar being created already exists
 533  
      * @throws DataValidationErrorException One or more values invalid for this operation
 534  
      * @throws InvalidParameterException One or more parameters invalid
 535  
      * @throws MissingParameterException One or more parameters missing
 536  
      * @throws OperationFailedException unable to complete request
 537  
      * @throws PermissionDeniedException authorization failure
 538  
      */
 539  
     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;
 540  
 
 541  
     /** 
 542  
      * Updates an existing Campus Calendar.
 543  
      *
 544  
      * @param campusCalendarKey Key of Campus Calendar to be updated
 545  
      * @param campusCalendarInfo Details of updates to the Campus
 546  
      *        Calendar being updated
 547  
      * @param context Context information containing the principalId
 548  
      *                and locale information about the caller of service
 549  
      *                operation
 550  
      * @return the details of Campus Calendar just updated
 551  
      * @throws DataValidationErrorException One or more values invalid for this 
 552  
      *         operation
 553  
      * @throws DoesNotExistException the Campus Calendar does not exist
 554  
      * @throws InvalidParameterException One or more parameters invalid
 555  
      * @throws MissingParameterException One or more parameters missing
 556  
      * @throws OperationFailedException unable to complete request
 557  
      * @throws PermissionDeniedException authorization failure
 558  
      * @throws VersionMismatchException The action was attempted on an out of date 
 559  
      *         version.
 560  
      */
 561  
     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;
 562  
 
 563  
     /** 
 564  
      * Deletes an existing Campus Calendar.
 565  
      *
 566  
      * @param campusCalendarKey the key of the Campus Calendar to
 567  
      *        be deleted
 568  
      * @param context Context information containing the principalId
 569  
      *                and locale information about the caller of service
 570  
      *                operation
 571  
      * @return status of the operation (success, failed)
 572  
      * @throws DoesNotExistException the Campus Calendar does not exist
 573  
      * @throws InvalidParameterException One or more parameters invalid
 574  
      * @throws MissingParameterException One or more parameters missing
 575  
      * @throws OperationFailedException unable to complete request
 576  
      * @throws PermissionDeniedException authorization failure
 577  
      */
 578  
     public StatusInfo deleteCampusCalendar(@WebParam(name = "campusCalendarKey") String campusCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 579  
 
 580  
     /**
 581  
      * This method returns the TypeInfo for a given Term type key.
 582  
      *
 583  
      * @param termTypeKey Key of the type
 584  
      * @param context Context information containing the principalId
 585  
      *        and locale information about the caller of service
 586  
      *        operation
 587  
      * @return Information about the Type
 588  
      * @throws DoesNotExistException  termTypeKey not found
 589  
      * @throws InvalidParameterException invalid termTypeKey
 590  
      * @throws MissingParameterException missing termTypeKey
 591  
      * @throws OperationFailedException unable to complete request
 592  
      */    
 593  
     public TypeInfo getTermType(@WebParam(name = "termTypeKey") String termTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 594  
 
 595  
     /**
 596  
      * This method returns all the valid Term types.
 597  
      *
 598  
      * @param context Context information containing the principalId
 599  
      *        and locale information about the caller of service
 600  
      *        operation
 601  
      * @return a list of valid term Types
 602  
      * @throws InvalidParameterException invalid context
 603  
      * @throws MissingParameterException missing context
 604  
      * @throws OperationFailedException unable to complete request
 605  
      */
 606  
     public List<TypeInfo> getTermTypes(@WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 607  
 
 608  
     /**
 609  
      * This method returns the valid Term types for an
 610  
      * Academic Calendar Type. Only Terms of allowed Types
 611  
      * can be mapped to an Academic Calendar.
 612  
      *
 613  
      * @param academicCalendarTypeKey a key of an academic calendar type
 614  
      * @param context Context information containing the principalId
 615  
      *        and locale information about the caller of service
 616  
      *        operation
 617  
      * @return a list of valid term Types
 618  
      * @throws DoesNotExistException  academicCalendarTypeKey not found
 619  
      * @throws InvalidParameterException invalid parameter
 620  
      * @throws MissingParameterException missing parameter
 621  
      * @throws OperationFailedException unable to complete request
 622  
      */
 623  
     public List<TypeInfo> getTermTypesForAcademicCalendarType(@WebParam(name="academicCalendarTypeKey") String academicCalendarTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 624  
 
 625  
     /**
 626  
      * This method returns the valid Term types for a Term Type. Only
 627  
      * Terms of allowed Types can be nested inside another Term.
 628  
      *
 629  
      * @param termTypeKey a key of a term type
 630  
      * @param context Context information containing the principalId
 631  
      *        and locale information about the caller of service
 632  
      *        operation
 633  
      * @return a list of valid term Types
 634  
      * @throws DoesNotExistException  termTypeKey not found
 635  
      * @throws InvalidParameterException invalid parameter
 636  
      * @throws MissingParameterException missing parameter
 637  
      * @throws OperationFailedException unable to complete request
 638  
      */
 639  
     public List<TypeInfo> getTermTypesForTermType(@WebParam(name="termTypeKey") String termTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 640  
 
 641  
     /**
 642  
      * This method returns the details on a term state.
 643  
      *
 644  
      * @param termStateKey a key for a term state
 645  
      * @param context Context information containing the principalId and 
 646  
      *        locale information about the caller of service operation
 647  
      * @return state info
 648  
      * @throws DoesNotExistException  termTypeKey not found
 649  
      * @throws InvalidParameterException invalid context
 650  
      * @throws MissingParameterException missing context
 651  
      * @throws OperationFailedException unable to complete request
 652  
      */
 653  
     public StateInfo getTermState(@WebParam(name = "termStateKey") String termStateKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 654  
 
 655  
     /**
 656  
      * This method returns the possible term states.
 657  
      *
 658  
      * @param context Context information containing the principalId and 
 659  
      *        locale information about the caller of service operation
 660  
      * @return a list of valid term states
 661  
      * @throws InvalidParameterException invalid context
 662  
      * @throws MissingParameterException missing context
 663  
      * @throws OperationFailedException unable to complete request
 664  
      * @throws DoesNotExistException 
 665  
      */
 666  
     public List<StateInfo> getTermStates(@WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, DoesNotExistException;
 667  
 
 668  
     /** 
 669  
      * Retrieves the details of a single Term by a term key.
 670  
      *
 671  
      * @param termKey Unique key of the Term to be retrieved
 672  
      * @param context Context information containing the principalId
 673  
      *                and locale information about the caller of service
 674  
      *                operation
 675  
      * @return the details of the Term requested
 676  
      * @throws DoesNotExistException termKey not found
 677  
      * @throws InvalidParameterException invalid termKey
 678  
      * @throws MissingParameterException missing termKey
 679  
      * @throws OperationFailedException unable to complete request
 680  
      * @throws PermissionDeniedException authorization failure
 681  
      */
 682  
     public TermInfo getTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 683  
 
 684  
     /** 
 685  
      * Retrieves a list Terms corresponding to a list of
 686  
      * terms keys.
 687  
      *
 688  
      * @param termKeyList list of unique keys of the
 689  
      *        Term to be retrieved
 690  
      * @param context Context information containing the principalId
 691  
      *                and locale information about the caller of service
 692  
      *                operation
 693  
      * @return a list of Terms
 694  
      * @throws DoesNotExistException a termKey in list not found
 695  
      * @throws InvalidParameterException invalid termKey in list
 696  
      * @throws MissingParameterException missing termKeyList
 697  
      * @throws OperationFailedException unable to complete request
 698  
      * @throws PermissionDeniedException authorization failure
 699  
      */
 700  
     public List<TermInfo> getTermsByKeyList(@WebParam(name = "termKeyList") List<String> termKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 701  
 
 702  
     /** 
 703  
      * Retrieves a list of Terms by Type.
 704  
      *
 705  
      * @param termTypeKey a Type of Term to be retrieved
 706  
      * @param context Context information containing the principalId
 707  
      *                and locale information about the caller of service
 708  
      *                operation
 709  
      * @return a list of Terms of the given Type
 710  
      * @throws InvalidParameterException invalid termTypeKey
 711  
      * @throws MissingParameterException missing termTypeKey
 712  
      * @throws OperationFailedException unable to complete request
 713  
      * @throws PermissionDeniedException authorization failure
 714  
      */
 715  
     public List<String> getTermKeysByType(@WebParam(name = "termTypeKey") String termTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 716  
 
 717  
     /** 
 718  
      * Retrieves a list Terms mapped to the given Academic Calendar
 719  
      * sorted by Term start date.
 720  
      *
 721  
      * Mappings are managed through Type configuration and inferred by
 722  
      * the dates of the calendar and term so operations to manage the
 723  
      * mappings are not currently defined.
 724  
      *
 725  
      * @param academicCalendarKey a key for an academic calendar
 726  
      * @param context Context information containing the principalId
 727  
      *                and locale information about the caller of service
 728  
      *                operation
 729  
      * @return a list of Terms
 730  
      * @throws DoesNotExistException the academic calendar not found
 731  
      * @throws InvalidParameterException invalid acadenmicCalendarKey
 732  
      * @throws MissingParameterException missing academicCalendarKey
 733  
      * @throws OperationFailedException unable to complete request
 734  
      * @throws PermissionDeniedException authorization failure
 735  
      */
 736  
     public List<TermInfo> getTermsForAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 737  
 
 738  
     /** 
 739  
      * Retrieves a list Terms nested inside the given Term sorted
 740  
      * by Term start date,
 741  
      *
 742  
      * Mappings are managed through Type configuration and inferred by
 743  
      * the dates of the terms so operations to manage the mappings are
 744  
      * not currently defined.
 745  
      *
 746  
      * @param termKey a key for a Term
 747  
      * @param context Context information containing the principalId
 748  
      *                and locale information about the caller of service
 749  
      *                operation
 750  
      * @return a list of Terms
 751  
      * @throws DoesNotExistException the term is not found
 752  
      * @throws InvalidParameterException invalid termKey
 753  
      * @throws MissingParameterException missing termKey
 754  
      * @throws OperationFailedException unable to complete request
 755  
      * @throws PermissionDeniedException authorization failure
 756  
      */
 757  
     public List<TermInfo> getTermsForTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 758  
 
 759  
     /** 
 760  
      * Gets the parent of a nested Term.
 761  
      *
 762  
      * @param termKey a key for a Term
 763  
      * @param context Context information containing the principalId
 764  
      *                and locale information about the caller of service
 765  
      *                operation
 766  
      * @return the parent term or null if it is a root
 767  
      * @throws DoesNotExistException the term is not found
 768  
      * @throws InvalidParameterException invalid termKey
 769  
      * @throws MissingParameterException missing termKey
 770  
      * @throws OperationFailedException unable to complete request
 771  
      * @throws PermissionDeniedException authorization failure
 772  
      */
 773  
     public TermInfo getParentTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 774  
 
 775  
     /** 
 776  
      * Validates a term. Depending on the value of validationType,
 777  
      * this validation could be limited to tests on just the current
 778  
      * object and its directly contained subobjects or expanded to
 779  
      * perform all tests related to this object. If an identifier is
 780  
      * present for the term and a record is found for that identifier,
 781  
      * the validation checks if the term can be shifted to the new
 782  
      * values. If a record cannot be found for the identifier, it is
 783  
      * assumed that the record does not exist and as such, the checks
 784  
      * performed will be much shallower, typically mimicking those
 785  
      * performed by setting the validationType to the current
 786  
      * object. This is a slightly different pattern from the standard
 787  
      * validation as the caller provides the identifier in the create
 788  
      * statement instead of the server assigning an identifier.
 789  
      *
 790  
      * @param validationType Identifier of the extent of validation
 791  
      * @param termInfo the term information to be tested.
 792  
      * @param context Context information containing the principalId
 793  
      *                and locale information about the caller of service
 794  
      *                operation
 795  
      * @return the results from performing the validation
 796  
      * @throws DoesNotExistException validationTypeKey not found
 797  
      * @throws InvalidParameterException invalid validationTypeKey, termInfo
 798  
      * @throws MissingParameterException missing validationTypeKey, termInfo
 799  
      * @throws OperationFailedException unable to complete request
 800  
      */
 801  
     public List<ValidationResultInfo> validateTerm(@WebParam(name = "validationType") String validationType, @WebParam(name = "termInfo") TermInfo termInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 802  
 
 803  
     /** 
 804  
      * Creates a new Tern.
 805  
      *
 806  
      * @param termKey the key of the term to be created
 807  
      * @param termInfo Details of the term to be created
 808  
      * @param context Context information containing the principalId
 809  
      *                and locale information about the caller of service
 810  
      *                operation
 811  
      * @return the details of the Term just created
 812  
      * @throws AlreadyExistsException the Term being created already exists
 813  
      * @throws DataValidationErrorException One or more values invalid for this operation
 814  
      * @throws InvalidParameterException One or more parameters invalid
 815  
      * @throws MissingParameterException One or more parameters missing
 816  
      * @throws OperationFailedException unable to complete request
 817  
      * @throws PermissionDeniedException authorization failure
 818  
      */
 819  
     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;
 820  
 
 821  
     /** 
 822  
      * Updates an existing Term.
 823  
      *
 824  
      * @param termKey Key of Term to be updated
 825  
      * @param termInfo Details of updates to the Term being updated
 826  
      * @param context Context information containing the principalId
 827  
      *                and locale information about the caller of service
 828  
      *                operation
 829  
      * @return the details of Term just updated
 830  
      * @throws DataValidationErrorException One or more values invalid for this 
 831  
      *         operation
 832  
      * @throws DoesNotExistException the Term does not exist
 833  
      * @throws InvalidParameterException One or more parameters invalid
 834  
      * @throws MissingParameterException One or more parameters missing
 835  
      * @throws OperationFailedException unable to complete request
 836  
      * @throws PermissionDeniedException authorization failure
 837  
      * @throws VersionMismatchException The action was attempted on an out of date 
 838  
      *         version.
 839  
      */
 840  
     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;
 841  
 
 842  
     /** 
 843  
      * Deletes an existing Term.
 844  
      *
 845  
      * @param termKey the key of the Term to be deleted
 846  
      * @param context Context information containing the principalId
 847  
      *                and locale information about the caller of service
 848  
      *                operation
 849  
      * @return status of the operation (success, failed)
 850  
      * @throws DoesNotExistException the Term does not exist
 851  
      * @throws InvalidParameterException One or more parameters invalid
 852  
      * @throws MissingParameterException One or more parameters missing
 853  
      * @throws OperationFailedException unable to complete request
 854  
      * @throws PermissionDeniedException authorization failure
 855  
      */
 856  
     public StatusInfo deleteTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 857  
 
 858  
     /** 
 859  
      * Adds a Term to an AcademicCalendar.
 860  
      *
 861  
      * @param academicCalendarKey the key of an Academic Calendar
 862  
      * @param termKey the key of Term to be added
 863  
      * @param context Context information containing the principalId
 864  
      *                and locale information about the caller of service
 865  
      *                operation
 866  
      * @return the status
 867  
      * @throws AlreadyExistsException term already related to academic calendar
 868  
      * @throws DoesNotExistException the Term or Academic Calendar does not exist
 869  
      * @throws InvalidParameterException One or more parameters invalid
 870  
      * @throws MissingParameterException One or more parameters missing
 871  
      * @throws OperationFailedException unable to complete request
 872  
      * @throws PermissionDeniedException authorization failure
 873  
      */
 874  
     public StatusInfo addTermToAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 875  
 
 876  
     /** 
 877  
      * Removes a Term from an AcademicCalendar.
 878  
      *
 879  
      * @param academicCalendarKey the key of an Academic Calendar
 880  
      * @param termKey the key of Term to be removed
 881  
      * @param context Context information containing the principalId
 882  
      *                and locale information about the caller of service
 883  
      *                operation
 884  
      * @return the status
 885  
      * @throws DoesNotExistException the Term not part of Academic Calendar
 886  
      * @throws InvalidParameterException One or more parameters invalid
 887  
      * @throws MissingParameterException One or more parameters missing
 888  
      * @throws OperationFailedException unable to complete request
 889  
      * @throws PermissionDeniedException authorization failure
 890  
      */
 891  
     public StatusInfo removeTermFromAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 892  
 
 893  
     /** 
 894  
      * Adds a Term to a Term.
 895  
      *
 896  
      * @param parentTermKey the key of a Term
 897  
      * @param termKey the key of Term to be added
 898  
      * @param context Context information containing the principalId
 899  
      *                and locale information about the caller of service
 900  
      *                operation
 901  
      * @return the status
 902  
      * @throws AlreadyExistsException term relation already exists
 903  
      * @throws DoesNotExistException a Term does not exist
 904  
      * @throws InvalidParameterException One or more parameters invalid
 905  
      * @throws MissingParameterException One or more parameters missing
 906  
      * @throws OperationFailedException unable to complete request
 907  
      * @throws PermissionDeniedException authorization failure
 908  
      */
 909  
     public StatusInfo addTermToTerm(@WebParam(name = "parentTermKey") String parentTermKey, @WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 910  
 
 911  
     /** 
 912  
      * Removes a Term from a Term.
 913  
      *
 914  
      * @param parentTermKey the key of a Term
 915  
      * @param termKey the key of Term to be removed
 916  
      * @param context Context information containing the principalId
 917  
      *                and locale information about the caller of service
 918  
      *                operation
 919  
      * @return the status
 920  
      * @throws DoesNotExistException the Term is notnested inside the parent Term
 921  
      * @throws InvalidParameterException One or more parameters invalid
 922  
      * @throws MissingParameterException One or more parameters missing
 923  
      * @throws OperationFailedException unable to complete request
 924  
      * @throws PermissionDeniedException authorization failure
 925  
      */
 926  
     public StatusInfo removeTermFromTerm(@WebParam(name = "parentTermKey") String parentTermKey, @WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 927  
 
 928  
     /**
 929  
      * This method returns the TypeInfo for a given KeyDate type key.
 930  
      *
 931  
      * @param typeKey Key of the type
 932  
      * @param context Context information containing the principalId
 933  
      *        and locale information about the caller of service
 934  
      *        operation
 935  
      * @return Information about the Type
 936  
      * @throws DoesNotExistException  keyDateTypeKey not found
 937  
      * @throws InvalidParameterException invalid keyDateTypeKey
 938  
      * @throws MissingParameterException missing keyDateTypeKey
 939  
      * @throws OperationFailedException unable to complete request
 940  
      */    
 941  
     public TypeInfo getKeyDateType(@WebParam(name = "keyDateTypeKey") String keyDateTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 942  
 
 943  
     /**
 944  
      * This method returns the valid key date types for the given
 945  
      * term type.
 946  
      *
 947  
      * @param context Context information containing the principalId
 948  
      *        and locale information about the caller of service
 949  
      *        operation
 950  
      * @param campusCalendatTypeKey
 951  
      * @return a list of valid key date Types
 952  
      * @throws DoesNotExistException termTypeKey not found
 953  
      * @throws InvalidParameterException invalid key or context
 954  
      * @throws MissingParameterException missing key or context
 955  
      * @throws OperationFailedException unable to complete request
 956  
      */
 957  
     public List<TypeInfo> getKeyDateTypesForTermType(@WebParam(name = "termTypeKey") String termTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 958  
 
 959  
     /** 
 960  
      * Retrieves the details of a single key date by a key date key.
 961  
      *
 962  
      * @param keyDateKey Unique key of the key date to be retrieved
 963  
      * @param context Context information containing the principalId
 964  
      *                and locale information about the caller of service
 965  
      *                operation
 966  
      * @return the details of the key date requested
 967  
      * @throws DoesNotExistException keyDateKey not found
 968  
      * @throws InvalidParameterException invalid keyDateKey
 969  
      * @throws MissingParameterException missing keyDateKey
 970  
      * @throws OperationFailedException unable to complete request
 971  
      * @throws PermissionDeniedException authorization failure
 972  
      */
 973  
     public KeyDateInfo getKeyDate(@WebParam(name = "keyDateKey") String keyDateKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 974  
 
 975  
     /** 
 976  
      * Retrieves a list of key dates corresponding to a list of
 977  
      * key date keys.
 978  
      *
 979  
      * @param keyDateKeyList list of unique keys of the
 980  
      *        key date to be retrieved
 981  
      * @param context Context information containing the principalId
 982  
      *                and locale information about the caller of service
 983  
      *                operation
 984  
      * @return a list of key dates
 985  
      * @throws DoesNotExistException an  keyDateKey in list not found
 986  
      * @throws InvalidParameterException invalid keyDateKey in list
 987  
      * @throws MissingParameterException missing keyDateKeyList
 988  
      * @throws OperationFailedException unable to complete request
 989  
      * @throws PermissionDeniedException authorization failure
 990  
      */
 991  
     public List<KeyDateInfo> getKeyDatesByKeyList(@WebParam(name = "keyDateKeyList") List<String> keyDateKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 992  
 
 993  
     /** 
 994  
      * Retrieves a list of key dates by Type.
 995  
      *
 996  
      * @param keyDateTypeKey a Type of key date to be retrieved
 997  
      * @param context Context information containing the principalId
 998  
      *                and locale information about the caller of service
 999  
      *                operation
 1000  
      * @return a list of key dates of the given Type
 1001  
      * @throws InvalidParameterException invalid key dateTypeKey
 1002  
      * @throws MissingParameterException missing keyDateTypeKey
 1003  
      * @throws OperationFailedException unable to complete request
 1004  
      * @throws PermissionDeniedException authorization failure
 1005  
      */
 1006  
     public List<String> getKeyDateKeysByType(@WebParam(name = "keyDateTypeKey") String keyDateTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1007  
 
 1008  
     /** 
 1009  
      * Retrieves a list of key dates for an academic calendar sorted
 1010  
      * by the date. The dates include all key dates mapped to any
 1011  
      * terms and sub terms.
 1012  
      *
 1013  
      * @param academicCalendarKey
 1014  
      * @param context Context information containing the principalId
 1015  
      *                and locale information about the caller of service
 1016  
      *                operation
 1017  
      * @return a list of key dates
 1018  
      * @throws DoesNotExistException an academicCalendarKey not found
 1019  
      * @throws InvalidParameterException invalid academicCalendarKey
 1020  
      * @throws MissingParameterException missing academicCalendarKey
 1021  
      * @throws OperationFailedException unable to complete request
 1022  
      * @throws PermissionDeniedException authorization failure
 1023  
      */
 1024  
     public List<KeyDateInfo> getKeyDatesForAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1025  
 
 1026  
     /** 
 1027  
      * Retrieves a list of key dates for an academic calendar that
 1028  
      * fall within the given date range inclusive. The dates include
 1029  
      * all key dates mapped to any terms and sub terms and are sorted
 1030  
      * by date.
 1031  
      *
 1032  
      * @param academicCalendarKey
 1033  
      * @param startDate the start of the date range
 1034  
      * @param endDate the end of the date range
 1035  
      * @param context Context information containing the principalId
 1036  
      *                and locale information about the caller of service
 1037  
      *                operation
 1038  
      * @return a list of key dates
 1039  
      * @throws DoesNotExistException an academicCalendarKey not found
 1040  
      * @throws InvalidParameterException invalid academicCalendarKey
 1041  
      * @throws MissingParameterException missing parameter
 1042  
      * @throws OperationFailedException unable to complete request
 1043  
      * @throws PermissionDeniedException authorization failure
 1044  
      */
 1045  
     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;
 1046  
 
 1047  
     /** 
 1048  
      * Retrieves a list of key dates immediately mapped to a Term
 1049  
      * sorted by date.
 1050  
      *
 1051  
      * @param termKey
 1052  
      * @param context Context information containing the principalId
 1053  
      *                and locale information about the caller of service
 1054  
      *                operation
 1055  
      * @return a list of key dates
 1056  
      * @throws DoesNotExistException a termKey not found
 1057  
      * @throws InvalidParameterException invalid termKey
 1058  
      * @throws MissingParameterException missing termKey
 1059  
      * @throws OperationFailedException unable to complete request
 1060  
      * @throws PermissionDeniedException authorization failure
 1061  
      */
 1062  
     public List<KeyDateInfo> getKeyDatesForTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1063  
 
 1064  
     /** 
 1065  
      * Retrieves a list of key dates for a given Term that fall within
 1066  
      * the given date range inclusive sorted by date. The dates
 1067  
      * include only those dates immediate mapped to the Term.
 1068  
      *
 1069  
      * @param termKey unique key for a Term
 1070  
      * @param startDate start of date range
 1071  
      * @param endDate end of date range
 1072  
      * @param context Context information containing the principalId
 1073  
      *                and locale information about the caller of service
 1074  
      *                operation
 1075  
      * @return a list of key dates
 1076  
      * @throws DoesNotExistException a termKey not found
 1077  
      * @throws InvalidParameterException invalid termKey
 1078  
      * @throws MissingParameterException missing parameter
 1079  
      * @throws OperationFailedException unable to complete request
 1080  
      * @throws PermissionDeniedException authorization failure
 1081  
      */
 1082  
     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;
 1083  
 
 1084  
     /** 
 1085  
      * Retrieves a list of key dates for a Term sorted by date. The
 1086  
      * dates include all key dates mapped to any nested terms.
 1087  
      *
 1088  
      * @param termKey unique key for a Term
 1089  
      * @param context Context information containing the principalId
 1090  
      *                and locale information about the caller of service
 1091  
      *                operation
 1092  
      * @return a list of key dates
 1093  
      * @throws DoesNotExistException a termKey not found
 1094  
      * @throws InvalidParameterException invalid termKey
 1095  
      * @throws MissingParameterException missing termKey
 1096  
      * @throws OperationFailedException unable to complete request
 1097  
      * @throws PermissionDeniedException authorization failure
 1098  
      */
 1099  
     public List<KeyDateInfo> getAllKeyDatesForTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1100  
 
 1101  
     /** 
 1102  
      * Retrieves a list of key dates for a given Term that fall within
 1103  
      * the given date range inclusive. The dates include all key dates
 1104  
      * mapped to any nested terms and are sorted by date.
 1105  
      *
 1106  
      * @param termKey unique key for a Term
 1107  
      * @param startDate start of date range
 1108  
      * @param endDate end of date range
 1109  
      * @param context Context information containing the principalId
 1110  
      *                and locale information about the caller of service
 1111  
      *                operation
 1112  
      * @return a list of key dates
 1113  
      * @throws DoesNotExistException a termKey not found
 1114  
      * @throws InvalidParameterException invalid termKey
 1115  
      * @throws MissingParameterException missing parameter
 1116  
      * @throws OperationFailedException unable to complete request
 1117  
      * @throws PermissionDeniedException authorization failure
 1118  
      */
 1119  
     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;
 1120  
 
 1121  
     /** 
 1122  
      * Validates a key date. Depending on the value of validationType,
 1123  
      * this validation could be limited to tests on just the current
 1124  
      * object and its directly contained subobjects or expanded to
 1125  
      * perform all tests related to this object. If an identifier is
 1126  
      * present for the key date and a record is found for that identifier,
 1127  
      * the validation checks if the key date can be shifted to the new
 1128  
      * values. If a record cannot be found for the identifier, it is
 1129  
      * assumed that the record does not exist and as such, the checks
 1130  
      * performed will be much shallower, typically mimicking those
 1131  
      * performed by setting the validationType to the current
 1132  
      * object. This is a slightly different pattern from the standard
 1133  
      * validation as the caller provides the identifier in the create
 1134  
      * statement instead of the server assigning an identifier.
 1135  
      *
 1136  
      * @param validationType Identifier of the extent of validation
 1137  
      * @param keyDateInfo the key date information to be tested.
 1138  
      * @param context Context information containing the principalId
 1139  
      *                and locale information about the caller of service
 1140  
      *                operation
 1141  
      * @return the results from performing the validation
 1142  
      * @throws DoesNotExistException validationTypeKey not found
 1143  
      * @throws InvalidParameterException invalid validationTypeKey, keyDateInfo
 1144  
      * @throws MissingParameterException missing validationTypeKey, keyDateInfo
 1145  
      * @throws OperationFailedException unable to complete request
 1146  
      */
 1147  
     public List<ValidationResultInfo> validateKeyDate(@WebParam(name = "validationType") String validationType, @WebParam(name = "keyDateInfo") KeyDateInfo keyDateInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 1148  
 
 1149  
     /** 
 1150  
      * Creates a new Key Date for a Term.
 1151  
      *
 1152  
      * @param termKey a key for a Term to which this date is mapped
 1153  
      * @param keyDateKey the key of the Key Date to be created
 1154  
      * @param keyDateInfo Details of the Key Date to be created
 1155  
      * @param context Context information containing the principalId
 1156  
      *                and locale information about the caller of service
 1157  
      *                operation
 1158  
      * @return the details of the Key Date just created
 1159  
      * @throws AlreadyExistsException the Key Date being created already exists
 1160  
      * @throws DataValidationErrorException One or more values invalid for this operation
 1161  
      * @throws InvalidParameterException One or more parameters invalid
 1162  
      * @throws MissingParameterException One or more parameters missing
 1163  
      * @throws OperationFailedException unable to complete request
 1164  
      * @throws PermissionDeniedException authorization failure
 1165  
      */
 1166  
     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;
 1167  
 
 1168  
     /** 
 1169  
      * Updates an existing Key Date.
 1170  
      *
 1171  
      * @param keyDateKey Key of Key Date to be updated
 1172  
      * @param keyDateInfo Details of updates to the key date
 1173  
      *        being updated
 1174  
      * @param context Context information containing the principalId
 1175  
      *                and locale information about the caller of service
 1176  
      *                operation
 1177  
      * @return the details of key date just updated
 1178  
      * @throws DataValidationErrorException One or more values invalid for this 
 1179  
      *         operation
 1180  
      * @throws DoesNotExistException the key date does not exist
 1181  
      * @throws InvalidParameterException One or more parameters invalid
 1182  
      * @throws MissingParameterException One or more parameters missing
 1183  
      * @throws OperationFailedException unable to complete request
 1184  
      * @throws PermissionDeniedException authorization failure
 1185  
      * @throws VersionMismatchException The action was attempted on an out of date 
 1186  
      *         version.
 1187  
      */
 1188  
     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;
 1189  
 
 1190  
     /** 
 1191  
      * Deletes an existing KeyDate.
 1192  
      *
 1193  
      * @param keyDateKey the key of the Key Date to
 1194  
      *        be deleted
 1195  
      * @param context Context information containing the principalId
 1196  
      *                and locale information about the caller of service
 1197  
      *                operation
 1198  
      * @return status of the operation (success, failed)
 1199  
      * @throws DoesNotExistException the KeyDate does not exist
 1200  
      * @throws InvalidParameterException One or more parameters invalid
 1201  
      * @throws MissingParameterException One or more parameters missing
 1202  
      * @throws OperationFailedException unable to complete request
 1203  
      * @throws PermissionDeniedException authorization failure
 1204  
      */
 1205  
     public StatusInfo deleteKeyDate(@WebParam(name = "keyDateKey") String keyDateKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1206  
 
 1207  
     /**
 1208  
      * This method returns the TypeInfo for a given holiday type key.
 1209  
      *
 1210  
      * @param holidayTypeKey Key of the type
 1211  
      * @param context Context information containing the principalId
 1212  
      *        and locale information about the caller of service
 1213  
      *        operation
 1214  
      * @return Information about the Type
 1215  
      * @throws DoesNotExistException holidayTypeKey not found
 1216  
      * @throws InvalidParameterException invalid holidayTypeKey
 1217  
      * @throws MissingParameterException missing holidayTypeKey
 1218  
      * @throws OperationFailedException unable to complete request
 1219  
      */    
 1220  
     public TypeInfo getHolidayType(@WebParam(name = "holidayTypeKey") String holidayTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 1221  
 
 1222  
     /**
 1223  
      * This method returns the valid holiday types for the given
 1224  
      * campus calendar type.
 1225  
      *
 1226  
      * @param context Context information containing the principalId
 1227  
      *        and locale information about the caller of service
 1228  
      *        operation
 1229  
      * @param campusCalendatTypeKey
 1230  
      * @return a list of valid holiday Types
 1231  
      * @throws DoesNotExistException campusCalendarTypeKey not found
 1232  
      * @throws InvalidParameterException invalid key or context
 1233  
      * @throws MissingParameterException missing key or context
 1234  
      * @throws OperationFailedException unable to complete request
 1235  
      */
 1236  
     public List<TypeInfo> getHolidayTypesForCampusCalendarType(@WebParam(name = "campusCalendarTypeKey") String campusCalendarTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 1237  
 
 1238  
     /** 
 1239  
      * Retrieves a list of holidays for an academic calendar sorted by
 1240  
      * date.
 1241  
      *
 1242  
      * @param academicCalendarKey
 1243  
      * @param context Context information containing the principalId
 1244  
      *                and locale information about the caller of service
 1245  
      *                operation
 1246  
      * @return a list of holidays
 1247  
      * @throws DoesNotExistException an academicCalendarKey not found
 1248  
      * @throws InvalidParameterException invalid academicCalendarKey
 1249  
      * @throws MissingParameterException missing academicCalendarKey
 1250  
      * @throws OperationFailedException unable to complete request
 1251  
      * @throws PermissionDeniedException authorization failure
 1252  
      */
 1253  
     public List<HolidayInfo> getHolidaysForAcademicCalendar(@WebParam(name = "academicCalendarKey") String academicCalendarKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1254  
 
 1255  
     /** 
 1256  
      * Validates a holiday. Depending on the value of validationType,
 1257  
      * this validation could be limited to tests on just the current
 1258  
      * object and its directly contained subobjects or expanded to
 1259  
      * perform all tests related to this object. If an identifier is
 1260  
      * present for the holiday and a record is found for that identifier,
 1261  
      * the validation checks if the holiday can be shifted to the new
 1262  
      * values. If a record cannot be found for the identifier, it is
 1263  
      * assumed that the record does not exist and as such, the checks
 1264  
      * performed will be much shallower, typically mimicking those
 1265  
      * performed by setting the validationType to the current
 1266  
      * object. This is a slightly different pattern from the standard
 1267  
      * validation as the caller provides the identifier in the create
 1268  
      * statement instead of the server assigning an identifier.
 1269  
      *
 1270  
      * @param validationType Identifier of the extent of validation
 1271  
      * @param holidayInfo the holiday information to be tested.
 1272  
      * @param context Context information containing the principalId
 1273  
      *                and locale information about the caller of service
 1274  
      *                operation
 1275  
      * @return the results from performing the validation
 1276  
      * @throws DoesNotExistException validationTypeKey not found
 1277  
      * @throws InvalidParameterException invalid validationTypeKey, holidayInfo
 1278  
      * @throws MissingParameterException missing validationTypeKey, holidayInfo
 1279  
      * @throws OperationFailedException unable to complete request
 1280  
      */
 1281  
     public List<ValidationResultInfo> validateHoliday(@WebParam(name = "validationType") String validationType, @WebParam(name = "holidayInfo") HolidayInfo holidayInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 1282  
 
 1283  
     /** 
 1284  
      * Creates a new Holiday for a Campus Calendar.
 1285  
      *
 1286  
      * @param campusCalendarKey a key for a Term to which this holiday is mapped
 1287  
      * @param holidayKey the key of the Holiday to be created
 1288  
      * @param holidayInfo Details of the Holiday to be created
 1289  
      * @param context Context information containing the principalId
 1290  
      *                and locale information about the caller of service
 1291  
      *                operation
 1292  
      * @return the details of the Holiday just created
 1293  
      * @throws AlreadyExistsException the Holiday being created already exists
 1294  
      * @throws DataValidationErrorException One or more values invalid for this operation
 1295  
      * @throws InvalidParameterException One or more parameters invalid
 1296  
      * @throws MissingParameterException One or more parameters missing
 1297  
      * @throws OperationFailedException unable to complete request
 1298  
      * @throws PermissionDeniedException authorization failure
 1299  
      */
 1300  
     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;
 1301  
 
 1302  
     /** 
 1303  
      * Updates an existing Holiday.
 1304  
      *
 1305  
      * @param holidayKey Key of Holiday to be updated
 1306  
      * @param holidayInfo Details of updates to the holiday
 1307  
      *        being updated
 1308  
      * @param context Context information containing the principalId
 1309  
      *                and locale information about the caller of service
 1310  
      *                operation
 1311  
      * @return the details of holiday just updated
 1312  
      * @throws DataValidationErrorException One or more values invalid for this 
 1313  
      *         operation
 1314  
      * @throws DoesNotExistException the holiday does not exist
 1315  
      * @throws InvalidParameterException One or more parameters invalid
 1316  
      * @throws MissingParameterException One or more parameters missing
 1317  
      * @throws OperationFailedException unable to complete request
 1318  
      * @throws PermissionDeniedException authorization failure
 1319  
      * @throws VersionMismatchException The action was attempted on an out of date 
 1320  
      *         version.
 1321  
      */
 1322  
     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;
 1323  
 
 1324  
     /** 
 1325  
      * Deletes an existing Holiday.
 1326  
      *
 1327  
      * @param holidayKey the key of the Holiday to
 1328  
      *        be deleted
 1329  
      * @param context Context information containing the principalId
 1330  
      *                and locale information about the caller of service
 1331  
      *                operation
 1332  
      * @return status of the operation (success, failed)
 1333  
      * @throws DoesNotExistException the Holiday does not exist
 1334  
      * @throws InvalidParameterException One or more parameters invalid
 1335  
      * @throws MissingParameterException One or more parameters missing
 1336  
      * @throws OperationFailedException unable to complete request
 1337  
      * @throws PermissionDeniedException authorization failure
 1338  
      */
 1339  
     public StatusInfo deleteHoliday(@WebParam(name = "holidayKey") String holidayKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1340  
 
 1341  
     /** 
 1342  
      * Gets the registration key date group for a term.
 1343  
      *
 1344  
      * @param termKey unique key of a term
 1345  
      * @param context Context information containing the principalId
 1346  
      *                and locale information about the caller of service
 1347  
      *                operation
 1348  
      * @return the registration date group
 1349  
      * @throws DoesNotExistException termKey not found
 1350  
      * @throws InvalidParameterException invalid termKey
 1351  
      * @throws MissingParameterException missing termKey
 1352  
      * @throws OperationFailedException unable to complete request
 1353  
      * @throws PermissionDeniedException authorization failure
 1354  
      */
 1355  
     public RegistrationDateGroupInfo getRegistrationDateGroup(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1356  
 
 1357  
     /** 
 1358  
      * Validates an registration date grpup. Depending on the value of
 1359  
      * validationType, this validation could be limited to tests on
 1360  
      * just the current object and its directly contained subobjects
 1361  
      * or expanded to perform all tests related to this object. If an
 1362  
      * identifier is present for the registration date group and a
 1363  
      * record is found for that identifier, the validation checks if
 1364  
      * the registration date group can be shifted to the new values. If
 1365  
      * a record cannot be found for the identifier, it is assumed that
 1366  
      * the record does not exist and as such, the checks performed
 1367  
      * will be much shallower, typically mimicking those performed by
 1368  
      * setting the validationType to the current object. This is a
 1369  
      * slightly different pattern from the standard validation as the
 1370  
      * caller provides the identifier in the create statement instead
 1371  
      * of the server assigning an identifier.
 1372  
      *
 1373  
      * @param validationType Identifier of the extent of validation
 1374  
      * @param registrationDateGroupInfo the registration date group to be tested.
 1375  
      * @param context Context information containing the principalId
 1376  
      *                and locale information about the caller of service
 1377  
      *                operation
 1378  
      * @return the results from performing the validation
 1379  
      * @throws DoesNotExistException validationTypeKey not found
 1380  
      * @throws InvalidParameterException invalid validationTypeKey, academicCalendarInfo
 1381  
      * @throws MissingParameterException missing validationTypeKey, academicCalendarInfo
 1382  
      * @throws OperationFailedException unable to complete request
 1383  
      */
 1384  
     public List<ValidationResultInfo> validateRegistrationDateGroup(@WebParam(name = "validationType") String validationType, @WebParam(name = "registrationDateGroupInfo") RegistrationDateGroupInfo registrationDateGroupInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 1385  
 
 1386  
     /** 
 1387  
      * Updates a the registration key date group for a term. The
 1388  
      * date group is a set of hardened well-known dates. 
 1389  
      *
 1390  
      * Updating an registration date group is a short cut to creating or
 1391  
      * updating the corresponding key dates and relating them to the
 1392  
      * given term. An RegistrationDateGroupInfo is available for all
 1393  
      * Terms by default and does not explicitly need to be created.
 1394  
      *
 1395  
      * If the KeyDates have not been created for the dates in
 1396  
      * the group, an RegistrationDateGroup is still returned from
 1397  
      * getRegistrationDateGroup() but with empty or default dates.
 1398  
      *
 1399  
      * Setting date values in an RegistrationDateGroup through this
 1400  
      * update method either creates the KeyDates with the appropriate
 1401  
      * Types that map to the fields in the date group for the given
 1402  
      * Term or updates them if they already exist.
 1403  
      *
 1404  
      * @param termKey key of Term
 1405  
      * @param registrationDateGroup the registration date group
 1406  
      * @param context Context information containing the principalId
 1407  
      *                and locale information about the caller of service
 1408  
      *                operation
 1409  
      * @return the details of enrollmemnt date group just updated
 1410  
      * @throws DataValidationErrorException One or more values invalid for this 
 1411  
      *         operation
 1412  
      * @throws DoesNotExistException the term does not exist
 1413  
      * @throws InvalidParameterException One or more parameters invalid
 1414  
      * @throws MissingParameterException One or more parameters missing
 1415  
      * @throws OperationFailedException unable to complete request
 1416  
      * @throws PermissionDeniedException authorization failure
 1417  
      * @throws VersionMismatchException The action was attempted on an out of date 
 1418  
      *         version.
 1419  
      */
 1420  
     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;
 1421  
 
 1422  
     /** 
 1423  
      * Calculates the number of instructional days for a Term. The
 1424  
      * number of instructional days is the number of class days in a
 1425  
      * Term minus the non-instructional holidays on the related campus
 1426  
      * calendar.
 1427  
      *
 1428  
      * @param termKey unique key of a term
 1429  
      * @param context Context information containing the principalId
 1430  
      *                and locale information about the caller of service
 1431  
      *                operation
 1432  
      * @return the number of instructional days
 1433  
      * @throws DoesNotExistException termKey not found
 1434  
      * @throws InvalidParameterException invalid termKey
 1435  
      * @throws MissingParameterException missing termKey
 1436  
      * @throws OperationFailedException unable to complete request
 1437  
      * @throws PermissionDeniedException authorization failure
 1438  
      */
 1439  
     public Integer getInstructionalDaysForTerm(@WebParam(name = "termKey") String termKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 1440  
 }