Coverage Report - org.kuali.student.core.atp.service.AtpService
 
Classes in this File Line Coverage Branch Coverage Complexity
AtpService
N/A
N/A
1
 
 1  
 /**
 2  
  * Copyright 2010 The Kuali Foundation Licensed under the
 3  
  * Educational Community License, Version 2.0 (the "License"); you may
 4  
  * not use this file except in compliance with the License. You may
 5  
  * obtain a copy of the License at
 6  
  *
 7  
  * http://www.osedu.org/licenses/ECL-2.0
 8  
  *
 9  
  * Unless required by applicable law or agreed to in writing,
 10  
  * software distributed under the License is distributed on an "AS IS"
 11  
  * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 12  
  * or implied. See the License for the specific language governing
 13  
  * permissions and limitations under the License.
 14  
  */
 15  
 
 16  
 package org.kuali.student.core.atp.service;
 17  
 
 18  
 import java.util.Date;
 19  
 import java.util.List;
 20  
 
 21  
 import javax.jws.WebParam;
 22  
 import javax.jws.WebService;
 23  
 import javax.jws.soap.SOAPBinding;
 24  
 
 25  
 import org.kuali.student.common.dictionary.service.DictionaryService;
 26  
 import org.kuali.student.common.dto.StatusInfo;
 27  
 import org.kuali.student.common.exceptions.AlreadyExistsException;
 28  
 import org.kuali.student.common.exceptions.DataValidationErrorException;
 29  
 import org.kuali.student.common.exceptions.DoesNotExistException;
 30  
 import org.kuali.student.common.exceptions.InvalidParameterException;
 31  
 import org.kuali.student.common.exceptions.MissingParameterException;
 32  
 import org.kuali.student.common.exceptions.OperationFailedException;
 33  
 import org.kuali.student.common.exceptions.PermissionDeniedException;
 34  
 import org.kuali.student.common.exceptions.VersionMismatchException;
 35  
 import org.kuali.student.common.search.service.SearchService;
 36  
 import org.kuali.student.common.validation.dto.ValidationResultInfo;
 37  
 import org.kuali.student.core.atp.dto.AtpDurationTypeInfo;
 38  
 import org.kuali.student.core.atp.dto.AtpInfo;
 39  
 import org.kuali.student.core.atp.dto.AtpSeasonalTypeInfo;
 40  
 import org.kuali.student.core.atp.dto.AtpTypeInfo;
 41  
 import org.kuali.student.core.atp.dto.DateRangeInfo;
 42  
 import org.kuali.student.core.atp.dto.DateRangeTypeInfo;
 43  
 import org.kuali.student.core.atp.dto.MilestoneInfo;
 44  
 import org.kuali.student.core.atp.dto.MilestoneTypeInfo;
 45  
 
 46  
 
 47  
 /**
 48  
  * <b>Academic Time Period Service Description and Assumptions</b>
 49  
  * <p>This service supports the management of Academic Time Periods and their associated Date Ranges and Milestones. The intent is to provide a flexible but structured way to define the various time frames that are used throughout the definition, offering and scheduling of Learning Units. This is a catalogue service with basic operations.</p>
 50  
  *
 51  
  */
 52  
 @WebService(name = "AtpService", targetNamespace = "http://student.kuali.org/wsdl/atp")
 53  
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 54  
 public interface AtpService extends SearchService, DictionaryService {
 55  
     /** 
 56  
      * Retrieves the list of academic time period types known by this service
 57  
      * @return list of academic time period types
 58  
      * @throws OperationFailedException unable to complete request
 59  
          */
 60  
     public List<AtpTypeInfo> getAtpTypes() throws OperationFailedException;
 61  
 
 62  
     /** 
 63  
      * Retrieves information about a particular academic time period type
 64  
      * @param atpTypeKey academic time period type identifier
 65  
      * @return academic time period type information
 66  
      * @throws DoesNotExistException specified atp type not found
 67  
      * @throws InvalidParameterException invalid atpTypeKey
 68  
      * @throws MissingParameterException atpTypeKey not specified
 69  
      * @throws OperationFailedException unable to complete request
 70  
          */
 71  
     public AtpTypeInfo getAtpType(@WebParam(name="atpTypeKey")String atpTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 72  
 
 73  
     /** 
 74  
      * Retrieves the list of Academic Time Period Seasonal Types known by this service
 75  
      * @return List of academic time period seasonal types
 76  
      * @throws OperationFailedException unable to complete request
 77  
          */
 78  
     public List<AtpSeasonalTypeInfo> getAtpSeasonalTypes() throws OperationFailedException;
 79  
 
 80  
     /** 
 81  
      * Retrieves information about a particular academic time period seasonal type
 82  
      * @param atpSeasonalTypeKey academic time period seasonal type identifier
 83  
      * @return academic time period seasonal type information
 84  
      * @throws DoesNotExistException specified atp seasonal type not found
 85  
      * @throws InvalidParameterException invalid atpSeasonalTypeKey
 86  
      * @throws MissingParameterException atpSeasonalTypeKey not specified
 87  
      * @throws OperationFailedException unable to complete request
 88  
          */
 89  
     public AtpSeasonalTypeInfo getAtpSeasonalType(@WebParam(name="atpSeasonalTypeKey")String atpSeasonalTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 90  
 
 91  
     /** 
 92  
      * Retrieves the list of Academic Time Period Duration Types known by this service
 93  
      * @return List of academic time period duration types
 94  
      * @throws OperationFailedException unable to complete request
 95  
          */
 96  
     public List<AtpDurationTypeInfo> getAtpDurationTypes() throws OperationFailedException;
 97  
 
 98  
     /** 
 99  
      * Retrieves information about a particular academic time period duration type
 100  
      * @param atpDurationTypeKey academic time period duration type identifier
 101  
      * @return academic time period duration type information
 102  
      * @throws DoesNotExistException specified atp duration type not found
 103  
      * @throws InvalidParameterException invalid atpDurationTypeKey
 104  
      * @throws MissingParameterException atpDurationTypeKey not specified
 105  
      * @throws OperationFailedException unable to complete request
 106  
          */
 107  
     public AtpDurationTypeInfo getAtpDurationType(@WebParam(name="atpDurationTypeKey")String atpDurationTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 108  
 
 109  
     /** 
 110  
      * Retrieves the list of milestone types known by this service
 111  
      * @return List of milestone types
 112  
      * @throws OperationFailedException unable to complete request
 113  
          */
 114  
     public List<MilestoneTypeInfo> getMilestoneTypes() throws OperationFailedException;
 115  
 
 116  
     /** 
 117  
      * Retrieves information about a particular milestone type
 118  
      * @param milestoneTypeKey milestone type identifier
 119  
      * @return milestone type information
 120  
      * @throws DoesNotExistException specified milestone type not found
 121  
      * @throws InvalidParameterException invalid milestoneTypeKey
 122  
      * @throws MissingParameterException milestoneTypeKey not specified
 123  
      * @throws OperationFailedException unable to complete request
 124  
          */
 125  
     public MilestoneTypeInfo getMilestoneType(@WebParam(name="milestoneTypeKey")String milestoneTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 126  
 
 127  
     /** 
 128  
      * Retrieves the list of milestone types that are defined for a particular Atp Type
 129  
      * @param atpTypeKey atpTypeKey
 130  
      * @return List of milestone types
 131  
      * @throws DoesNotExistException specified atpTypeKey not found
 132  
      * @throws InvalidParameterException invalid atpTypeKey
 133  
      * @throws MissingParameterException atpTypeKey not specified
 134  
      * @throws OperationFailedException unable to complete request
 135  
          */
 136  
     public List<MilestoneTypeInfo> getMilestoneTypesForAtpType(@WebParam(name="atpTypeKey")String atpTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 137  
 
 138  
     /** 
 139  
      * Retrieves the list of date range types known by this service
 140  
      * @return List of date range types
 141  
      * @throws OperationFailedException unable to complete request
 142  
          */
 143  
     public List<DateRangeTypeInfo> getDateRangeTypes() throws OperationFailedException;
 144  
 
 145  
     /** 
 146  
      * Retrieves information about a particular date range type
 147  
      * @param dateRangeTypeKey date range type identifier
 148  
      * @return date range type information
 149  
      * @throws DoesNotExistException specified date range type not found
 150  
      * @throws InvalidParameterException invalid dateRangeTypeKey
 151  
      * @throws MissingParameterException dateRangeTypeKey not specified
 152  
      * @throws OperationFailedException unable to complete request
 153  
          */
 154  
     public DateRangeTypeInfo getDateRangeType(@WebParam(name="dateRangeTypeKey")String dateRangeTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 155  
 
 156  
     /** 
 157  
      * Retrieves the list of dateRange types that are defined for a particular Atp Type
 158  
      * @param atpTypeKey atpTypeKey
 159  
      * @return List of milestone types
 160  
      * @throws DoesNotExistException specified atpTypeKey not found
 161  
      * @throws InvalidParameterException invalid atpTypeKey
 162  
      * @throws MissingParameterException atpTypeKey not specified
 163  
      * @throws OperationFailedException unable to complete request
 164  
          */
 165  
     public List<DateRangeTypeInfo> getDateRangeTypesForAtpType(@WebParam(name="atpTypeKey")String atpTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 166  
 
 167  
     /** 
 168  
      * Validates an academic time period. Depending on the value of validationType, this validation could be limited to tests on just the current object and its directly contained subobjects or expanded to perform all tests related to this object. If an identifier is present for the academic time period and a record is found for that identifier, the validation checks if the academic time period can be shifted to the new values. If a record cannot be found for the identifier, it is assumed that the record does not exist and as such, the checks performed will be much shallower, typically mimicking those performed by setting the validationType to the current object. This is a slightly different pattern from the standard validation as the caller provides the identifier in the create statement instead of the server assigning an identifier.
 169  
      * @param validationType Identifier of the extent of validation
 170  
      * @param atpInfo The academic time period information to be tested.
 171  
      * @return Results from performing the validation
 172  
      * @throws DoesNotExistException validationTypeKey not found
 173  
      * @throws InvalidParameterException invalid validationTypeKey, atpInfo
 174  
      * @throws MissingParameterException missing validationTypeKey, atpInfo
 175  
      * @throws OperationFailedException unable to complete request
 176  
          */
 177  
     public List<ValidationResultInfo> validateAtp(@WebParam(name="validationType")String validationType, @WebParam(name="atpInfo")AtpInfo atpInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 178  
 
 179  
     /** 
 180  
      * Validates a milestone. Depending on the value of validationType, this validation could be limited to tests on just the current object and its directly contained subobjects or expanded to perform all tests related to this object. If an identifier is present for the milestone and a record is found for that identifier, the validation checks if the milestone can be shifted to the new values. If a record cannot be found for the identifier, it is assumed that the record does not exist and as such, the checks performed will be much shallower, typically mimicking those performed by setting the validationType to the current object. This is a slightly different pattern from the standard validation as the caller provides the identifier in the create statement instead of the server assigning an identifier.
 181  
      * @param validationType Identifier of the extent of validation
 182  
      * @param milestoneInfo The milestone information to be tested.
 183  
      * @return Results from performing the validation
 184  
      * @throws DoesNotExistException validationTypeKey not found
 185  
      * @throws InvalidParameterException invalid validationTypeKey, milestoneInfo
 186  
      * @throws MissingParameterException missing validationTypeKey, milestoneInfo
 187  
      * @throws OperationFailedException unable to complete request
 188  
          */
 189  
     public List<ValidationResultInfo> validateMilestone(@WebParam(name="validationType")String validationType, @WebParam(name="milestoneInfo")MilestoneInfo milestoneInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 190  
 
 191  
     /** 
 192  
      * Validates a date range. Depending on the value of validationType, this validation could be limited to tests on just the current object and its directly contained subobjects or expanded to perform all tests related to this object. If an identifier is present for the date range and a record is found for that identifier, the validation checks if the academic time period can be shifted to the new values. If a record cannot be found for the identifier, it is assumed that the record does not exist and as such, the checks performed will be much shallower, typically mimicking those performed by setting the validationType to the current object. This is a slightly different pattern from the standard validation as the caller provides the identifier in the create statement instead of the server assigning an identifier.
 193  
      * @param validationType Identifier of the extent of validation
 194  
      * @param dateRangeInfo The date range information to be tested.
 195  
      * @return Results from performing the validation
 196  
      * @throws DoesNotExistException validationTypeKey not found
 197  
      * @throws InvalidParameterException invalid validationTypeKey, dateRangeInfo
 198  
      * @throws MissingParameterException missing validationTypeKey, dateRangeInfo
 199  
      * @throws OperationFailedException unable to complete request
 200  
          */
 201  
     public List<ValidationResultInfo> validateDateRange(@WebParam(name="validationType")String validationType, @WebParam(name="dateRangeInfo")DateRangeInfo dateRangeInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 202  
 
 203  
     /** 
 204  
      * Retrieves the details of a single Academic Time Period by atpKey
 205  
      * @param atpKey Unique key of the Academic Time Period to be retrieved
 206  
      * @return Details of the Academic Time Period requested
 207  
      * @throws DoesNotExistException atpKey not found
 208  
      * @throws InvalidParameterException invalid atpKey
 209  
      * @throws MissingParameterException invalid atpKey
 210  
      * @throws OperationFailedException unable to complete request
 211  
          */
 212  
     public AtpInfo getAtp(@WebParam(name="atpKey")String atpKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 213  
 
 214  
     /** 
 215  
      * Retrieves the list of Academic Time Periods that the supplied date falls within
 216  
      * @param searchDate Timestamp to be matched
 217  
      * @return List of Academic Time Periods that contain the supplied searchDate
 218  
      * @throws InvalidParameterException invalid searchDate
 219  
      * @throws MissingParameterException invalid searchDate
 220  
      * @throws OperationFailedException unable to complete request
 221  
          */
 222  
     public List<AtpInfo> getAtpsByDate(@WebParam(name="searchDate")Date searchDate) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 223  
 
 224  
     /** 
 225  
      * Retrieves the list of Academic Time Periods that are totally contained within the supplied dates. The entire Atp falls within the supplied dates
 226  
      * @param startDate Earliest Timestamp
 227  
      * @param endDate Latest Timestamp
 228  
      * @return List of Academic Time Periods that contain the supplied searchDate
 229  
      * @throws InvalidParameterException invalid searchDate
 230  
      * @throws MissingParameterException invalid searchDate
 231  
      * @throws OperationFailedException unable to complete request
 232  
          */
 233  
     public List<AtpInfo> getAtpsByDates(@WebParam(name="startDate")Date startDate, @WebParam(name="endDate")Date endDate) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 234  
 
 235  
     /** 
 236  
      * Retrieves a list of Academic Time Periods of the specified type
 237  
      * @param atpTypeKey ATP type to be retrieved
 238  
      * @return List of Academic Time Periods that contain the supplied date
 239  
      * @throws InvalidParameterException invalid atpTypeKey
 240  
      * @throws MissingParameterException invalid atpTypeKey
 241  
      * @throws OperationFailedException unable to complete request
 242  
          */
 243  
     public List<AtpInfo> getAtpsByAtpType(@WebParam(name="atpTypeKey")String atpTypeKey) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 244  
 
 245  
     /** 
 246  
      * Retrieves the details of the specified milestone
 247  
      * @param milestoneKey Unique id of the milestone to be retrieved
 248  
      * @return Details of requested milestone
 249  
      * @throws DoesNotExistException milestoneKey not found
 250  
      * @throws InvalidParameterException invalid milestoneKey
 251  
      * @throws MissingParameterException invalid milestoneKey
 252  
      * @throws OperationFailedException unable to complete request
 253  
          */
 254  
     public MilestoneInfo getMilestone(@WebParam(name="milestoneKey")String milestoneKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 255  
 
 256  
     /** 
 257  
      * Retrieves the list of milestones for a specified Academic Time Period
 258  
      * @param atpKey Unique key of the Academic Time Period to be retieved
 259  
      * @return List of milestones for this Academic Time Period
 260  
      * @throws InvalidParameterException invalid atpKey
 261  
      * @throws MissingParameterException invalid atpKey
 262  
      * @throws OperationFailedException unable to complete request
 263  
          */
 264  
     public List<MilestoneInfo> getMilestonesByAtp(@WebParam(name="atpKey")String atpKey) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 265  
 
 266  
     /** 
 267  
      * Retrieves the list of milestones that fall within a specified set of dates
 268  
      * @param startDate Start Date for date span
 269  
      * @param endDate End Date for date span
 270  
      * @return List of milestones that fall within this set of dates
 271  
      * @throws InvalidParameterException One or more parameters invalid
 272  
      * @throws MissingParameterException One or more parameter(s) missing
 273  
      * @throws OperationFailedException unable to complete request
 274  
          */
 275  
     public List<MilestoneInfo> getMilestonesByDates(@WebParam(name="startDate")Date startDate, @WebParam(name="endDate")Date endDate) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 276  
 
 277  
     /** 
 278  
      * Retrieves a list of milestones of a specified type that fall within a specified set of dates
 279  
      * @param milestoneTypeKey Milestone type to be retrieved
 280  
      * @param startDate Start Date for date range
 281  
      * @param endDate End Date for date range
 282  
      * @return List of milestones of this milestone type within this set of dates
 283  
      * @throws InvalidParameterException One or more parameters invalid
 284  
      * @throws MissingParameterException One or more parameters missing
 285  
      * @throws OperationFailedException unable to complete request
 286  
          */
 287  
     public List<MilestoneInfo> getMilestonesByDatesAndType(@WebParam(name="milestoneTypeKey")String milestoneTypeKey, @WebParam(name="startDate")Date startDate, @WebParam(name="endDate")Date endDate) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 288  
 
 289  
     /** 
 290  
      * Retrieves the details of the specified daterange
 291  
      * @param dateRangeKey Unique id of the date range to be retrieved
 292  
      * @return Details of requested daterange
 293  
      * @throws DoesNotExistException dateRangeKey not found
 294  
      * @throws InvalidParameterException invalid dateRangeKey
 295  
      * @throws MissingParameterException missing dateRangeKey
 296  
      * @throws OperationFailedException unable to complete request
 297  
          */
 298  
     public DateRangeInfo getDateRange(@WebParam(name="dateRangeKey")String dateRangeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 299  
 
 300  
     /** 
 301  
      * Retrieves the list of DateRanges for a specified Academic Time Period
 302  
      * @param atpKey Unique key of the Academic Time Period to be retieved
 303  
      * @return List of dateRanges for this Academic Time Period
 304  
      * @throws InvalidParameterException invalid atpKey
 305  
      * @throws MissingParameterException invalid atpKey
 306  
      * @throws OperationFailedException unable to complete request
 307  
          */
 308  
     public List<DateRangeInfo> getDateRangesByAtp(@WebParam(name="atpKey")String atpKey) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 309  
 
 310  
     /** 
 311  
      * Retrieves the list of DateRanges which encompass the specified date
 312  
      * @param searchDate Timestamp to be matched
 313  
      * @return List of dateRanges that contain the supplied searchDate
 314  
      * @throws InvalidParameterException invalid searchDate
 315  
      * @throws MissingParameterException invalid searchDate
 316  
      * @throws OperationFailedException unable to complete request
 317  
          */
 318  
     public List<DateRangeInfo> getDateRangesByDate(@WebParam(name="searchDate")Date searchDate) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 319  
 
 320  
     /** 
 321  
      * Creates a new Academic Time Period
 322  
      * @param atpTypeKey Type of ATP to be created
 323  
      * @param atpKey Key of ATP to be created
 324  
      * @param atpInfo Details of ATP to be created
 325  
      * @return Details of ATP just created
 326  
      * @throws AlreadyExistsException ATP being created already exists
 327  
      * @throws DataValidationErrorException One or more values invalid for this operation
 328  
      * @throws InvalidParameterException One or more parameters invalid
 329  
      * @throws MissingParameterException One or more parameters missing
 330  
      * @throws OperationFailedException unable to complete request
 331  
      * @throws PermissionDeniedException authorization failure
 332  
          */
 333  
     public AtpInfo createAtp(@WebParam(name="atpTypeKey")String atpTypeKey, @WebParam(name="atpKey")String atpKey, @WebParam(name="atpInfo")AtpInfo atpInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 334  
 
 335  
     /** 
 336  
      * Updates an existing Academic Time Period
 337  
      * @param atpKey Key of ATP to be updated
 338  
      * @param atpInfo Details of updates to ATP being updated
 339  
      * @return Details of ATP just updated
 340  
      * @throws DataValidationErrorException One or more values invalid for this operation
 341  
      * @throws DoesNotExistException ATP being updated does not exist
 342  
      * @throws InvalidParameterException One or more parameters invalid
 343  
      * @throws MissingParameterException One or more parameters missing
 344  
      * @throws OperationFailedException unable to complete request
 345  
      * @throws PermissionDeniedException authorization failure
 346  
      * @throws VersionMismatchException The action was attempted on an out of date version.
 347  
          */
 348  
     public AtpInfo updateAtp(@WebParam(name="atpKey")String atpKey, @WebParam(name="atpInfo")AtpInfo atpInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 349  
 
 350  
     /** 
 351  
      * Deletes an existing Academic Time Period
 352  
      * @param atpKey Key of ATP to be deleted
 353  
      * @return status of the operation (success, failed)
 354  
      * @throws DoesNotExistException ATP being deleted does not exist
 355  
      * @throws InvalidParameterException One or more parameters invalid
 356  
      * @throws MissingParameterException One or more parameters missing
 357  
      * @throws OperationFailedException unable to complete request
 358  
      * @throws PermissionDeniedException authorization failure
 359  
          */
 360  
     public StatusInfo deleteAtp(@WebParam(name="atpKey")String atpKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 361  
 
 362  
     /** 
 363  
      * Add a new milestone to an existing Academic Time Period
 364  
      * @param atpKey Key of ATP to be updated
 365  
      * @param milestoneKey Id of milestone to be added
 366  
      * @param milestoneInfo Details of milestone to be added
 367  
      * @return Details of the newly created milestone
 368  
      * @throws AlreadyExistsException Milestone being added already exists
 369  
      * @throws DataValidationErrorException One or more values invalid for this operation
 370  
      * @throws InvalidParameterException One or more parameters invalid
 371  
      * @throws MissingParameterException One or more parameters missing
 372  
      * @throws OperationFailedException unable to complete request
 373  
      * @throws PermissionDeniedException authorization failure
 374  
          */
 375  
     public MilestoneInfo addMilestone(@WebParam(name="atpKey")String atpKey, @WebParam(name="milestoneKey")String milestoneKey, @WebParam(name="milestoneInfo")MilestoneInfo milestoneInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 376  
 
 377  
     /** 
 378  
      * Updates an existing milestone.
 379  
      * @param milestoneKey ID of milestone to be updated
 380  
      * @param milestoneInfo Details of milestone to be updated
 381  
      * @return Details of the updated milestone
 382  
      * @throws DataValidationErrorException One or more values invalid for this operation
 383  
      * @throws DoesNotExistException Milestone being updated does not exist
 384  
      * @throws InvalidParameterException One or more parameters invalid
 385  
      * @throws MissingParameterException One or more parameters missing
 386  
      * @throws OperationFailedException unable to complete request
 387  
      * @throws PermissionDeniedException authorization failure
 388  
      * @throws VersionMismatchException The action was attempted on an out of date version.
 389  
          */
 390  
     public MilestoneInfo updateMilestone(@WebParam(name="milestoneKey")String milestoneKey, @WebParam(name="milestoneInfo")MilestoneInfo milestoneInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 391  
 
 392  
     /** 
 393  
      * Removes an existing milestone.
 394  
      * @param milestoneKey Id of milestone to be removed
 395  
      * @return Status of the operation (success, failed)
 396  
      * @throws DoesNotExistException Milestone being removed does not exist
 397  
      * @throws InvalidParameterException One or more parameters invalid
 398  
      * @throws MissingParameterException One or more parameters missing
 399  
      * @throws OperationFailedException unable to complete request
 400  
      * @throws PermissionDeniedException authorization failure
 401  
          */
 402  
     public StatusInfo removeMilestone(@WebParam(name="milestoneKey")String milestoneKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 403  
 
 404  
     /** 
 405  
      * Adds a new dateRange to an existing Academic Time Period
 406  
      * @param atpKey key of the ATP to be associated with the dateRange
 407  
      * @param dateRangeKey identifier of the dateRange to be added
 408  
      * @param dateRangeInfo details of the dateRange to be added
 409  
      * @return details of the newly created dateRange
 410  
      * @throws AlreadyExistsException dateRange being added already exists
 411  
      * @throws DataValidationErrorException one or more values invalid for this operation
 412  
      * @throws InvalidParameterException one or more parameters invalid
 413  
      * @throws MissingParameterException one or more parameters missing
 414  
      * @throws OperationFailedException unable to complete request
 415  
      * @throws PermissionDeniedException authorization failure
 416  
          */
 417  
     public DateRangeInfo addDateRange(@WebParam(name="atpKey")String atpKey, @WebParam(name="dateRangeKey")String dateRangeKey, @WebParam(name="dateRangeInfo")DateRangeInfo dateRangeInfo) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 418  
 
 419  
     /** 
 420  
      * Updates an existing daterange
 421  
      * @param dateRangeKey identifier of daterange to be updated
 422  
      * @param dateRangeInfo details of daterange to be updated
 423  
      * @return details of the updated dateRange
 424  
      * @throws DataValidationErrorException One or more values invalid for this operation
 425  
      * @throws DoesNotExistException dateRange being updated does not exist
 426  
      * @throws InvalidParameterException one or more parameters invalid
 427  
      * @throws MissingParameterException one or more parameters missing
 428  
      * @throws OperationFailedException unable to complete request
 429  
      * @throws PermissionDeniedException authorization failure
 430  
      * @throws VersionMismatchException action was attempted on an out of date version.
 431  
          */
 432  
     public DateRangeInfo updateDateRange(@WebParam(name="dateRangeKey")String dateRangeKey, @WebParam(name="dateRangeInfo")DateRangeInfo dateRangeInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 433  
 
 434  
     /** 
 435  
      * Removes an existing daterange.
 436  
      * @param dateRangeKey key of daterange to be removed
 437  
      * @return status of the operation (success, failed)
 438  
      * @throws DoesNotExistException DateRange being removed does not exist
 439  
      * @throws InvalidParameterException One or more parameters invalid
 440  
      * @throws MissingParameterException One or more parameters missing
 441  
      * @throws OperationFailedException unable to complete request
 442  
      * @throws PermissionDeniedException authorization failure
 443  
          */
 444  
     public StatusInfo removeDateRange(@WebParam(name="dateRangeKey")String dateRangeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 445  
 
 446  
 }