View Javadoc

1   /**
2    * Copyright 2010 The Kuali Foundation Licensed under the Educational Community
3    * License, Version 2.0 (the "License"); you may not use this file except in
4    * compliance with the License. You may obtain a copy of the License at
5    * http://www.osedu.org/licenses/ECL-2.0 Unless required by applicable law or
6    * agreed to in writing, software distributed under the License is distributed
7    * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
8    * express or implied. See the License for the specific language governing
9    * permissions and limitations under the License.
10   */
11  
12  package org.kuali.student.enrollment.acal.service;
13  
14  import java.util.Date;
15  import java.util.List;
16  
17  import javax.jws.WebParam;
18  import javax.jws.WebService;
19  import javax.jws.soap.SOAPBinding;
20  
21  import org.kuali.rice.core.api.criteria.QueryByCriteria;
22  
23  import org.kuali.student.r2.common.util.constants.AcademicCalendarServiceConstants;
24  import org.kuali.student.enrollment.acal.dto.AcademicCalendarInfo;
25  import org.kuali.student.enrollment.acal.dto.HolidayCalendarInfo;
26  import org.kuali.student.enrollment.acal.dto.AcalEventInfo;
27  import org.kuali.student.enrollment.acal.dto.HolidayInfo;
28  import org.kuali.student.enrollment.acal.dto.KeyDateInfo;
29  import org.kuali.student.enrollment.acal.dto.TermInfo;
30  
31  
32  import org.kuali.student.r2.common.dto.ContextInfo;
33  import org.kuali.student.r2.common.dto.StatusInfo;
34  import org.kuali.student.r2.common.dto.ValidationResultInfo;
35  
36  import org.kuali.student.r2.common.exceptions.AlreadyExistsException;
37  import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
38  import org.kuali.student.r2.common.exceptions.DoesNotExistException;
39  import org.kuali.student.r2.common.exceptions.InvalidParameterException;
40  import org.kuali.student.r2.common.exceptions.MissingParameterException;
41  import org.kuali.student.r2.common.exceptions.OperationFailedException;
42  import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
43  import org.kuali.student.r2.common.exceptions.ReadOnlyException;
44  import org.kuali.student.r2.common.exceptions.VersionMismatchException;
45  import org.kuali.student.r2.core.class1.state.dto.StateInfo;
46  import org.kuali.student.r2.core.class1.type.dto.TypeInfo;
47  
48  /**
49   * This service manages Academic Calendars. There are three kinds of calendars
50   * in this service.
51   * <p/>
52   * 1. HolidayCalendar:  a HolidayCalendar relates to a Campus and is intended to
53   * define all the Holiday dates and other non-instructional days on a designated
54   * campus.
55   * <p/>
56   * 2. AcademicCalendar: an AcademicCalendar is a calendar of Terms. The Academic
57   * Calendar may have one or more HolidayCalendars. This distinction is to allow
58   * multiple AcademicCalendars to exist on a Campus without having to manage
59   * multiple sets of Holidays. An AcademicCalendar may be referenced from a
60   * ProgramOffering.
61   * <p/>
62   * An AcademicCalendar may have its own milestones called AcalEvents.
63   * <p/>
64   * 3. Term:             A Term has KeyDates and may have Terms nested within.
65   * <p/>
66   * For example, an AcademicCalendar for the undergraduate program in a given
67   * year may have a HolidayCalendar for the holidays of that year, Fall, Spring,
68   * and Summer Terms, the Fall and Spring mini-mesters, all with their own
69   * managed dates.
70   * <p/>
71   * Not all of the relations among the entities are maintained within the
72   * entities. To maximize flexibility and to easily reference calendars and terms
73   * externally, these mappings are often implied by the service operations.
74   * <p/>
75   * Each of the calendaring entities have their own milestone structures.
76   * <p/>
77   * 1. Holiday:   A milestone used with HolidayCalendars (e.g. Labor Day). 2.
78   * AcalEvent: A milestone used with AcademicCalendars (e.g. Commencement). 3.
79   * KeyDate:   A milestone used with Terms (e.g. Registration Period).
80   * <p/>
81   * Version: 1.0 (Dev)
82   *
83   * @author tom
84   * @since Sun Apr 10 14:22:34 EDT 2011
85   */
86  
87  @WebService(name = "AcademicCalendarService", serviceName = "AcademicCalendarService", portName = "AcademicCalendarService", targetNamespace = AcademicCalendarServiceConstants.NAMESPACE)
88  @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
89  
90  public interface AcademicCalendarService {
91  
92      /**
93       * Retrieves an AcademicCalendar Type by Type key.
94       *
95       * @param academicCalendarTypeKey the key of an AcademicCalendar Type
96       * @param contextInfo             information containing the principalId and
97       *                                locale information about the caller of
98       *                                service operation
99       * @return the type requested
100      * @throws DoesNotExistException     academicCalendarTypeKey is not found
101      * @throws InvalidParameterException contextInfo is not valid
102      * @throws MissingParameterException academicCalendarTypeKey or contextInfo
103      *                                   is missing or null
104      * @throws OperationFailedException  unable to complete request
105      * @throws PermissionDeniedException an authorization failure occurred
106      */
107     public TypeInfo getAcademicCalendarType(@WebParam(name = "academicCalendarTypeKey") String academicCalendarTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
108 
109     /**
110      * Gets the valid AcademicCalendar types.
111      *
112      * @param contextInfo information containing the principalId and locale
113      *                    information about the caller of service operation
114      * @return a list of valid AcademicCalendar Types
115      * @throws InvalidParameterException contextInfo is not value
116      * @throws MissingParameterException contextInfo is missing or null
117      * @throws OperationFailedException  unable to complete request
118      * @throws PermissionDeniedException an authorization failure occurred
119      */
120     public List<TypeInfo> getAcademicCalendarTypes(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
121 
122     /**
123      * Gets an AcademicCalendar State by key.
124      *
125      * @param academicCalendarStateKey a key for an AcademicCalendar State
126      * @param contextInfo              information containing the principalId
127      *                                 and locale information about the caller
128      *                                 of service operation
129      * @return the AcademicCalendar State requested
130      * @throws DoesNotExistException     academicCalendarStateKey is not found
131      * @throws InvalidParameterException contextInfo is invalid
132      * @throws MissingParameterException academicCalendarStateKey or contextInfo
133      *                                   is missing or null
134      * @throws OperationFailedException  unable to complete request
135      * @throws PermissionDeniedException an authorization failure occurred
136      */
137     public StateInfo getAcademicCalendarState(@WebParam(name = "academicCalendarStateKey") String academicCalendarStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
138 
139     /**
140      * Gets the valid AcademicCalendar States.
141      *
142      * @param contextInfo information containing the principalId and locale
143      *                    information about the caller of service operation
144      * @return a list of valid AcademicCalendar States
145      * @throws InvalidParameterException contextInfo is not valid
146      * @throws MissingParameterException contextInfo is missing or null
147      * @throws OperationFailedException  unable to complete request
148      * @throws PermissionDeniedException an authorization failure occurred
149      */
150     public List<StateInfo> getAcademicCalendarStates(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
151 
152     /**
153      * Retrieves a single AcademicCalendar by an AcademicCalendar Id.
154      *
155      * @param academicCalendarId the identifier for the AcademicCalendar to be
156      *                           retrieved
157      * @param contextInfo        information containing the principalId and
158      *                           locale information about the caller of service
159      *                           operation
160      * @return the AcademicCalendar requested
161      * @throws DoesNotExistException     academicCalendarIs is not found
162      * @throws InvalidParameterException contextInfo isnot valid
163      * @throws MissingParameterException academicCalendarId or contextInfo is
164      *                                   missing or null
165      * @throws OperationFailedException  unable to complete request
166      * @throws PermissionDeniedException an authorization failure occurred
167      */
168     public AcademicCalendarInfo getAcademicCalendar(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
169 
170     /**
171      * Retrieves a list AcademicCalendars from a list of AcademicCalendar Ids.
172      * The returned list may be in any order and if duplicate Ids are supplied,
173      * a unique set may or may not be returned.
174      *
175      * @param academicCalendarIds list of AcademicCalendar Ids
176      * @param contextInfo         information containing the principalId and
177      *                            locale information about the caller of service
178      *                            operation
179      * @return a list of AcademicCalendars
180      * @throws DoesNotExistException     an academicCalendarId in list was not
181      *                                   found
182      * @throws InvalidParameterException contextInfo is not valid
183      * @throws MissingParameterException academicCalendarIds, an Id in
184      *                                   academicCalendarIds, or contextInfo is
185      *                                   missing or null
186      * @throws OperationFailedException  unable to complete request
187      * @throws PermissionDeniedException an authorization failure occurred
188      */
189     public List<AcademicCalendarInfo> getAcademicCalendarsByIds(@WebParam(name = "academicCalendarIds") List<String> academicCalendarIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
190 
191     /**
192      * Retrieves a list of AcademicCalendar Ids by Type.
193      *
194      * @param academicCalendarTypeKey an identifier for an AcademicCalendar
195      *                                Type
196      * @param contextInfo             information containing the principalId and
197      *                                locale information about the caller of
198      *                                service operation
199      * @return a list of AcademicCalendars matching academicCalendarTypeKey or
200      *         an empty list if none found
201      * @throws InvalidParameterException contextInfo is not valid
202      * @throws MissingParameterException academicCalendarTypeKey or contextInfo
203      *                                   is missing or null
204      * @throws OperationFailedException  unable to complete request
205      * @throws PermissionDeniedException an authorization failure occurred
206      */
207     public List<String> getAcademicCalendarIdsByType(@WebParam(name = "academicCalendarTypeKey") String academicCalendarTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
208 
209     /**
210      * Retrieves a list of AcademicCalendars that start in the given year.
211      *
212      * @param year        calendar year during which the academic calendar
213      *                    starts
214      * @param contextInfo information containing the principalId and locale
215      *                    information about the caller of service operation
216      * @return a list of AcademicCalendars starting in the given year
217      * @throws InvalidParameterException contextInfo i snot valid
218      * @throws MissingParameterException year or context is missing or null
219      * @throws OperationFailedException  unable to complete request
220      * @throws PermissionDeniedException an authorization failure occurred
221      */
222     public List<AcademicCalendarInfo> getAcademicCalendarsByStartYear(@WebParam(name = "year") Integer year, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
223 
224 
225     /**
226      * Gets the list of academic calendars that use this term.
227      *
228      * @param termId  term identifier
229      * @param contextInfo information containing the principalId and locale
230      *                    information about the caller of service operation
231      * @return a list of AcademicCalendars using this term
232      * @throws DoesNotExistException termId is not found
233      * @throws InvalidParameterException contextInfo is not valid
234      * @throws MissingParameterException termId or contextInfo is missing or null
235      * @throws OperationFailedException unable to complete request
236      * @throws PermissionDeniedException an authorization failure occurred
237      */
238     public List<AcademicCalendarInfo> getAcademicCalendarsForTerm(@WebParam(name = "termId") String termId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
239 
240     /**
241      * Searches for AcademicCalendars that meet the given search criteria.
242      *
243      * @param criteria    the search criteria
244      * @param contextInfo information containing the principalId and locale
245      *                    information about the caller of service operation
246      * @return a list of AcademicCalendar identifiers matching the criteria
247      * @throws InvalidParameterException criteria or contextInfo is not valid
248      * @throws MissingParameterException criteria or contextInfo is missing or
249      *                                   null
250      * @throws OperationFailedException  unable to complete request
251      * @throws PermissionDeniedException an authorization failure occurred
252      */
253     public List<String> searchForAcademicCalendarIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
254 
255     /**
256      * Searches for AcademicCalendars that meet the given search criteria.
257      *
258      * @param criteria    the search criteria
259      * @param contextInfo information containing the principalId and locale
260      *                    information about the caller of service operation
261      * @return a list of AcademicCalendars matching the criteria
262      * @throws InvalidParameterException criteria or contextInfo is not valid
263      * @throws MissingParameterException criteria or contextInfo is missing or
264      *                                   null
265      * @throws OperationFailedException  unable to complete request
266      * @throws PermissionDeniedException an authorization failure occurred
267      */
268     public List<AcademicCalendarInfo> searchForAcademicCalendars(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
269 
270     /**
271      * Validates an AcademicCalendar. Depending on the value of validationType,
272      * this validation could be limited to tests on just the current
273      * AcademicCalendar and its directly contained subobjects or expanded to
274      * perform all tests related to this AcademicCalendar. If an identifier is
275      * present for the AcademicCalendar (and/or one of its contained
276      * sub-objects) and a record is found for that identifier, the validation
277      * checks if the AcademicCalendar can be updated to the new values. If an
278      * identifier is not present or a record does not exist, the validation
279      * checks if the AcademicCalendar with the given data can be created.
280      *
281      * @param validationTypeKey       the identifier for the validation Type
282      * @param academicCalendarTypeKey the identifier for the AcademicCalendar
283      *                                Type to be validated
284      * @param academicCalendarInfo    the AcademicCalendar to be validated
285      * @param contextInfo             information containing the principalId and
286      *                                locale information about the caller of
287      *                                service operation
288      * @return a list of validation results or an empty list if validation
289      *         succeeded
290      * @throws DoesNotExistException     validationTypeKey or academicCalendarTypeKey
291      *                                   is not found
292      * @throws InvalidParameterException academicCalendarInfo or contextInfo is
293      *                                   not valid
294      * @throws MissingParameterException validationTypeKey, academicCalendarTypeKey,
295      *                                   academicCalendarInfo, or contextInfo is
296      *                                   missing or null
297      * @throws OperationFailedException  unable to complete request
298      * @throws PermissionDeniedException an authorization failure occurred
299      */
300     public List<ValidationResultInfo> validateAcademicCalendar(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "academicCalendarTypeKey") String academicCalendarTypeKey, @WebParam(name = "academicCalendarInfo") AcademicCalendarInfo academicCalendarInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
301 
302     /**
303      * Creates a new AcademicCalendar. The AcademicCalendar Id, Type, and Meta
304      * information may not be set in the supplied data object.
305      *
306      * @param academicCalendarTypeKey the identifier for the Type of
307      *                                AcademicCalendar to be created
308      * @param academicCalendarInfo    the data with which to create the
309      *                                AcademicCalendar
310      * @param contextInfo             information containing the principalId and
311      *                                locale information about the caller of
312      *                                service operation
313      * @return the new AcademicCalendar
314      * @throws DataValidationErrorException supplied data is invalid
315      * @throws DoesNotExistException        academicCalendarTypeKey does not
316      *                                      exist or is not supported
317      * @throws InvalidParameterException    academicCalendarInfo or contextInfo
318      *                                      is not valid
319      * @throws MissingParameterException    academicCalendarTypeKey, academicCalendarInfo,
320      *                                      or contextInfo is missing or null
321      * @throws OperationFailedException     unable to complete request
322      * @throws PermissionDeniedException    an authorization failure occurred
323      * @throws ReadOnlyException            an attempt at supplying information
324      *                                      designated as read only
325      */
326     public AcademicCalendarInfo createAcademicCalendar(@WebParam(name = "academicCalendarTypeKey") String academicCalendarTypeKey, @WebParam(name = "academicCalendarInfo") AcademicCalendarInfo academicCalendarInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
327 
328 
329     /**
330      * Updates an existing AcademicCalendar. The AcademicCalendar Id, Type, and
331      * Meta information may not be changed.
332      *
333      * @param academicCalendarId   the identifier for the AcademicCalendar to be
334      *                             updated
335      * @param academicCalendarInfo the new data for the AcademicCalendar
336      * @param contextInfo          information containing the principalId and
337      *                             locale information about the caller of
338      *                             service operation
339      * @return the updated AcademicCalendar
340      * @throws DataValidationErrorException supplied data is invalid
341      * @throws DoesNotExistException AcademicCalendarId is not found
342      * @throws InvalidParameterException academicCalendarInfo or
343      *         contextInfo is not valid
344      * @throws MissingParameterException academicCalendarId,
345      *         academicCalendarInfo, or contextInfo is missing or null
346      * @throws OperationFailedException unable to complete request
347      * @throws PermissionDeniedException an authorization failure
348      *         occurred
349      * @throws ReadOnlyException an attempt at changing information
350      *         deisgnated as read only
351      * @throws VersionMismatchException an optimistic locking failure
352      *         or the action was attempted on an out of date version
353      */
354     public AcademicCalendarInfo updateAcademicCalendar(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "academicCalendarInfo") AcademicCalendarInfo academicCalendarInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
355 
356     /**
357      * Deletes an existing AcademicCalendar.
358      *
359      * @param academicCalendarId the identifier for the AcademicCalendar to be
360      *                           deleted
361      * @param contextInfo        information containing the principalId and
362      *                           locale information about the caller of service
363      *                           operation
364      * @return the status of the operation. This must always be true.
365      * @throws DoesNotExistException     AcademicCalendarId is not found
366      * @throws InvalidParameterException contextInfo is not valid
367      * @throws MissingParameterException academicCalendarId or contextInfo is
368      *                                   missing or null
369      * @throws OperationFailedException  unable to complete request
370      * @throws PermissionDeniedException an authorization failure occurred
371      */
372     public StatusInfo deleteAcademicCalendar(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
373 
374     /**
375      * Copy an AcademicCalendar. The associated Terms and key dates are also
376      * copied and related to this new calendar. This copy operation allows for a
377      * AcademicCalendar to be created from an existing AcademicCalendar in which
378      * the dates of the Terms and Key Dates will be updated.
379      * <p/>
380      * This method may perform date transformations on the Terms and key dates
381      * to make them applicable under the new academic calendar.
382      *
383      * @param academicCalendarId the identifier for the Academic Calendar to be
384      *                           copied
385      * @param startDate          the start of the new calendar
386      * @param endDate            the end of the new calendar
387      * @param contextInfo        information containing the principalId and
388      *                           locale information about the caller of service
389      *                           operation
390      * @return new AcademicCalendarInfo created from the copy
391      * @throws DoesNotExistException     academicCalendarId is not found
392      * @throws InvalidParameterException contextInfo is not valid
393      * @throws MissingParameterException academicCalendarId, startYear, endYear,
394      *                                   or contextInfo is missing or null
395      * @throws OperationFailedException  unable to complete request
396      * @throws PermissionDeniedException an authorization failure occurred
397      */
398     public AcademicCalendarInfo copyAcademicCalendar(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "startDate") Date startDate, @WebParam(name = "endDate") Date endDate, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
399 
400     /**
401      * Generates calendaring data for the Terms and key dates in an Academic
402      * Calendar. The format of the data is specified by the
403      * calendarDataFormatType. An example of such a type is VCALENDAR.
404      * <p/>
405      * NOTE: this might be better placed in the Calendar (interface) Service.
406      *
407      * @param academicCalendarId        the key of the AcademicCalendar to be
408      *                                  retrieved
409      * @param calendarDataFormatTypeKey the type of format
410      * @param context                   information containing the principalId
411      *                                  and locale information about the caller
412      *                                  of service operation
413      * @return calendar data
414      * @throws DoesNotExistException     the AcademicCalendar or format type
415      *                                   does not exist
416      * @throws InvalidParameterException One or more parameters invalid
417      * @throws MissingParameterException One or more parameters missing
418      * @throws OperationFailedException  unable to complete request
419      * @throws PermissionDeniedException authorization failure
420      */
421     public String getAcademicCalendarData(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "calendarDataFormatTypeKey") String calendarDataFormatTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
422 
423     /**
424      * Rerieves a HolidayCalendar Type by Type key.
425      *
426      * @param holidayCalendarTypeKey the key of a HolidayCalendar Type
427      * @param contextInfo            information containing the principalId and
428      *                               locale information about the caller of
429      *                               service operation
430      * @return the type requested
431      * @throws DoesNotExistException     holidayCalendarTypeKey is not found
432      * @throws InvalidParameterException contextInfo is not valid
433      * @throws MissingParameterException holidayCalendarTypeKey or contextInfo
434      *                                   is missing or null
435      * @throws OperationFailedException  unable to complete request
436      * @throws PermissionDeniedException an authorization failure occurred
437      */
438     public TypeInfo getHolidayCalendarType(@WebParam(name = "holidayCalendarTypeKey") String holidayCalendarTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
439 
440     /**
441      * Gets the valid HolidayCalendar types.
442      *
443      * @param contextInfo information containing the principalId and locale
444      *                    information about the caller of service operation
445      * @return a list of valid HolidayCalendar Types
446      * @throws InvalidParameterException contextInfo is not value
447      * @throws MissingParameterException contextInfo is missing or null
448      * @throws OperationFailedException  unable to complete request
449      * @throws PermissionDeniedException an authorization failure occurred
450      */
451     public List<TypeInfo> getHolidayCalendarTypes(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
452 
453     /**
454      * Gets a HolidayCalendar State by key.
455      *
456      * @param holidayCalendarStateKey a key for a HolidayCalendar State
457      * @param contextInfo             information containing the principalId and
458      *                                locale information about the caller of
459      *                                service operation
460      * @return the HolidayCalendar State requested
461      * @throws DoesNotExistException     holidayCalendarStateKey is not found
462      * @throws InvalidParameterException contextInfo is invalid
463      * @throws MissingParameterException holidayCalendarStateKey or contextInfo
464      *                                   is missing or null
465      * @throws OperationFailedException  unable to complete request
466      * @throws PermissionDeniedException an authorization failure occurred
467      */
468     public StateInfo getHolidayCalendarState(@WebParam(name = "holidayCalendarStateKey") String holidayCalendarStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
469 
470     /**
471      * Gets the valid HolidayCalendar States.
472      *
473      * @param contextInfo information containing the principalId and locale
474      *                    information about the caller of service operation
475      * @return a list of valid HolidayCalendar States
476      * @throws InvalidParameterException contextInfo is not valid
477      * @throws MissingParameterException contextInfo is missing or null
478      * @throws OperationFailedException  unable to complete request
479      * @throws PermissionDeniedException an authorization failure occurred
480      */
481     public List<StateInfo> getHolidayCalendarStates(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
482 
483     /**
484      * Retrieves a single HolidayCalendar by a HolidayCalendar Id.
485      *
486      * @param holidayCalendarId the identifier for the HolidayCalendar to be
487      *                          retrieved
488      * @param contextInfo       information containing the principalId and
489      *                          locale information about the caller of service
490      *                          operation
491      * @return the HolidayCalendar requested
492      * @throws DoesNotExistException     holidayCalendarIs is not found
493      * @throws InvalidParameterException contextInfo is not valid
494      * @throws MissingParameterException holidayCalendarId or contextInfo is
495      *                                   missing or null
496      * @throws OperationFailedException  unable to complete request
497      * @throws PermissionDeniedException an authorization failure occurred
498      */
499     public HolidayCalendarInfo getHolidayCalendar(@WebParam(name = "holidayCalendarId") String holidayCalendarId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
500 
501     /**
502      * Retrieves a list HolidayCalendars from a list of HolidayCalendar Ids. The
503      * returned list may be in any order and if duplicate Ids are supplied, a
504      * unique set may or may not be returned.
505      *
506      * @param holidayCalendarIds list of HolidayCalendar Ids
507      * @param contextInfo        information containing the principalId and
508      *                           locale information about the caller of service
509      *                           operation
510      * @return a list of HolidayCalendars
511      * @throws DoesNotExistException     a holidayCalendarId in list was not
512      *                                   found
513      * @throws InvalidParameterException contextInfo is not valid
514      * @throws MissingParameterException holidayCalendarIds, an Id in
515      *                                   holidayCalendarIds, or contextInfo is
516      *                                   missing or null
517      * @throws OperationFailedException  unable to complete request
518      * @throws PermissionDeniedException an authorization failure occurred
519      */
520     public List<HolidayCalendarInfo> getHolidayCalendarsByIds(@WebParam(name = "holidayCalendarIds") List<String> holidayCalendarIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
521 
522     /**
523      * Retrieves a list of HolidayCalendar Ids by Type.
524      *
525      * @param holidayCalendarTypeKey an identifier for an HolidayCalendar Type
526      * @param contextInfo            information containing the principalId and
527      *                               locale information about the caller of
528      *                               service operation
529      * @return a list of HolidayCalendars matching holidayCalendarTypeKey or an
530      *         empty list if none found
531      * @throws InvalidParameterException contextInfo is not valid
532      * @throws MissingParameterException holidayCalendarTypeKey or contextInfo
533      *                                   is missing or null
534      * @throws OperationFailedException  unable to complete request
535      * @throws PermissionDeniedException an authorization failure occurred
536      */
537     public List<String> getHolidayCalendarIdsByType(@WebParam(name = "holidayCalendarTypeKey") String holidayCalendarTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
538 
539     /**
540      * Retrieves a list of HolidayCalendars that start in the given year.
541      *
542      * @param year        calendar year during which the holiday calendar
543      *                    starts
544      * @param contextInfo information containing the principalId and locale
545      *                    information about the caller of service operation
546      * @return a list of HolidayCalendars starting in the given year
547      * @throws InvalidParameterException contextInfo i snot valid
548      * @throws MissingParameterException year or context is missing or null
549      * @throws OperationFailedException  unable to complete request
550      * @throws PermissionDeniedException an authorization failure occurred
551      */
552     public List<HolidayCalendarInfo> getHolidayCalendarsByStartYear(@WebParam(name = "year") Integer year, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
553 
554     /**
555      * Searches for HolidayCalendars that meet the given search criteria.
556      *
557      * @param criteria    the search criteria
558      * @param contextInfo information containing the principalId and locale
559      *                    information about the caller of service operation
560      * @return a list of HolidayCalendar identifiers matching the criteria
561      * @throws InvalidParameterException criteria or contextInfo is not valid
562      * @throws MissingParameterException criteria or contextInfo is missing or
563      *                                   null
564      * @throws OperationFailedException  unable to complete request
565      * @throws PermissionDeniedException an authorization failure occurred
566      */
567     public List<String> searchForHolidayCalendarIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
568 
569     /**
570      * Searches for HolidayCalendars that meet the given search criteria.
571      *
572      * @param criteria    the search criteria
573      * @param contextInfo information containing the principalId and locale
574      *                    information about the caller of service operation
575      * @return a list of HolidayCalendars matching the criteria
576      * @throws InvalidParameterException criteria or contextInfo is not valid
577      * @throws MissingParameterException criteria or contextInfo is missing or
578      *                                   null
579      * @throws OperationFailedException  unable to complete request
580      * @throws PermissionDeniedException an authorization failure occurred
581      */
582     public List<HolidayCalendarInfo> searchForHolidayCalendars(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
583 
584     /**
585      * Validates a HolidayCalendar. Depending on the value of validationType,
586      * this validation could be limited to tests on just the current
587      * HolidayCalendar and its directly contained subobjects or expanded to
588      * perform all tests related to this HolidayCalendar. If an identifier is
589      * present for the HolidayCalendar (and/or one of its contained sub-objects)
590      * and a record is found for that identifier, the validation checks if the
591      * HolidayCalendar can be updated to the new values. If an identifier is not
592      * present or a record does not exist, the validation checks if the
593      * HolidayCalendar with the given data can be created.
594      *
595      * @param validationTypeKey      the identifier for the validation Type
596      * @param holidayCalendarTypeKey the identifier for the HolidayCalendar Type
597      *                               to be validated
598      * @param holidayCalendarInfo    the HolidayCalendar to be validated
599      * @param contextInfo            information containing the principalId and
600      *                               locale information about the caller of
601      *                               service operation
602      * @return a list of validation results or an empty list if validation
603      *         succeeded
604      * @throws DoesNotExistException     validationTypeKey or holidayCalendarTypeKey
605      *                                   is not found
606      * @throws InvalidParameterException holidayCalendarInfo or contextInfo is
607      *                                   not valid
608      * @throws MissingParameterException validationTypeKey, holidayCalendarTypeKey,
609      *                                   holidayCalendarInfo, or contextInfo is
610      *                                   missing or null
611      * @throws OperationFailedException  unable to complete request
612      * @throws PermissionDeniedException an authorization failure occurred
613      */
614     public List<ValidationResultInfo> validateHolidayCalendar(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "holidayCalendarTypeKey") String holidayCalendarTypeKey, @WebParam(name = "holidayCalendarInfo") HolidayCalendarInfo holidayCalendarInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
615 
616     /**
617      * Creates a new HolidayCalendar. The HolidayCalendar Id, Type, and Meta
618      * information may not be set in the supplied data object.
619      *
620      * @param holidayCalendarTypeKey the identifier for the Type of
621      *                               HolidayCalendar to be created
622      * @param holidayCalendarInfo    the data with which to create the
623      *                               HolidayCalendar
624      * @param contextInfo            information containing the principalId and
625      *                               locale information about the caller of
626      *                               service operation
627      * @return the new HolidayCalendar
628      * @throws DataValidationErrorException supplied data is invalid
629      * @throws DoesNotExistException        holidayCalendarTypeKey does not
630      *                                      exist or is not supported
631      * @throws InvalidParameterException    holidayCalendarInfo or contextInfo
632      *                                      is not valid
633      * @throws MissingParameterException    holidayCalendarTypeKey, holidayCalendarInfo,
634      *                                      or contextInfo is missing or null
635      * @throws OperationFailedException     unable to complete request
636      * @throws PermissionDeniedException    an authorization failure occurred
637      * @throws ReadOnlyException            an attempt at supplying information
638      *                                      designated as read only
639      */
640     public HolidayCalendarInfo createHolidayCalendar(@WebParam(name = "holidayCalendarTypeKey") String holidayCalendarTypeKey, @WebParam(name = "holidayCalendarInfo") HolidayCalendarInfo holidayCalendarInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
641 
642 
643 
644     /**
645      * Copy an HolidayCalendar.  This copy
646      * operation allows for a HolidayCalendar to be created from an
647      * existing HolidayCalendar .
648      *
649      *
650      * @param holidayCalendarId the identifier for the Holiday
651      *        Calendar to be copied
652      * @param startDate the start of the new calendar
653      * @param endDate the end of the new calendar
654      * @param contextInfo information containing the principalId and
655      *        locale information about the caller of service operation
656      * @return new HolidayCalendarInfo created from the copy
657      * @throws DoesNotExistException academicCalendarId is not found
658      * @throws InvalidParameterException contextInfo is not valid
659      * @throws MissingParameterException academicCalendarId, startYear,
660      *         endYear, or contextInfo is missing or null
661      * @throws OperationFailedException unable to complete request
662      * @throws PermissionDeniedException an authorization failure occurred
663      */
664     public HolidayCalendarInfo copyHolidayCalendar(@WebParam(name = "holidayCalendarId") String holidayCalendarId, @WebParam(name = "startDate") Date startDate, @WebParam(name = "endDate") Date endDate,  @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException ;
665 
666 
667     /**
668      * Updates an existing Holiday Calendar. The HolidayCalendar Id,
669      * Type, and Meta information may not be changed.
670      * 
671      * @param holidayCalendarId the identifier for the
672      *        HolidayCalendar to be updated
673      * @param holidayCalendarInfo the new data for the HolidayCalendar
674      * @param contextInfo         information containing the principalId and
675      *                            locale information about the caller of service
676      *                            operation
677      * @return the updated HolidayCalendar
678      * @throws DataValidationErrorException supplied data is invalid
679      * @throws DoesNotExistException        HolidayCalendarId is not found
680      * @throws InvalidParameterException    holidayCalendarInfo or contextInfo
681      *                                      is not valid
682      * @throws MissingParameterException    holidayCalendarId, holidayCalendarInfo,
683      *                                      or contextInfo is missing or null
684      * @throws OperationFailedException     unable to complete request
685      * @throws PermissionDeniedException    an authorization failure occurred
686      * @throws ReadOnlyException           an attempt at changing information
687      *                                      designated as read only
688      * @throws VersionMismatchException     an optimistic locking failure or the
689      *                                      action was attempted on an out of
690      *                                      date version
691      */
692     public HolidayCalendarInfo updateHolidayCalendar(@WebParam(name = "holidayCalendarId") String holidayCalendarId, @WebParam(name = "holidayCalendarInfo") HolidayCalendarInfo holidayCalendarInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
693 
694     /**
695      * Deletes an existing HolidayCalendar.
696      *
697      * @param holidayCalendarId the identifier for the HolidayCalendar to be
698      *                          deleted
699      * @param contextInfo       information containing the principalId and
700      *                          locale information about the caller of service
701      *                          operation
702      * @return the status of the operation. This must always be true.
703      * @throws DoesNotExistException     HolidayCalendarId is not found
704      * @throws InvalidParameterException contextInfo is not valid
705      * @throws MissingParameterException holidayCalendarId or contextInfo is
706      *                                   missing or null
707      * @throws OperationFailedException  unable to complete request
708      * @throws PermissionDeniedException an authorization failure occurred
709      */
710     public StatusInfo deleteHolidayCalendar(@WebParam(name = "holidayCalendarId") String holidayCalendarId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
711 
712     /**
713      * Retrieves a Term Type by Type key.
714      *
715      * @param termTypeKey the key of a Term Type
716      * @param contextInfo information containing the principalId and locale
717      *                    information about the caller of service operation
718      * @return the type requested
719      * @throws DoesNotExistException     termTypeKey is not found
720      * @throws InvalidParameterException contextInfo is not valid
721      * @throws MissingParameterException termTypeKey or contextInfo is missing
722      *                                   or null
723      * @throws OperationFailedException  unable to complete request
724      * @throws PermissionDeniedException an authorization failure occurred
725      */
726     public TypeInfo getTermType(@WebParam(name = "termTypeKey") String termTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
727 
728     /**
729      * Gets the valid Term types.
730      *
731      * @param contextInfo information containing the principalId and locale
732      *                    information about the caller of service operation
733      * @return a list of valid Term Types
734      * @throws InvalidParameterException contextInfo is not value
735      * @throws MissingParameterException contextInfo is missing or null
736      * @throws OperationFailedException  unable to complete request
737      * @throws PermissionDeniedException an authorization failure occurred
738      */
739     public List<TypeInfo> getTermTypes(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
740 
741     /**
742      * This method returns the valid Term types for an AcademicCalendar Type.
743      * Only Terms of allowed Types can be mapped to an AcademicCalendar.
744      *
745      * @param academicCalendarTypeKey an identifier for an AcademicCalendar
746      *                                Type
747      * @param contextInfo             information containing the principalId and
748      *                                locale information about the caller of
749      *                                service operation
750      * @return a list of valid Term Types for the AcademicCalendar Type
751      * @throws DoesNotExistException     academicCalendarTypeKey is not found
752      * @throws InvalidParameterException contextInfo is not valid
753      * @throws MissingParameterException academicCalendarTypeKey or contextInfo
754      *                                   is missing or null
755      * @throws OperationFailedException  unable to complete request
756      * @throws PermissionDeniedException an authorization failure occurred
757      */
758     public List<TypeInfo> getTermTypesForAcademicCalendarType(@WebParam(name = "academicCalendarTypeKey") String academicCalendarTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
759 
760     /**
761      * This method returns the valid Term types for a Term Type. Only Terms of
762      * allowed Types can be included inside another Term.
763      *
764      * @param termTypeKey a identifier for a Term Type
765      * @param contextInfo information containing the principalId and locale
766      *                    information about the caller of service operation
767      * @return a list of valid Term Types
768      * @throws DoesNotExistException     termTypeKey is not found
769      * @throws InvalidParameterException contextInfo is not valid
770      * @throws MissingParameterException termTypeKey or contextInfo is missing
771      *                                   or null
772      * @throws OperationFailedException  unable to complete request
773      * @throws PermissionDeniedException an authorization failure occurred
774      */
775     public List<TypeInfo> getTermTypesForTermType(@WebParam(name = "termTypeKey") String termTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
776 
777     /**
778      * Gets a Term State by key.
779      *
780      * @param termStateKey a key for a Term State
781      * @param contextInfo  information containing the principalId and locale
782      *                     information about the caller of service operation
783      * @return the Term State requested
784      * @throws DoesNotExistException     termStateKey is not found
785      * @throws InvalidParameterException contextInfo is invalid
786      * @throws MissingParameterException termStateKey or contextInfo is missing
787      *                                   or null
788      * @throws OperationFailedException  unable to complete request
789      * @throws PermissionDeniedException an authorization failure occurred
790      */
791     public StateInfo getTermState(@WebParam(name = "termStateKey") String termStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
792 
793     /**
794      * Gets the valid Term States.
795      *
796      * @param contextInfo information containing the principalId and locale
797      *                    information about the caller of service operation
798      * @return a list of valid Term States
799      * @throws InvalidParameterException contextInfo is not valid
800      * @throws MissingParameterException contextInfo is missing or null
801      * @throws OperationFailedException  unable to complete request
802      */
803     public List<StateInfo> getTermStates(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
804 
805     /**
806      * Retrieves a single Term by a Term Id.
807      *
808      * @param termId      the identifier for the Term to be retrieved
809      * @param contextInfo information containing the principalId and locale
810      *                    information about the caller of service operation
811      * @return the Term requested
812      * @throws DoesNotExistException     termIs is not found
813      * @throws InvalidParameterException contextInfo isnot valid
814      * @throws MissingParameterException termId or contextInfo is missing or
815      *                                   null
816      * @throws OperationFailedException  unable to complete request
817      * @throws PermissionDeniedException an authorization failure occurred
818      */
819     public TermInfo getTerm(@WebParam(name = "termId") String termId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
820 
821     /**
822      * Retrieves a list Terms from a list of Term Ids. The returned list may be
823      * in any order and if duplicate Ids are supplied, a unique set may or may
824      * not be returned.
825      *
826      * @param termIds     list of Term Ids
827      * @param contextInfo information containing the principalId and locale
828      *                    information about the caller of service operation
829      * @return a list of Terms
830      * @throws DoesNotExistException     a termId in list was not found
831      * @throws InvalidParameterException contextInfo is not valid
832      * @throws MissingParameterException termIds, an Id in termIds, or
833      *                                   contextInfo is missing or null
834      * @throws OperationFailedException  unable to complete request
835      * @throws PermissionDeniedException an authorization failure occurred
836      */
837     public List<TermInfo> getTermsByIds(@WebParam(name = "termIds") List<String> termIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
838 
839     /**
840      * Retrieves a list of Term Ids by Type.
841      *
842      * @param termTypeKey an identifier for a Term Type
843      * @param contextInfo information containing the principalId and locale
844      *                    information about the caller of service operation
845      * @return a list of Terms matching termTypeKey or an empty list if none
846      *         found
847      * @throws DoesNotExistException     a termTypeKey in list was not found
848      * @throws InvalidParameterException contextInfo is not valid
849      * @throws MissingParameterException termTypeKey or contextInfo is missing
850      *                                   or null
851      * @throws OperationFailedException  unable to complete request
852      * @throws PermissionDeniedException an authorization failure occurred
853      */
854     public List<String> getTermIdsByType(@WebParam(name = "termTypeKey") String termTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
855 
856     /**
857      * Gets a list of Terms by Code. Typically, a Term Code is unique.
858      *
859      * @param code        a Term Code
860      * @param contextInfo information containing the principalId and locale
861      *                    information about the caller of service operation
862      * @return a list of Terms with the given Term Code
863      * @throws InvalidParameterException contextInfo is not valid
864      * @throws MissingParameterException code or contextInfo is missing or null
865      * @throws OperationFailedException  unable to complete request
866      * @throws PermissionDeniedException an authorization failure occurred
867      */
868     public List<TermInfo> getTermsByCode(@WebParam(name = "code") String code, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
869 
870     /**
871      * Retrieves a list of the top level Terms mapped to the given
872      * AcademicCalendar ordered by Term start date.
873      *
874      * @param academicCalendarId an identifier for an AcademicCalendar
875      * @param contextInfo        information containing the principalId and
876      *                           locale information about the caller of service
877      *                           operation
878      * @return a list of Terms mapped to the given AcademicCalendar
879      * @throws DoesNotExistException     academicCalendarId is not found
880      * @throws InvalidParameterException contextInfo is not valid
881      * @throws MissingParameterException academicCalendarId or contextInfo is
882      *                                   missing or null
883      * @throws OperationFailedException  unable to complete request
884      * @throws PermissionDeniedException authorization failure
885      */
886     public List<TermInfo> getTermsForAcademicCalendar(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
887 
888     /**
889      * Retrieves a list Terms included immediately inside the given Term ordered
890      * by Term start date. This method should be called recursively to get
891      * sub-terms of the returned Terms.
892      *
893      * @param termId      an identifier for a Term
894      * @param contextInfo information containing the principalId and locale
895      *                    information about the caller of service operation
896      * @return a list of Terms or an empty list if there are no included Terms
897      * @throws DoesNotExistException     termId is not found
898      * @throws InvalidParameterException contextInfo is not valid
899      * @throws MissingParameterException termId or contextInfo is missing or
900      *                                   null
901      * @throws OperationFailedException  unable to complete request
902      * @throws PermissionDeniedException authorization failure
903      */
904     public List<TermInfo> getIncludedTermsInTerm(@WebParam(name = "termId") String termId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
905 
906     /**
907      * Gets the containing terms of a given term. A term may be "included"
908      * inside other terms using addTermToTerm(). This method returns the list of
909      * Terms that the given Term has been placed inside. Typically, a term is
910      * placed inside a single parent term.
911      *
912      * @param termId      an identifier for a Term
913      * @param contextInfo information containing the principalId and locale
914      *                    information about the caller of service operation
915      * @return the parent terms or an empty list if it is a root
916      * @throws DoesNotExistException     termId is not found
917      * @throws InvalidParameterException contextInfo is not valid
918      * @throws MissingParameterException termId or contextInfo is missing or
919      *                                   null
920      * @throws OperationFailedException  unable to complete request
921      * @throws PermissionDeniedException authorization failure
922      */
923     public List<TermInfo> getContainingTerms(@WebParam(name = "termId") String termId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
924 
925     /**
926      * Searches for Terms that meet the given search criteria.
927      *
928      * @param criteria    the search criteria
929      * @param contextInfo information containing the principalId and locale
930      *                    information about the caller of service operation
931      * @return a list of Term identifiers matching the criteria
932      * @throws InvalidParameterException criteria or contextInfo is not valid
933      * @throws MissingParameterException criteria or contextInfo is missing or
934      *                                   null
935      * @throws OperationFailedException  unable to complete request
936      * @throws PermissionDeniedException an authorization failure occurred
937      */
938     public List<String> searchForTermIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
939 
940     /**
941      * Searches for Terms that meet the given search criteria.
942      *
943      * @param criteria    the search criteria
944      * @param contextInfo information containing the principalId and locale
945      *                    information about the caller of service operation
946      * @return a list of Terms matching the criteria
947      * @throws InvalidParameterException criteria or contextInfo is not valid
948      * @throws MissingParameterException criteria or contextInfo is missing or
949      *                                   null
950      * @throws OperationFailedException  unable to complete request
951      * @throws PermissionDeniedException an authorization failure occurred
952      */
953     public List<TermInfo> searchForTerms(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
954 
955     /**
956      * Validates a Term. Depending on the value of validationType, this
957      * validation could be limited to tests on just the current Term and its
958      * directly contained subobjects or expanded to perform all tests related to
959      * this Term. If an identifier is present for the Term (and/or one of its
960      * contained sub-objects) and a record is found for that identifier, the
961      * validation checks if the Term can be updated to the new values. If an
962      * identifier is not present or a record does not exist, the validation
963      * checks if the Term with the given data can be created.
964      *
965      * @param validationTypeKey the identifier for the validation Type
966      * @param termTypeKey       the identifier for the Term Type to be
967      *                          validated
968      * @param termInfo          the Term to be validated
969      * @param contextInfo       information containing the principalId and
970      *                          locale information about the caller of service
971      *                          operation
972      * @return a list of validation results or an empty list if validation
973      *         succeeded
974      * @throws DoesNotExistException     validationTypeKey or termTypeKey is not
975      *                                   found
976      * @throws InvalidParameterException termInfo or contextInfo is not valid
977      * @throws MissingParameterException validationTypeKey, termTypeKey,
978      *                                   termInfo, or contextInfo is missing or
979      *                                   null
980      * @throws OperationFailedException  unable to complete request
981      * @throws PermissionDeniedException an authorization failure occurred
982      */
983     public List<ValidationResultInfo> validateTerm(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "termTypeKey") String termTypeKey, @WebParam(name = "termInfo") TermInfo termInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
984 
985     /**
986      * Creates a new Term. The Term Type and Meta information may not be set in
987      * the supplied data object.
988      *
989      * @param termTypeKey the identifier for the Type of Term to be created
990      * @param termInfo    the data with which to create the Term
991      * @param contextInfo information containing the principalId and locale
992      *                    information about the caller of service operation
993      * @return the new Term
994      * @throws DataValidationErrorException supplied data is invalid
995      * @throws DoesNotExistException        termTypeKey does not exist or is not
996      *                                      supported
997      * @throws InvalidParameterException    termInfo or contextInfo is not
998      *                                      valid
999      * @throws MissingParameterException    termTypeKey, termInfo, or
1000      *                                      contextInfo is missing or null
1001      * @throws OperationFailedException     unable to complete request
1002      * @throws PermissionDeniedException    an authorization failure occurred
1003      * @throws ReadOnlyException            an attempt at supplying information
1004      *                                      designated as read only
1005      */
1006     public TermInfo createTerm(@WebParam(name = "termTypeKey") String termTypeKey, @WebParam(name = "termInfo") TermInfo termInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
1007 
1008     /**
1009      * Updates an existing Term. The Term Id, Type, and Meta information may not
1010      * be changed.
1011      *
1012      * @param termId      the identifier for the Term to be updated
1013      * @param termInfo    the new data for the Term
1014      * @param contextInfo information containing the principalId and locale
1015      *                    information about the caller of service operation
1016      * @return the updated Term
1017      * @throws DataValidationErrorException supplied data is invalid
1018      * @throws DoesNotExistException        TermId is not found
1019      * @throws InvalidParameterException    termInfo or contextInfo is not
1020      *                                      valid
1021      * @throws MissingParameterException    termId, termInfo, or contextInfo is
1022      *                                      missing or null
1023      * @throws OperationFailedException     unable to complete request
1024      * @throws PermissionDeniedException    an authorization failure occurred
1025      * @throws ReadOnlyException           an attempt at changing information
1026      *                                      deisgnated as read only
1027      * @throws VersionMismatchException     an optimistic locking failure or the
1028      *                                      action was attempted on an out of
1029      *                                      date version
1030      */
1031     public TermInfo updateTerm(@WebParam(name = "termId") String termId, @WebParam(name = "termInfo") TermInfo termInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
1032 
1033     /**
1034      * Deletes an existing Term.
1035      *
1036      * @param termId      the identifier for the Term to be deleted
1037      * @param contextInfo information containing the principalId and locale
1038      *                    information about the caller of service operation
1039      * @return the status of the operation. This must always be true.
1040      * @throws DoesNotExistException     TermId is not found
1041      * @throws InvalidParameterException contextInfo is not valid
1042      * @throws MissingParameterException termId or contextInfo is missing or
1043      *                                   null
1044      * @throws OperationFailedException  unable to complete request
1045      * @throws PermissionDeniedException an authorization failure occurred
1046      */
1047     public StatusInfo deleteTerm(@WebParam(name = "termId") String termId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1048 
1049     /**
1050      * Adds a Term to an AcademicCalendar.
1051      *
1052      * @param academicCalendarId an identifier for an AcademicCalendar
1053      * @param termId             the Id of Term to be added
1054      * @param contextInfo        information containing the principalId and
1055      *                           locale information about the caller of service
1056      *                           operation
1057      * @return the status of the operation. This must always be true.
1058      * @throws AlreadyExistsException    The Term is already mapped to the
1059      *                                   AcademicCalendar
1060      * @throws DoesNotExistException     academicCalendarId or termId is not
1061      *                                   found
1062      * @throws InvalidParameterException contextInfo is not valid
1063      * @throws MissingParameterException academicCalendarId, termId, or
1064      *                                   contextInfo is missing or null
1065      * @throws OperationFailedException  unable to complete request
1066      * @throws PermissionDeniedException authorization failure
1067      */
1068     public StatusInfo addTermToAcademicCalendar(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "termId") String termId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws AlreadyExistsException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1069 
1070     /**
1071      * Removes a Term from an AcademicCalendar.
1072      *
1073      * @param academicCalendarId an identifier for an AcademicCalendar
1074      * @param termId             the Id of Term to be unmapped
1075      * @param contextInfo        information containing the principalId and
1076      *                           locale information about the caller of service
1077      *                           operation
1078      * @return the status of the operation. This must always be true.
1079      * @throws DoesNotExistException     termId or academicCalendarId is not
1080      *                                   found or termId is not mapped to
1081      *                                   academicCalendarId
1082      * @throws InvalidParameterException contextInfo is not valid
1083      * @throws MissingParameterException academicCalendarId, termId, or
1084      *                                   contextInfo is missing or null
1085      * @throws OperationFailedException  unable to complete request
1086      * @throws PermissionDeniedException authorization failure
1087      */
1088     public StatusInfo removeTermFromAcademicCalendar(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "termId") String termId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1089 
1090     /**
1091      * Adds a Term as an included term within another Term.
1092      *
1093      * @param termId         an identifier for a Term
1094      * @param includedTermId the identifier for the Term to be included
1095      * @param contextInfo    information containing the principalId and locale
1096      *                       information about the caller of service operation
1097      * @return the status of the operation. This must always be true.
1098      * @throws AlreadyExistsException    includedTermId is already mapped to
1099      *                                   termId
1100      * @throws DoesNotExistException     temId or includedTermId is not found
1101      * @throws InvalidParameterException contextInfo is not valid
1102      * @throws MissingParameterException temId, includedTermId, or contextInfo
1103      *                                   is missing or null
1104      * @throws OperationFailedException  unable to complete request
1105      * @throws PermissionDeniedException authorization failure
1106      */
1107     public StatusInfo addTermToTerm(@WebParam(name = "termId") String termId, @WebParam(name = "includedTermId") String includedTermId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws AlreadyExistsException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1108 
1109     /**
1110      * Removes an included Term from a Term.
1111      *
1112      * @param termId         an identifier for a Term
1113      * @param includedTermId the identifier for the Term to be removed
1114      * @param contextInfo    information containing the principalId and locale
1115      *                       information about the caller of service operation
1116      * @return the status of the operation. This must always be true.
1117      * @throws DoesNotExistException     termId or includedTermId is not found
1118      *                                   or includedTermId is not mapped to
1119      *                                   termId
1120      * @throws InvalidParameterException contextInfo is not valid
1121      * @throws MissingParameterException termId, includedTermId, or contextInfo
1122      *                                   is missing or null
1123      * @throws OperationFailedException  unable to complete request
1124      * @throws PermissionDeniedException authorization failure
1125      */
1126     public StatusInfo removeTermFromTerm(@WebParam(name = "termId") String termId, @WebParam(name = "includedTermId") String includedTermId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1127 
1128     /**
1129      * Rerieves a KeyDate Type by Type key.
1130      *
1131      * @param keyDateTypeKey the key of a keyDate Type
1132      * @param contextInfo    information containing the principalId and locale
1133      *                       information about the caller of service operation
1134      * @return the type requested
1135      * @throws DoesNotExistException     keyDateTypeKey is not found
1136      * @throws InvalidParameterException contextInfo is not valid
1137      * @throws MissingParameterException keyDateTypeKey or contextInfo is
1138      *                                   missing or null
1139      * @throws OperationFailedException  unable to complete request
1140      * @throws PermissionDeniedException an authorization failure occurred
1141      */
1142     public TypeInfo getKeyDateType(@WebParam(name = "keyDateTypeKey") String keyDateTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1143 
1144     /**
1145      * Gets the valid KeyDate types.
1146      *
1147      * @param contextInfo information containing the principalId and locale
1148      *                    information about the caller of service operation
1149      * @return a list of valid KeyDate Types
1150      * @throws InvalidParameterException contextInfo is not value
1151      * @throws MissingParameterException contextInfo is missing or null
1152      * @throws OperationFailedException  unable to complete request
1153      * @throws PermissionDeniedException an authorization failure occurred
1154      */
1155     public List<TypeInfo> getKeyDateTypes(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1156 
1157     /**
1158      * This method returns the valid KeyDate Types for the given Term Type.
1159      *
1160      * @param termTypeKey identifier for a Term Type
1161      * @param contextInfo information containing the principalId and locale
1162      *                    information about the caller of service operation
1163      * @return a list of valid KeyDate Types
1164      * @throws DoesNotExistException     termTypeKey not found
1165      * @throws InvalidParameterException contextInfo is not valid
1166      * @throws MissingParameterException termTypeKey or contextInfo is missing
1167      *                                   or null
1168      * @throws OperationFailedException  unable to complete request
1169      * @throws PermissionDeniedException an authorization failure occurred
1170      */
1171     public List<TypeInfo> getKeyDateTypesForTermType(@WebParam(name = "termTypeKey") String termTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1172 
1173     /**
1174      * Gets a KeyDate State by key.
1175      *
1176      * @param keyDateStateKey a key for a keyDate State
1177      * @param contextInfo     information containing the principalId and locale
1178      *                        information about the caller of service operation
1179      * @return the KeyDate State requested
1180      * @throws DoesNotExistException     keyDateStateKey is not found
1181      * @throws InvalidParameterException contextInfo is invalid
1182      * @throws MissingParameterException keyDateStateKey or contextInfo is
1183      *                                   missing or null
1184      * @throws OperationFailedException  unable to complete request
1185      * @throws PermissionDeniedException an authorization failure occurred
1186      */
1187     public StateInfo getKeyDateState(@WebParam(name = "keyDateStateKey") String keyDateStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1188 
1189     /**
1190      * Gets the valid KeyDate States.
1191      *
1192      * @param contextInfo information containing the principalId and locale
1193      *                    information about the caller of service operation
1194      * @return a list of valid KeyDate States
1195      * @throws InvalidParameterException contextInfo is not valid
1196      * @throws MissingParameterException contextInfo is missing or null
1197      * @throws OperationFailedException  unable to complete request
1198      * @throws PermissionDeniedException an authorization failure occurred
1199      */
1200     public List<StateInfo> getKeyDateStates(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1201 
1202     /**
1203      * Retrieves a single KeyDate by a KeyDate Id.
1204      *
1205      * @param keyDateId   the identifier for the KeyDate to be retrieved
1206      * @param contextInfo information containing the principalId and locale
1207      *                    information about the caller of service operation
1208      * @return the KeyDate requested
1209      * @throws DoesNotExistException     keyDateIs is not found
1210      * @throws InvalidParameterException contextInfo is not valid
1211      * @throws MissingParameterException keyDateId or contextInfo is missing or
1212      *                                   null
1213      * @throws OperationFailedException  unable to complete request
1214      * @throws PermissionDeniedException an authorization failure occurred
1215      */
1216     public KeyDateInfo getKeyDate(@WebParam(name = "keyDateId") String keyDateId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1217 
1218     /**
1219      * Retrieves a list KeyDates from a list of KeyDate Ids. The returned list
1220      * may be in any order and if duplicate Ids are supplied, a unique set may
1221      * or may not be returned.
1222      *
1223      * @param keyDateIds  list of KeyDate Ids
1224      * @param contextInfo information containing the principalId and locale
1225      *                    information about the caller of service operation
1226      * @return a list of KeyDates
1227      * @throws DoesNotExistException     a keyDateId in list was not found
1228      * @throws InvalidParameterException contextInfo is not valid
1229      * @throws MissingParameterException keyDateIds, an Id in keyDateIds, or
1230      *                                   contextInfo is missing or null
1231      * @throws OperationFailedException  unable to complete request
1232      * @throws PermissionDeniedException an authorization failure occurred
1233      */
1234     public List<KeyDateInfo> getKeyDatesByIds(@WebParam(name = "keyDateIds") List<String> keyDateIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1235 
1236     /**
1237      * Retrieves a list of KeyDate Ids by Type.
1238      *
1239      * @param keyDateTypeKey an identifier for a KeyDate Type
1240      * @param contextInfo    information containing the principalId and locale
1241      *                       information about the caller of service operation
1242      * @return a list of KeyDates matching keyDateTypeKey or an empty list if
1243      *         none found
1244      * @throws DoesNotExistException     a keyDateTypeKey is not found
1245      * @throws InvalidParameterException contextInfo is not valid
1246      * @throws MissingParameterException keyDateTypeKey or contextInfo is
1247      *                                   missing or null
1248      * @throws OperationFailedException  unable to complete request
1249      * @throws PermissionDeniedException an authorization failure occurred
1250      */
1251     public List<String> getKeyDateIdsByType(@WebParam(name = "keyDateTypeKey") String keyDateTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1252 
1253     /**
1254      * Retrieves a list of KeyDate Ids by Type and for a specific Term
1255      *
1256      * @param keyDateTypeKey an identifier for a KeyDate Type
1257      * @param termId      an identifier for a term
1258      * @param contextInfo    information containing the principalId and locale
1259      *                       information about the caller of service operation
1260      * @return a list of KeyDates matching keyDateTypeKey and for termId or an empty list if none found
1261      * @throws DoesNotExistException     a keyDateTypeKey is not found
1262      * @throws InvalidParameterException contextInfo is not valid
1263      * @throws MissingParameterException keyDateTypeKey or contextInfo is
1264      *                                   missing or null
1265      * @throws OperationFailedException  unable to complete request
1266      * @throws PermissionDeniedException an authorization failure occurred
1267      */
1268     public List<String> getKeyDateIdsByTypeForTerm(@WebParam(name = "keyDateTypeKey") String keyDateTypeKey, @WebParam(name = "termId") String termId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1269 
1270     /**
1271      * Retrieves a list of KeyDates immediately mapped to a Term ordered by
1272      * date.
1273      *
1274      * @param termId      an identifier for a term
1275      * @param contextInfo information containing the principalId and locale
1276      *                    information about the caller of service operation
1277      * @return a list of KeyDates mapped to the given Term
1278      * @throws DoesNotExistException     termId is not found
1279      * @throws InvalidParameterException contextInfo is not valid
1280      * @throws MissingParameterException termId or contextInfo is missing or
1281      *                                   null
1282      * @throws OperationFailedException  unable to complete request
1283      * @throws PermissionDeniedException authorization failure
1284      */
1285     public List<KeyDateInfo> getKeyDatesForTerm(@WebParam(name = "termId") String termId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1286 
1287     /**
1288      * Retrieves a list of KeyDates immediately mapped to a Term that fall
1289      * within the given date range inclusive ordered by date. The dates include
1290      * only those dates immediate mapped to the Term.
1291      *
1292      * @param termId      an identifier for a Term
1293      * @param startDate   the start of date range
1294      * @param endDate     the end of date range
1295      * @param contextInfo information containing the principalId and locale
1296      *                    information about the caller of service operation
1297      * @return a list of KeyDates for the given Term in the given dates
1298      * @throws DoesNotExistException     termId is not found
1299      * @throws InvalidParameterException contextInfo is not valid
1300      * @throws MissingParameterException termId, startDate, endDate, or
1301      *                                   contextInfo is missing or null
1302      * @throws OperationFailedException  unable to complete request
1303      * @throws PermissionDeniedException authorization failure
1304      */
1305     public List<KeyDateInfo> getKeyDatesForTermByDate(@WebParam(name = "termId") String termId, @WebParam(name = "startDate") Date startDate, @WebParam(name = "endDate") Date endDate, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1306 
1307     /**
1308      * Gets a list of KeyDates impacted by a change to a given KeyDate. Rules
1309      * may exist to calculate key dates based on a KeyDate Type. Management of
1310      * these calculation rules are not at this time exposed in this service.
1311      *
1312      * @param keyDateId   an identifier for a KeyDate
1313      * @param contextInfo information containing the principalId and locale
1314      *                    information about the caller of service operation
1315      * @return a list of KeyDates impacted by the given KeyDate
1316      * @throws DoesNotExistException     keyDateId is not found
1317      * @throws InvalidParameterException contextInfo is not valid
1318      * @throws MissingParameterException keyDateId or contextInfo is missing or
1319      *                                   null
1320      * @throws OperationFailedException  unable to complete request
1321      * @throws PermissionDeniedException an authorization failure occurred
1322      * @deprecated Key Dates are to be calculated when calender is copied.
1323      */
1324     public List<KeyDateInfo> getImpactedKeyDates(@WebParam(name = "keyDateId") String keyDateId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1325 
1326     /**
1327      * Searches for KeyDates that meet the given search criteria.
1328      *
1329      * @param criteria    the search criteria
1330      * @param contextInfo information containing the principalId and locale
1331      *                    information about the caller of service operation
1332      * @return a list of KeyDate identifiers matching the criteria
1333      * @throws InvalidParameterException criteria or contextInfo is not valid
1334      * @throws MissingParameterException criteria or contextInfo is missing or
1335      *                                   null
1336      * @throws OperationFailedException  unable to complete request
1337      * @throws PermissionDeniedException an authorization failure occurred
1338      */
1339     public List<String> searchForKeyDateIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1340 
1341     /**
1342      * Searches for KeyDates that meet the given search criteria.
1343      *
1344      * @param criteria    the search criteria
1345      * @param contextInfo information containing the principalId and locale
1346      *                    information about the caller of service operation
1347      * @return a list of KeyDates matching the criteria
1348      * @throws InvalidParameterException criteria or contextInfo is not valid
1349      * @throws MissingParameterException criteria or contextInfo is missing or
1350      *                                   null
1351      * @throws OperationFailedException  unable to complete request
1352      * @throws PermissionDeniedException an authorization failure occurred
1353      */
1354     public List<KeyDateInfo> searchForKeyDates(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1355 
1356     /**
1357      * Validates a KeyDate. Depending on the value of validationType, this
1358      * validation could be limited to tests on just the current KeyDate and its
1359      * directly contained subobjects or expanded to perform all tests related to
1360      * this KeyDate. If an identifier is present for the KeyDate (and/or one of
1361      * its contained sub-objects) and a record is found for that identifier, the
1362      * validation checks if the KeyDate can be updated to the new values. If an
1363      * identifier is not present or a record does not exist, the validation
1364      * checks if the KeyDate with the given data can be created.
1365      *
1366      * @param validationTypeKey the identifier for the validation Type
1367      * @param termId            the identifier for the Term
1368      * @param keyDateTypeKey    the identifier for the KeyDate Type to be
1369      *                          validated
1370      * @param keyDateInfo       the KeyDate to be validated
1371      * @param contextInfo       information containing the principalId and
1372      *                          locale information about the caller of service
1373      *                          operation
1374      * @return a list of validation results or an empty list if validation
1375      *         succeeded
1376      * @throws DoesNotExistException     validationTypeKey, termId, or
1377      *                                   keyDateTypeKey is not found
1378      * @throws InvalidParameterException keyDateInfo or contextInfo is not
1379      *                                   valid
1380      * @throws MissingParameterException validationTypeKey, termId, keyDateTypeKey,
1381      *                                   keyDateInfo, or contextInfo is missing
1382      *                                   or null
1383      * @throws OperationFailedException  unable to complete request
1384      * @throws PermissionDeniedException an authorization failure occurred
1385      */
1386     public List<ValidationResultInfo> validateKeyDate(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "termId") String termId, @WebParam(name = "keyDateTypeKey") String keyDateTypeKey, @WebParam(name = "keyDateInfo") KeyDateInfo keyDateInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1387 
1388     /**
1389      * Creates a new KeyDate. The KeyDate Id, Type, and Meta information may not
1390      * be set in the supplied data object.
1391      *
1392      * @param termId         the identifier for the Term in which to create the
1393      *                       KeyDate
1394      * @param keyDateTypeKey the identifier for the Type of KeyDate to be
1395      *                       created
1396      * @param keyDateInfo    the data with which to create the KeyDate
1397      * @param contextInfo    information containing the principalId and locale
1398      *                       information about the caller of service operation
1399      * @return the new KeyDate
1400      * @throws DataValidationErrorException supplied data is invalid
1401      * @throws DoesNotExistException        termId is not found or keyDateTypeKey
1402      *                                      does not exist or is not supported
1403      * @throws InvalidParameterException    keyDateInfo or contextInfo is not
1404      *                                      valid
1405      * @throws MissingParameterException    termId, keyDateTypeKey, keyDateInfo,
1406      *                                      or contextInfo is missing or null
1407      * @throws OperationFailedException     unable to complete request
1408      * @throws PermissionDeniedException    an authorization failure occurred
1409      * @throws ReadOnlyException            an attempt at supplying information
1410      *                                      designated as read only
1411      */
1412     public KeyDateInfo createKeyDate(@WebParam(name = "termId") String termId, @WebParam(name = "keyDateTypeKey") String keyDateTypeKey, @WebParam(name = "keyDateInfo") KeyDateInfo keyDateInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
1413 
1414     /**
1415      * Updates an existing KeyDate. The KeyDate Id, Type, and Meta information
1416      * may not be changed.
1417      *
1418      * @param keyDateId   the identifier for the KeyDate to be updated
1419      * @param keyDateInfo the new data for the Key`Date
1420      * @param contextInfo information containing the principalId and locale
1421      *                    information about the caller of service operation
1422      * @return the updated KeyDate
1423      * @throws DataValidationErrorException supplied data is invalid
1424      * @throws DoesNotExistException        KeyDateId is not found
1425      * @throws InvalidParameterException    keyDateInfo or contextInfo is not
1426      *                                      valid
1427      * @throws MissingParameterException    keyDateId, keyDateInfo, or
1428      *                                      contextInfo is missing or null
1429      * @throws OperationFailedException     unable to complete request
1430      * @throws PermissionDeniedException    an authorization failure occurred
1431      * @throws ReadOnlyException           an attempt at changing information
1432      *                                      designated as read only
1433      * @throws VersionMismatchException     an optimistic locking failure or the
1434      *                                      action was attempted on an out of
1435      *                                      date version
1436      */
1437     public KeyDateInfo updateKeyDate(@WebParam(name = "keyDateId") String keyDateId, @WebParam(name = "keyDateInfo") KeyDateInfo keyDateInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
1438 
1439     /**
1440      * Deletes an existing KeyDate.
1441      *
1442      * @param keyDateId   the identifier for the KeyDate to be deleted
1443      * @param contextInfo information containing the principalId and locale
1444      *                    information about the caller of service operation
1445      * @return the status of the operation. This must always be true.
1446      * @throws DoesNotExistException     KeyDateId is not found
1447      * @throws InvalidParameterException contextInfo is not valid
1448      * @throws MissingParameterException keyDateId or contextInfo is missing or
1449      *                                   null
1450      * @throws OperationFailedException  unable to complete request
1451      * @throws PermissionDeniedException an authorization failure occurred
1452      */
1453     public StatusInfo deleteKeyDate(@WebParam(name = "keyDateId") String keyDateId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1454 
1455     /**
1456      * Calculates the dates in the KeyDate based on a rule attached to the
1457      * KeyDate Type. If there is no rule available for the Type of the given
1458      * KeyDate, then no changes to the KeyDate occur.
1459      *
1460      * @param keyDateId   an identifier for a KeyDate
1461      * @param contextInfo information containing the principalId and locale
1462      *                    information about the caller of service operation
1463      * @return the KeyDate with the calculated dates
1464      * @throws DoesNotExistException     keyDateId is not found
1465      * @throws InvalidParameterException contextInfo is not valid
1466      * @throws MissingParameterException keyDateId or contextInfo is missing or
1467      *                                   null
1468      * @throws OperationFailedException  unable to complete request
1469      * @throws PermissionDeniedException an authorization failure occurred
1470      * @deprecated Key Dates are to be calculated when calender is copied.
1471      */
1472     public KeyDateInfo calculateKeyDate(@WebParam(name = "keyDateId") String keyDateId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1473 
1474     /**
1475      * Rerieves a AcalEvent Type by Type key.
1476      *
1477      * @param acalEventTypeKey the key of a acalEvent Type
1478      * @param contextInfo      information containing the principalId and locale
1479      *                         information about the caller of service
1480      *                         operation
1481      * @return the type requested
1482      * @throws DoesNotExistException     acalEventTypeKey is not found
1483      * @throws InvalidParameterException contextInfo is not valid
1484      * @throws MissingParameterException acalEventTypeKey or contextInfo is
1485      *                                   missing or null
1486      * @throws OperationFailedException  unable to complete request
1487      * @throws PermissionDeniedException an authorization failure occurred
1488      */
1489     public TypeInfo getAcalEventType(@WebParam(name = "acalEventTypeKey") String acalEventTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1490 
1491     /**
1492      * Gets the valid AcalEvent types.
1493      *
1494      * @param contextInfo information containing the principalId and locale
1495      *                    information about the caller of service operation
1496      * @return a list of valid AcalEvent Types
1497      * @throws InvalidParameterException contextInfo is not value
1498      * @throws MissingParameterException contextInfo is missing or null
1499      * @throws OperationFailedException  unable to complete request
1500      * @throws PermissionDeniedException an authorization failure occurred
1501      */
1502     public List<TypeInfo> getAcalEventTypes(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1503 
1504     /**
1505      * This method returns the valid AcalEvent Types for the given
1506      * AcademicCalendar Type.
1507      *
1508      * @param academicCalendarTypeKey identifier for an AcademicCalendar Type
1509      * @param contextInfo             information containing the principalId and
1510      *                                locale information about the caller of
1511      *                                service operation
1512      * @return a list of valid AcalEvent Types
1513      * @throws DoesNotExistException     academicCalendarTypeKey not found
1514      * @throws InvalidParameterException contextInfo is not valid
1515      * @throws MissingParameterException academicCalendarTypeKey or contextInfo
1516      *                                   is missing or null
1517      * @throws OperationFailedException  unable to complete request
1518      * @throws PermissionDeniedException an authorization failure occurred
1519      */
1520     public List<TypeInfo> getAcalEventTypesForAcademicCalendarType(@WebParam(name = "academicCalendarTypeKey") String academicCalendarTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1521 
1522     /**
1523      * Gets a AcalEvent State by key.
1524      *
1525      * @param acalEventStateKey a key for a acalEvent State
1526      * @param contextInfo       information containing the principalId and
1527      *                          locale information about the caller of service
1528      *                          operation
1529      * @return the AcalEvent State requested
1530      * @throws DoesNotExistException     acalEventStateKey is not found
1531      * @throws InvalidParameterException contextInfo is invalid
1532      * @throws MissingParameterException acalEventStateKey or contextInfo is
1533      *                                   missing or null
1534      * @throws OperationFailedException  unable to complete request
1535      * @throws PermissionDeniedException an authorization failure occurred
1536      */
1537     public StateInfo getAcalEventState(@WebParam(name = "acalEventStateKey") String acalEventStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1538 
1539     /**
1540      * Gets the valid AcalEvent States.
1541      *
1542      * @param contextInfo information containing the principalId and locale
1543      *                    information about the caller of service operation
1544      * @return a list of valid AcalEvent States
1545      * @throws InvalidParameterException contextInfo is not valid
1546      * @throws MissingParameterException contextInfo is missing or null
1547      * @throws OperationFailedException  unable to complete request
1548      * @throws PermissionDeniedException an authorization failure occurred
1549      */
1550     public List<StateInfo> getAcalEventStates(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1551 
1552     /**
1553      * Retrieves a single AcalEvent by an AcalEvent Id.
1554      *
1555      * @param acalEventId the identifier for the AcalEvent to be retrieved
1556      * @param contextInfo information containing the principalId and locale
1557      *                    information about the caller of service operation
1558      * @return the AcalEvent requested
1559      * @throws DoesNotExistException     acalEventIs is not found
1560      * @throws InvalidParameterException contextInfo isnot valid
1561      * @throws MissingParameterException acalEventKey or contextInfo is missing
1562      *                                   or null
1563      * @throws OperationFailedException  unable to complete request
1564      * @throws PermissionDeniedException an authorization failure occurred
1565      */
1566     public AcalEventInfo getAcalEvent(@WebParam(name = "acalEventId") String acalEventId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1567 
1568     /**
1569      * Retrieves a list AcalEvents from a list of AcalEvent Ids. The returned
1570      * list may be in any order and if duplicate Ids are supplied, a unique set
1571      * may or may not be returned.
1572      *
1573      * @param acalEventIds list of AcalEvent Ids
1574      * @param contextInfo  information containing the principalId and locale
1575      *                     information about the caller of service operation
1576      * @return a list of AcalEvents
1577      * @throws DoesNotExistException     an acalEventId in list was not found
1578      * @throws InvalidParameterException contextInfo is not valid
1579      * @throws MissingParameterException acalEventIds, an Id in acalEventIds, or
1580      *                                   contextInfo is missing or null
1581      * @throws OperationFailedException  unable to complete request
1582      * @throws PermissionDeniedException an authorization failure occurred
1583      */
1584     public List<AcalEventInfo> getAcalEventsByIds(@WebParam(name = "acalEventIds") List<String> acalEventIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1585 
1586     /**
1587      * Retrieves a list of AcalEvent Ids by Type.
1588      *
1589      * @param acalEventTypeKey an identifier for an AcalEvent Type
1590      * @param contextInfo      information containing the principalId and locale
1591      *                         information about the caller of service
1592      *                         operation
1593      * @return a list of AcalEvents matching acalEventTypeKey or an empty list
1594      *         if none found
1595      * @throws InvalidParameterException contextInfo is not valid
1596      * @throws MissingParameterException acalEventTypeKey or contextInfo is
1597      *                                   missing or null
1598      * @throws OperationFailedException  unable to complete request
1599      * @throws PermissionDeniedException an authorization failure occurred
1600      */
1601     public List<String> getAcalEventIdsByType(@WebParam(name = "acalEventTypeKey") String acalEventTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1602 
1603     /**
1604      * Retrieves a list of AcalEvents immediately mapped to an AcademicCalendar
1605      * ordered by date.
1606      *
1607      * @param academicCalendarId an identifier for an AcademicCalendar
1608      * @param contextInfo        information containing the principalId and
1609      *                           locale information about the caller of service
1610      *                           operation
1611      * @return a list of AcalEvents mapped to the given AcademicCalendar
1612      * @throws DoesNotExistException     academicCalendarId is not found
1613      * @throws InvalidParameterException contextInfo is not valid
1614      * @throws MissingParameterException academicCalendarId or contextInfo is
1615      *                                   missing or null
1616      * @throws OperationFailedException  unable to complete request
1617      * @throws PermissionDeniedException authorization failure
1618      */
1619     public List<AcalEventInfo> getAcalEventsForAcademicCalendar(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1620 
1621     /**
1622      * Retrieves a list of AcalEvents immediately mapped to an AcademicCalendar
1623      * that fall within the given date range inclusive ordered by date.
1624      *
1625      * @param academicCalendarId an identifier for an AcademicCalendar
1626      * @param startDate          the start of date range
1627      * @param endDate            the end of date range
1628      * @param contextInfo        information containing the principalId and
1629      *                           locale information about the caller of service
1630      *                           operation
1631      * @return a list of AcalEvents for the given AcademicCalendar in the given
1632      *         dates
1633      * @throws DoesNotExistException     academicCalendarId is not found
1634      * @throws InvalidParameterException contextInfo is not valid
1635      * @throws MissingParameterException academicCalendarId, startDate, endDate,
1636      *                                   or contextInfo is missing or null
1637      * @throws OperationFailedException  unable to complete request
1638      * @throws PermissionDeniedException authorization failure
1639      */
1640     public List<AcalEventInfo> getAcalEventsForAcademicCalendarByDate(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "startDate") Date startDate, @WebParam(name = "endDate") Date endDate, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1641 
1642     /**
1643      * Gets a list of AcalEvents impacted by a change to a given AcalEvent.
1644      * Rules may exist to calculate key dates based on a AcalEvent Type.
1645      * Management of these calculation rules are not at this time exposed in
1646      * this service.
1647      *
1648      * @param acalEventId an identifier for an AcalEvent
1649      * @param contextInfo information containing the principalId and locale
1650      *                    information about the caller of service operation
1651      * @return a list of AcalEvents impacted by the given AcalEvent
1652      * @throws DoesNotExistException     keyDateId is not found
1653      * @throws InvalidParameterException contextInfo is not valid
1654      * @throws MissingParameterException acalEventId or contextInfo is missing
1655      *                                   or null
1656      * @throws OperationFailedException  unable to complete request
1657      * @throws PermissionDeniedException an authorization failure occurred
1658      */
1659     public List<AcalEventInfo> getImpactedAcalEvents(@WebParam(name = "acalEventId") String acalEventId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1660 
1661     /**
1662      * Searches for AcalEvents that meet the given search criteria.
1663      *
1664      * @param criteria    the search criteria
1665      * @param contextInfo information containing the principalId and locale
1666      *                    information about the caller of service operation
1667      * @return a list of AcalEvent identifiers matching the criteria
1668      * @throws InvalidParameterException criteria or contextInfo is not valid
1669      * @throws MissingParameterException criteria or contextInfo is missing or
1670      *                                   null
1671      * @throws OperationFailedException  unable to complete request
1672      * @throws PermissionDeniedException an authorization failure occurred
1673      */
1674     public List<String> searchForAcalEventIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1675 
1676     /**
1677      * Searches for AcalEvents that meet the given search criteria.
1678      *
1679      * @param criteria    the search criteria
1680      * @param contextInfo information containing the principalId and locale
1681      *                    information about the caller of service operation
1682      * @return a list of AcalEvents matching the criteria
1683      * @throws InvalidParameterException criteria or contextInfo is not valid
1684      * @throws MissingParameterException criteria or contextInfo is missing or
1685      *                                   null
1686      * @throws OperationFailedException  unable to complete request
1687      * @throws PermissionDeniedException an authorization failure occurred
1688      */
1689     public List<AcalEventInfo> searchForAcalEvents(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1690 
1691     /**
1692      * Validates an AcalEvent. Depending on the value of validationType, this
1693      * validation could be limited to tests on just the current AcalEvent and
1694      * its directly contained subobjects or expanded to perform all tests
1695      * related to this AcalEvent. If an identifier is present for the AcalEvent
1696      * (and/or one of its contained sub-objects) and a record is found for that
1697      * identifier, the validation checks if the AcalEvent can be updated to the
1698      * new values. If an identifier is not present or a record does not exist,
1699      * the validation checks if the AcalEvent with the given data can be
1700      * created.
1701      *
1702      * @param validationTypeKey the identifier for the validation Type
1703      * @param termId            the identifier for the Term
1704      * @param acalEventTypeKey  the identifier for the AcalEvent Type to be
1705      *                          validated
1706      * @param acalEventInfo     the AcalEvent to be validated
1707      * @param contextInfo       information containing the principalId and
1708      *                          locale information about the caller of service
1709      *                          operation
1710      * @return a list of validation results or an empty list if validation
1711      *         succeeded
1712      * @throws DoesNotExistException     validationTypeKey, termId, or
1713      *                                   acalEventTypeKey is not found
1714      * @throws InvalidParameterException acalEventInfo or contextInfo is not
1715      *                                   valid
1716      * @throws MissingParameterException validationTypeKey, termId, acalEventTypeKey,
1717      *                                   acalEventInfo, or contextInfo is
1718      *                                   missing or null
1719      * @throws OperationFailedException  unable to complete request
1720      * @throws PermissionDeniedException an authorization failure occurred
1721      */
1722     public List<ValidationResultInfo> validateAcalEvent(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "termId") String termId, @WebParam(name = "acalEventTypeKey") String acalEventTypeKey, @WebParam(name = "acalEventInfo") AcalEventInfo acalEventInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1723 
1724     /**
1725      * Creates a new AcalEvent. The AcalEvent Id, Type, and Meta information may
1726      * not be set in the supplied data object.
1727      *
1728      * @param academicCalendarId the identifier for the AcademicCalendar in
1729      *                           which to create the AcalEvent
1730      * @param acalEventTypeKey   the identifier for the Type of AcalEvent to be
1731      *                           created
1732      * @param acalEventInfo      the data with which to create the AcalEvent
1733      * @param contextInfo        information containing the principalId and
1734      *                           locale information about the caller of service
1735      *                           operation
1736      * @return the new AcalEvent
1737      * @throws DataValidationErrorException supplied data is invalid
1738      * @throws DoesNotExistException        academicCalendarId is not found or
1739      *                                      acalEventTypeKey does not exist or
1740      *                                      is not supported
1741      * @throws InvalidParameterException    acalEventInfo or contextInfo is not
1742      *                                      valid
1743      * @throws MissingParameterException    academicCalendarId, acalEventTypeKey,
1744      *                                      acalEventInfo, or contextInfo is
1745      *                                      missing or null
1746      * @throws OperationFailedException     unable to complete request
1747      * @throws PermissionDeniedException    an authorization failure occurred
1748      * @throws ReadOnlyException            an attempt at supplying information
1749      *                                      designated as read only
1750      */
1751     public AcalEventInfo createAcalEvent(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "acalEventTypeKey") String acalEventTypeKey, @WebParam(name = "acalEventInfo") AcalEventInfo acalEventInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
1752 
1753     /**
1754      * Updates an existing AcalEvent. The AcalEvent Id, Type, and Meta
1755      * information may not be changed.
1756      *
1757      * @param acalEventId   the identifier for the AcalEvent to be updated
1758      * @param acalEventInfo the new data for the AcalEvent
1759      * @param contextInfo   information containing the principalId and locale
1760      *                      information about the caller of service operation
1761      * @return the updated AcalEvent
1762      * @throws DataValidationErrorException supplied data is invalid
1763      * @throws DoesNotExistException        AcalEventId is not found
1764      * @throws InvalidParameterException    acalEventInfo or contextInfo is not
1765      *                                      valid
1766      * @throws MissingParameterException    acalEventId, acalEventInfo, or
1767      *                                      contextInfo is missing or null
1768      * @throws OperationFailedException     unable to complete request
1769      * @throws PermissionDeniedException    an authorization failure occurred
1770      * @throws ReadOnlyException           an attempt at changing information
1771      *                                      deisgnated as read only
1772      * @throws VersionMismatchException     an optimistic locking failure or the
1773      *                                      action was attempted on an out of
1774      *                                      date version
1775      */
1776     public AcalEventInfo updateAcalEvent(@WebParam(name = "acalEventId") String acalEventId, @WebParam(name = "acalEventInfo") AcalEventInfo acalEventInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
1777 
1778     /**
1779      * Deletes an existing AcalEvent.
1780      *
1781      * @param acalEventId the identifier for the AcalEvent to be deleted
1782      * @param contextInfo information containing the principalId and locale
1783      *                    information about the caller of service operation
1784      * @return the status of the operation. This must always be true.
1785      * @throws DoesNotExistException     AcalEventId is not found
1786      * @throws InvalidParameterException contextInfo is not valid
1787      * @throws MissingParameterException acalEventId or contextInfo is missing
1788      *                                   or null
1789      * @throws OperationFailedException  unable to complete request
1790      * @throws PermissionDeniedException an authorization failure occurred
1791      */
1792     public StatusInfo deleteAcalEvent(@WebParam(name = "acalEventId") String acalEventId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1793 
1794     /**
1795      * Calculates the dates in the AcalEvent based on a rule attached to the
1796      * AcalEvent Type. If there is no rule available for the Type of the given
1797      * AcalEvent, then no changes to the AcalEvent occur.
1798      *
1799      * @param acalEventId an identifier for a AcalEvent
1800      * @param contextInfo information containing the principalId and locale
1801      *                    information about the caller of service operation
1802      * @return the AcalEvent with the calculated dates
1803      * @throws DoesNotExistException     acalEventId is not found
1804      * @throws InvalidParameterException contextInfo is not valid
1805      * @throws MissingParameterException acalEventId or contextInfo is missing
1806      *                                   or null
1807      * @throws OperationFailedException  unable to complete request
1808      * @throws PermissionDeniedException an authorization failure occurred
1809      */
1810     public AcalEventInfo calculateAcalEvent(@WebParam(name = "acalEventId") String acalEventId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1811 
1812     /**
1813      * Rerieves a Holiday Type by Type key.
1814      *
1815      * @param holidayTypeKey the key of a holiday Type
1816      * @param contextInfo    information containing the principalId and locale
1817      *                       information about the caller of service operation
1818      * @return the type requested
1819      * @throws DoesNotExistException     holidayTypeKey is not found
1820      * @throws InvalidParameterException contextInfo is not valid
1821      * @throws MissingParameterException holidayTypeKey or contextInfo is
1822      *                                   missing or null
1823      * @throws OperationFailedException  unable to complete request
1824      * @throws PermissionDeniedException an authorization failure occurred
1825      */
1826     public TypeInfo getHolidayType(@WebParam(name = "holidayTypeKey") String holidayTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1827 
1828     /**
1829      * Gets the valid Holiday types.
1830      *
1831      * @param contextInfo information containing the principalId and locale
1832      *                    information about the caller of service operation
1833      * @return a list of valid Holiday Types
1834      * @throws InvalidParameterException contextInfo is not value
1835      * @throws MissingParameterException contextInfo is missing or null
1836      * @throws OperationFailedException  unable to complete request
1837      * @throws PermissionDeniedException an authorization failure occurred
1838      */
1839     public List<TypeInfo> getHolidayTypes(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1840 
1841     /**
1842      * This method returns the valid Holiday Types for the given HolidayCalendar
1843      * Type.
1844      *
1845      * @param holidayCalendarTypeKey identifier for a HolidayCalendar Type
1846      * @param contextInfo            information containing the principalId and
1847      *                               locale information about the caller of
1848      *                               service operation
1849      * @return a list of valid Holiday Types
1850      * @throws DoesNotExistException     holidayCalendarTypeKey not found
1851      * @throws InvalidParameterException contextInfo is not valid
1852      * @throws MissingParameterException holidayCalendarTypeKey or contextInfo
1853      *                                   is missing or null
1854      * @throws OperationFailedException  unable to complete request
1855      * @throws PermissionDeniedException an authorization failure occurred
1856      */
1857     public List<TypeInfo> getHolidayTypesForHolidayCalendarType(@WebParam(name = "holidayCalendarTypeKey") String holidayCalendarTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1858 
1859     /**
1860      * Gets a Holiday State by key.
1861      *
1862      * @param holidayStateKey a key for a holiday State
1863      * @param contextInfo     information containing the principalId and locale
1864      *                        information about the caller of service operation
1865      * @return the Holiday State requested
1866      * @throws DoesNotExistException     holidayStateKey is not found
1867      * @throws InvalidParameterException contextInfo is invalid
1868      * @throws MissingParameterException holidayStateKey or contextInfo is
1869      *                                   missing or null
1870      * @throws OperationFailedException  unable to complete request
1871      * @throws PermissionDeniedException an authorization failure occurred
1872      */
1873     public StateInfo getHolidayState(@WebParam(name = "holidayStateKey") String holidayStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1874 
1875     /**
1876      * Gets the valid Holiday States.
1877      *
1878      * @param contextInfo information containing the principalId and locale
1879      *                    information about the caller of service operation
1880      * @return a list of valid Holiday States
1881      * @throws InvalidParameterException contextInfo is not valid
1882      * @throws MissingParameterException contextInfo is missing or null
1883      * @throws OperationFailedException  unable to complete request
1884      * @throws PermissionDeniedException an authorization failure occurred
1885      */
1886     public List<StateInfo> getHolidayStates(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1887 
1888     /**
1889      * Retrieves a single Holiday by a Holiday Id.
1890      *
1891      * @param holidayId   the identifier for the Holiday to be retrieved
1892      * @param contextInfo information containing the principalId and locale
1893      *                    information about the caller of service operation
1894      * @return the Holiday requested
1895      * @throws DoesNotExistException     holidayIs is not found
1896      * @throws InvalidParameterException contextInfo isnot valid
1897      * @throws MissingParameterException holidayId or contextInfo is missing or
1898      *                                   null
1899      * @throws OperationFailedException  unable to complete request
1900      * @throws PermissionDeniedException an authorization failure occurred
1901      */
1902     public HolidayInfo getHoliday(@WebParam(name = "holidayId") String holidayId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1903 
1904     /**
1905      * Retrieves a list Holidays from a list of Holiday Ids. The returned list
1906      * may be in any order and if duplicate Ids are supplied, a unique set may
1907      * or may not be returned.
1908      *
1909      * @param holidayIds  list of Holiday Ids
1910      * @param contextInfo information containing the principalId and locale
1911      *                    information about the caller of service operation
1912      * @return a list of Holidays
1913      * @throws DoesNotExistException     a holidayId in list was not found
1914      * @throws InvalidParameterException contextInfo is not valid
1915      * @throws MissingParameterException holidayIds, an Id in holidayIds, or
1916      *                                   contextInfo is missing or null
1917      * @throws OperationFailedException  unable to complete request
1918      * @throws PermissionDeniedException an authorization failure occurred
1919      */
1920     public List<HolidayInfo> getHolidaysByIds(@WebParam(name = "holidayIds") List<String> holidayIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1921 
1922     /**
1923      * Retrieves a list of Holiday Ids by Type.
1924      *
1925      * @param holidayTypeKey an identifier for an Holiday Type
1926      * @param contextInfo    information containing the principalId and locale
1927      *                       information about the caller of service operation
1928      * @return a list of Holidays matching holidayTypeKey or an empty list if
1929      *         none found
1930      * @throws DoesNotExistException     a holidayTypeKey was not found
1931      * @throws InvalidParameterException contextInfo is not valid
1932      * @throws MissingParameterException holidayTypeKey or contextInfo is
1933      *                                   missing or null
1934      * @throws OperationFailedException  unable to complete request
1935      * @throws PermissionDeniedException an authorization failure occurred
1936      */
1937     public List<String> getHolidayIdsByType(@WebParam(name = "holidayTypeKey") String holidayTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1938 
1939     /**
1940      * Retrieves a list of Holidays immediately mapped to a HolidayCalendar
1941      * ordered by date.
1942      *
1943      * @param holidayCalendarId an identifier for a HolidayCalendar
1944      * @param contextInfo       information containing the principalId and
1945      *                          locale information about the caller of service
1946      *                          operation
1947      * @return a list of Holidays mapped to the given HolidayCalendar
1948      * @throws DoesNotExistException     holidayCalendarId is not found
1949      * @throws InvalidParameterException contextInfo is not valid
1950      * @throws MissingParameterException holidayCalendarId or contextInfo is
1951      *                                   missing or null
1952      * @throws OperationFailedException  unable to complete request
1953      * @throws PermissionDeniedException authorization failure
1954      */
1955     public List<HolidayInfo> getHolidaysForHolidayCalendar(@WebParam(name = "holidayCalendarId") String holidayCalendarId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1956 
1957     /**
1958      * Retrieves a list of Holidays immediately mapped to a HolidayCalendar that
1959      * fall within the given date range inclusive ordered by date.
1960      *
1961      * @param holidayCalendarId an identifier for a HolidayCalendar
1962      * @param startDate         the start of date range
1963      * @param endDate           the end of date range
1964      * @param contextInfo       information containing the principalId and
1965      *                          locale information about the caller of service
1966      *                          operation
1967      * @return a list of Holidays for the given HolidayCalendar in the given
1968      *         dates
1969      * @throws DoesNotExistException     holidayCalendarId is not found
1970      * @throws InvalidParameterException contextInfo is not valid
1971      * @throws MissingParameterException holidayCalendarId, startDate, endDate,
1972      *                                   or contextInfo is missing or null
1973      * @throws OperationFailedException  unable to complete request
1974      * @throws PermissionDeniedException authorization failure
1975      */
1976     public List<HolidayInfo> getHolidaysForHolidayCalendarByDate(@WebParam(name = "holidayCalendarId") String holidayCalendarId, @WebParam(name = "startDate") Date startDate, @WebParam(name = "endDate") Date endDate, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1977 
1978     /**
1979      * Gets a list of holidays for a particular Academic Calendar further
1980      * qualified by the dates. Can be used to get holidays for a term or any
1981      * time period within the specified dates
1982      *
1983      * @param academicCalendarId an identifier for an Academic Calendar
1984      * @param startDate                  the start of date range
1985      * @param endDate                    the end of date range
1986      * @param contextInfo                information containing the principalId and
1987      *                                   locale information about the caller of service
1988      *                                   operation
1989      * @return a list of holidays for a particular Academic Calendar in the given dates
1990      * @throws DoesNotExistException     academicCalendarId is not found
1991      * @throws InvalidParameterException If the academicCalendarId is invalid or
1992      *                                   the dates are out of the range
1993      * @throws MissingParameterException Missing dates or academic Calendar Id
1994      * @throws OperationFailedException  unable to complete request for any
1995      *                                   reason
1996      * @throws PermissionDeniedException authorization failure
1997      */
1998     public List<HolidayInfo> getHolidaysByDateForAcademicCalendar(@WebParam(name = "academicCalendarId") String academicCalendarId, @WebParam(name = "startDate") Date startDate, @WebParam(name = "endDate") Date endDate, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1999 
2000     /**
2001      * Gets a list of Holidays impacted by a change to a given Holiday. Rules
2002      * may exist to calculate key dates based on a Holiday Type. Management of
2003      * these calculation rules are not at this time exposed in this service.
2004      *
2005      * @param holidayId   an identifier for a Holiday
2006      * @param contextInfo information containing the principalId and locale
2007      *                    information about the caller of service operation
2008      * @return a list of Holidays impacted by the given Holiday
2009      * @throws DoesNotExistException     keyDateId is not found
2010      * @throws InvalidParameterException contextInfo is not valid
2011      * @throws MissingParameterException holidayId or contextInfo is missing or
2012      *                                   null
2013      * @throws OperationFailedException  unable to complete request
2014      * @throws PermissionDeniedException an authorization failure occurred
2015      * @deprecated Holidays are to be calculated when calender is copied.
2016      */
2017     public List<HolidayInfo> getImpactedHolidays(@WebParam(name = "holidayId") String holidayId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2018 
2019     /**
2020      * Searches for Holidays that meet the given search criteria.
2021      *
2022      * @param criteria    the search criteria
2023      * @param contextInfo information containing the principalId and locale
2024      *                    information about the caller of service operation
2025      * @return a list of Holiday identifiers matching the criteria
2026      * @throws InvalidParameterException criteria or contextInfo is not valid
2027      * @throws MissingParameterException criteria or contextInfo is missing or
2028      *                                   null
2029      * @throws OperationFailedException  unable to complete request
2030      * @throws PermissionDeniedException an authorization failure occurred
2031      */
2032     public List<String> searchForHolidayIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2033 
2034     /**
2035      * Searches for Holidays that meet the given search criteria.
2036      *
2037      * @param criteria    the search criteria
2038      * @param contextInfo information containing the principalId and locale
2039      *                    information about the caller of service operation
2040      * @return a list of Holidays matching the criteria
2041      * @throws InvalidParameterException criteria or contextInfo is not valid
2042      * @throws MissingParameterException criteria or contextInfo is missing or
2043      *                                   null
2044      * @throws OperationFailedException  unable to complete request
2045      * @throws PermissionDeniedException an authorization failure occurred
2046      */
2047     public List<HolidayInfo> searchForHolidays(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2048 
2049     /**
2050      * Validates a Holiday. Depending on the value of validationType, this
2051      * validation could be limited to tests on just the current Holiday and its
2052      * directly contained subobjects or expanded to perform all tests related to
2053      * this Holiday. If an identifier is present for the Holiday (and/or one of
2054      * its contained sub-objects) and a record is found for that identifier, the
2055      * validation checks if the Holiday can be updated to the new values. If an
2056      * identifier is not present or a record does not exist, the validation
2057      * checks if the Holiday with the given data can be created.
2058      *
2059      * @param validationTypeKey the identifier for the validation Type
2060      * @param holidayCalendarId the identifier for the HolidayCalendar
2061      * @param holidayTypeKey    the identifier for the Holiday Type to be
2062      *                          validated
2063      * @param holidayInfo       the Holiday to be validated
2064      * @param contextInfo       information containing the principalId and
2065      *                          locale information about the caller of service
2066      *                          operation
2067      * @return a list of validation results or an empty list if validation
2068      *         succeeded
2069      * @throws DoesNotExistException     validationTypeKey, holidayCalendarId,
2070      *                                   or holidayTypeKey is not found
2071      * @throws InvalidParameterException holidayInfo or contextInfo is not
2072      *                                   valid
2073      * @throws MissingParameterException validationTypeKey, holidayCalendarId,
2074      *                                   holidayTypeKey, holidayInfo, or
2075      *                                   contextInfo is missing or null
2076      * @throws OperationFailedException  unable to complete request
2077      * @throws PermissionDeniedException an authorization failure occurred
2078      */
2079     public List<ValidationResultInfo> validateHoliday(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "holidayCalendarId") String holidayCalendarId, @WebParam(name = "holidayTypeKey") String holidayTypeKey, @WebParam(name = "holidayInfo") HolidayInfo holidayInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2080 
2081     /**
2082      * Creates a new Holiday. The Holiday Id, Type, and Meta information may not
2083      * be set in the supplied data object.
2084      *
2085      * @param holidayCalendarId the identifier for the HolidayCalendar in which
2086      *                          to create the Holiday
2087      * @param holidayTypeKey    the identifier for the Type of Holiday to be
2088      *                          created
2089      * @param holidayInfo       the data with which to create the Holiday
2090      * @param contextInfo       information containing the principalId and
2091      *                          locale information about the caller of service
2092      *                          operation
2093      * @return the new Holiday
2094      * @throws DataValidationErrorException supplied data is invalid
2095      * @throws DoesNotExistException        holidayCalendarId is not found or
2096      *                                      holidayTypeKey does not exist or is
2097      *                                      not supported
2098      * @throws InvalidParameterException    holidayInfo or contextInfo is not
2099      *                                      valid
2100      * @throws MissingParameterException    holidayCalendarId, holidayTypeKey,
2101      *                                      holidayInfo, or contextInfo is
2102      *                                      missing or null
2103      * @throws OperationFailedException     unable to complete request
2104      * @throws PermissionDeniedException    an authorization failure occurred
2105      * @throws ReadOnlyException            an attempt at supplying information
2106      *                                      designated as read only
2107      */
2108     public HolidayInfo createHoliday(@WebParam(name = "holidayCalendarId") String holidayCalendarId, @WebParam(name = "holidayTypeKey") String holidayTypeKey, @WebParam(name = "holidayInfo") HolidayInfo holidayInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
2109 
2110     /**
2111      * Updates an existing Holiday. The Holiday Id, Type, and Meta information
2112      * may not be changed.
2113      *
2114      * @param holidayId   the identifier for the Holiday to be updated
2115      * @param holidayInfo the new data for the Holiday
2116      * @param contextInfo information containing the principalId and locale
2117      *                    information about the caller of service operation
2118      * @return the updated Holiday
2119      * @throws DataValidationErrorException supplied data is invalid
2120      * @throws DoesNotExistException        HolidayId is not found
2121      * @throws InvalidParameterException    holidayInfo or contextInfo is not
2122      *                                      valid
2123      * @throws MissingParameterException    holidayId, holidayInfo, or
2124      *                                      contextInfo is missing or null
2125      * @throws OperationFailedException     unable to complete request
2126      * @throws PermissionDeniedException    an authorization failure occurred
2127      * @throws ReadOnlyException           an attempt at changing information
2128      *                                      deisgnated as read only
2129      * @throws VersionMismatchException     an optimistic locking failure or the
2130      *                                      action was attempted on an out of
2131      *                                      date version
2132      */
2133     public HolidayInfo updateHoliday(@WebParam(name = "holidayId") String holidayId, @WebParam(name = "holidayInfo") HolidayInfo holidayInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
2134 
2135     /**
2136      * Deletes an existing Holiday.
2137      *
2138      * @param holidayId   the identifier for the Holiday to be deleted
2139      * @param contextInfo information containing the principalId and locale
2140      *                    information about the caller of service operation
2141      * @return the status of the operation. This must always be true.
2142      * @throws DoesNotExistException     HolidayId is not found
2143      * @throws InvalidParameterException contextInfo is not valid
2144      * @throws MissingParameterException holidayId or contextInfo is missing or
2145      *                                   null
2146      * @throws OperationFailedException  unable to complete request
2147      * @throws PermissionDeniedException an authorization failure occurred
2148      */
2149     public StatusInfo deleteHoliday(@WebParam(name = "holidayId") String holidayId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2150 
2151     /**
2152      * Calculates the dates in the Holiday based on a rule attached to the
2153      * Holiday Type. If there is no rule available for the Type of the given
2154      * Holiday, then no changes to the Holiday occur.
2155      *
2156      * @param holidayId   an identifier for a Holiday
2157      * @param contextInfo information containing the principalId and locale
2158      *                    information about the caller of service operation
2159      * @return the Holiday with the calculated dates
2160      * @throws DoesNotExistException     holidayId is not found
2161      * @throws InvalidParameterException contextInfo is not valid
2162      * @throws MissingParameterException holidayId or contextInfo is missing or
2163      *                                   null
2164      * @throws OperationFailedException  unable to complete request
2165      * @throws PermissionDeniedException an authorization failure occurred
2166      * @deprecated Holidays are to be calculated when calender is copied.
2167      */
2168     public HolidayInfo calculateHoliday(@WebParam(name = "holidayId") String holidayId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2169 
2170     /**
2171      * Calculates the number of instructional days for a Term. The number of
2172      * instructional days is the number of class days in a Term minus the
2173      * non-instructional holidays on the related holiday calendar.
2174      *
2175      * @param termId      an identifier for a Term
2176      * @param contextInfo information containing the principalId and locale
2177      *                    information about the caller of service operation
2178      * @return the number of instructional days in the given Term
2179      * @throws DoesNotExistException     termId is not found
2180      * @throws InvalidParameterException contextInfo is not valid
2181      * @throws MissingParameterException termId or contextInfo is missing or
2182      *                                   null
2183      * @throws OperationFailedException  unable to complete request
2184      * @throws PermissionDeniedException authorization failure
2185      */
2186     public Integer getInstructionalDaysForTerm(@WebParam(name = "termId") String termId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2187 
2188     /**
2189      * Convenience method added for core-slice development to get a current
2190      * term. The method will be redesigned later to be more generic so that it
2191      * finds the unique term based on process key and academic calendar -
2192      * "current" is a misnomer.
2193      *
2194      * @param usageKey    we don't know what this means
2195      * @param contextInfo information containing the principalId and locale
2196      *                    information about the caller of service operation
2197      * @return a list of "current" Terms
2198      * @throws DoesNotExistException     usageKey is not found
2199      * @throws InvalidParameterException contextInfo is not valid
2200      * @throws MissingParameterException usageKey or contextInfo is missing or
2201      *                                   null
2202      * @throws OperationFailedException  unable to complete request
2203      * @throws PermissionDeniedException authorization failure
2204      * @deprecated This was a hack for core-slice but it is being used by
2205      *             MyPlan.
2206      */
2207     public List<TermInfo> getCurrentTerms(@WebParam(name = "usageKey") String usageKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2208 }