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.core.atp.dto.AtpDurationTypeInfo;
 26  
 import org.kuali.student.core.atp.dto.AtpInfo;
 27  
 import org.kuali.student.core.atp.dto.AtpSeasonalTypeInfo;
 28  
 import org.kuali.student.core.atp.dto.AtpTypeInfo;
 29  
 import org.kuali.student.core.atp.dto.DateRangeInfo;
 30  
 import org.kuali.student.core.atp.dto.DateRangeTypeInfo;
 31  
 import org.kuali.student.core.atp.dto.MilestoneInfo;
 32  
 import org.kuali.student.core.atp.dto.MilestoneTypeInfo;
 33  
 import org.kuali.student.core.dto.StatusInfo;
 34  
 import org.kuali.student.core.exceptions.AlreadyExistsException;
 35  
 import org.kuali.student.core.exceptions.DataValidationErrorException;
 36  
 import org.kuali.student.core.exceptions.DoesNotExistException;
 37  
 import org.kuali.student.core.exceptions.InvalidParameterException;
 38  
 import org.kuali.student.core.exceptions.MissingParameterException;
 39  
 import org.kuali.student.core.exceptions.OperationFailedException;
 40  
 import org.kuali.student.core.exceptions.PermissionDeniedException;
 41  
 import org.kuali.student.core.exceptions.VersionMismatchException;
 42  
 import org.kuali.student.core.search.service.SearchService;
 43  
 import org.kuali.student.core.validation.dto.ValidationResultInfo;
 44  
 
 45  
 
 46  
 /**
 47  
  * <b>Academic Time Period Service Description and Assumptions</b>
 48  
  * <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>
 49  
  *
 50  
  */
 51  
 @WebService(name = "AtpService", targetNamespace = "http://student.kuali.org/wsdl/atp")
 52  
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 53  
 public interface AtpService extends SearchService {
 54  
     /** 
 55  
      * Retrieves the list of academic time period types known by this service
 56  
      * @return list of academic time period types
 57  
      * @throws OperationFailedException unable to complete request
 58  
          */
 59  
     public List<AtpTypeInfo> getAtpTypes() throws OperationFailedException;
 60  
 
 61  
     /** 
 62  
      * Retrieves information about a particular academic time period type
 63  
      * @param atpTypeKey academic time period type identifier
 64  
      * @return academic time period type information
 65  
      * @throws DoesNotExistException specified atp type not found
 66  
      * @throws InvalidParameterException invalid atpTypeKey
 67  
      * @throws MissingParameterException atpTypeKey not specified
 68  
      * @throws OperationFailedException unable to complete request
 69  
          */
 70  
     public AtpTypeInfo getAtpType(@WebParam(name="atpTypeKey")String atpTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 71  
 
 72  
     /** 
 73  
      * Retrieves the list of Academic Time Period Seasonal Types known by this service
 74  
      * @return List of academic time period seasonal types
 75  
      * @throws OperationFailedException unable to complete request
 76  
          */
 77  
     public List<AtpSeasonalTypeInfo> getAtpSeasonalTypes() throws OperationFailedException;
 78  
 
 79  
     /** 
 80  
      * Retrieves information about a particular academic time period seasonal type
 81  
      * @param atpSeasonalTypeKey academic time period seasonal type identifier
 82  
      * @return academic time period seasonal type information
 83  
      * @throws DoesNotExistException specified atp seasonal type not found
 84  
      * @throws InvalidParameterException invalid atpSeasonalTypeKey
 85  
      * @throws MissingParameterException atpSeasonalTypeKey not specified
 86  
      * @throws OperationFailedException unable to complete request
 87  
          */
 88  
     public AtpSeasonalTypeInfo getAtpSeasonalType(@WebParam(name="atpSeasonalTypeKey")String atpSeasonalTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 89  
 
 90  
     /** 
 91  
      * Retrieves the list of Academic Time Period Duration Types known by this service
 92  
      * @return List of academic time period duration types
 93  
      * @throws OperationFailedException unable to complete request
 94  
          */
 95  
     public List<AtpDurationTypeInfo> getAtpDurationTypes() throws OperationFailedException;
 96  
 
 97  
     /** 
 98  
      * Retrieves information about a particular academic time period duration type
 99  
      * @param atpDurationTypeKey academic time period duration type identifier
 100  
      * @return academic time period duration type information
 101  
      * @throws DoesNotExistException specified atp duration type not found
 102  
      * @throws InvalidParameterException invalid atpDurationTypeKey
 103  
      * @throws MissingParameterException atpDurationTypeKey not specified
 104  
      * @throws OperationFailedException unable to complete request
 105  
          */
 106  
     public AtpDurationTypeInfo getAtpDurationType(@WebParam(name="atpDurationTypeKey")String atpDurationTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 107  
 
 108  
     /** 
 109  
      * Retrieves the list of milestone types known by this service
 110  
      * @return List of milestone types
 111  
      * @throws OperationFailedException unable to complete request
 112  
          */
 113  
     public List<MilestoneTypeInfo> getMilestoneTypes() throws OperationFailedException;
 114  
 
 115  
     /** 
 116  
      * Retrieves information about a particular milestone type
 117  
      * @param milestoneTypeKey milestone type identifier
 118  
      * @return milestone type information
 119  
      * @throws DoesNotExistException specified milestone type not found
 120  
      * @throws InvalidParameterException invalid milestoneTypeKey
 121  
      * @throws MissingParameterException milestoneTypeKey not specified
 122  
      * @throws OperationFailedException unable to complete request
 123  
          */
 124  
     public MilestoneTypeInfo getMilestoneType(@WebParam(name="milestoneTypeKey")String milestoneTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 125  
 
 126  
     /** 
 127  
      * Retrieves the list of milestone types that are defined for a particular Atp Type
 128  
      * @param atpTypeKey atpTypeKey
 129  
      * @return List of milestone types
 130  
      * @throws DoesNotExistException specified atpTypeKey not found
 131  
      * @throws InvalidParameterException invalid atpTypeKey
 132  
      * @throws MissingParameterException atpTypeKey not specified
 133  
      * @throws OperationFailedException unable to complete request
 134  
          */
 135  
     public List<MilestoneTypeInfo> getMilestoneTypesForAtpType(@WebParam(name="atpTypeKey")String atpTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 136  
 
 137  
     /** 
 138  
      * Retrieves the list of date range types known by this service
 139  
      * @return List of date range types
 140  
      * @throws OperationFailedException unable to complete request
 141  
          */
 142  
     public List<DateRangeTypeInfo> getDateRangeTypes() throws OperationFailedException;
 143  
 
 144  
     /** 
 145  
      * Retrieves information about a particular date range type
 146  
      * @param dateRangeTypeKey date range type identifier
 147  
      * @return date range type information
 148  
      * @throws DoesNotExistException specified date range type not found
 149  
      * @throws InvalidParameterException invalid dateRangeTypeKey
 150  
      * @throws MissingParameterException dateRangeTypeKey not specified
 151  
      * @throws OperationFailedException unable to complete request
 152  
          */
 153  
     public DateRangeTypeInfo getDateRangeType(@WebParam(name="dateRangeTypeKey")String dateRangeTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 154  
 
 155  
     /** 
 156  
      * Retrieves the list of dateRange types that are defined for a particular Atp Type
 157  
      * @param atpTypeKey atpTypeKey
 158  
      * @return List of milestone types
 159  
      * @throws DoesNotExistException specified atpTypeKey not found
 160  
      * @throws InvalidParameterException invalid atpTypeKey
 161  
      * @throws MissingParameterException atpTypeKey not specified
 162  
      * @throws OperationFailedException unable to complete request
 163  
          */
 164  
     public List<DateRangeTypeInfo> getDateRangeTypesForAtpType(@WebParam(name="atpTypeKey")String atpTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 165  
 
 166  
     /** 
 167  
      * 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.
 168  
      * @param validationType Identifier of the extent of validation
 169  
      * @param atpInfo The academic time period information to be tested.
 170  
      * @return Results from performing the validation
 171  
      * @throws DoesNotExistException validationTypeKey not found
 172  
      * @throws InvalidParameterException invalid validationTypeKey, atpInfo
 173  
      * @throws MissingParameterException missing validationTypeKey, atpInfo
 174  
      * @throws OperationFailedException unable to complete request
 175  
          */
 176  
     public List<ValidationResultInfo> validateAtp(@WebParam(name="validationType")String validationType, @WebParam(name="atpInfo")AtpInfo atpInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 177  
 
 178  
     /** 
 179  
      * 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.
 180  
      * @param validationType Identifier of the extent of validation
 181  
      * @param milestoneInfo The milestone information to be tested.
 182  
      * @return Results from performing the validation
 183  
      * @throws DoesNotExistException validationTypeKey not found
 184  
      * @throws InvalidParameterException invalid validationTypeKey, milestoneInfo
 185  
      * @throws MissingParameterException missing validationTypeKey, milestoneInfo
 186  
      * @throws OperationFailedException unable to complete request
 187  
          */
 188  
     public List<ValidationResultInfo> validateMilestone(@WebParam(name="validationType")String validationType, @WebParam(name="milestoneInfo")MilestoneInfo milestoneInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 189  
 
 190  
     /** 
 191  
      * 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.
 192  
      * @param validationType Identifier of the extent of validation
 193  
      * @param dateRangeInfo The date range information to be tested.
 194  
      * @return Results from performing the validation
 195  
      * @throws DoesNotExistException validationTypeKey not found
 196  
      * @throws InvalidParameterException invalid validationTypeKey, dateRangeInfo
 197  
      * @throws MissingParameterException missing validationTypeKey, dateRangeInfo
 198  
      * @throws OperationFailedException unable to complete request
 199  
          */
 200  
     public List<ValidationResultInfo> validateDateRange(@WebParam(name="validationType")String validationType, @WebParam(name="dateRangeInfo")DateRangeInfo dateRangeInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 201  
 
 202  
     /** 
 203  
      * Retrieves the details of a single Academic Time Period by atpKey
 204  
      * @param atpKey Unique key of the Academic Time Period to be retrieved
 205  
      * @return Details of the Academic Time Period requested
 206  
      * @throws DoesNotExistException atpKey not found
 207  
      * @throws InvalidParameterException invalid atpKey
 208  
      * @throws MissingParameterException invalid atpKey
 209  
      * @throws OperationFailedException unable to complete request
 210  
          */
 211  
     public AtpInfo getAtp(@WebParam(name="atpKey")String atpKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 212  
 
 213  
     /** 
 214  
      * Retrieves the list of Academic Time Periods that the supplied date falls within
 215  
      * @param searchDate Timestamp to be matched
 216  
      * @return List of Academic Time Periods that contain the supplied searchDate
 217  
      * @throws InvalidParameterException invalid searchDate
 218  
      * @throws MissingParameterException invalid searchDate
 219  
      * @throws OperationFailedException unable to complete request
 220  
          */
 221  
     public List<AtpInfo> getAtpsByDate(@WebParam(name="searchDate")Date searchDate) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 222  
 
 223  
     /** 
 224  
      * Retrieves the list of Academic Time Periods that are totally contained within the supplied dates. The entire Atp falls within the supplied dates
 225  
      * @param startDate Earliest Timestamp
 226  
      * @param endDate Latest Timestamp
 227  
      * @return List of Academic Time Periods that contain the supplied searchDate
 228  
      * @throws InvalidParameterException invalid searchDate
 229  
      * @throws MissingParameterException invalid searchDate
 230  
      * @throws OperationFailedException unable to complete request
 231  
          */
 232  
     public List<AtpInfo> getAtpsByDates(@WebParam(name="startDate")Date startDate, @WebParam(name="endDate")Date endDate) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 233  
 
 234  
     /** 
 235  
      * Retrieves a list of Academic Time Periods of the specified type
 236  
      * @param atpTypeKey ATP type to be retrieved
 237  
      * @return List of Academic Time Periods that contain the supplied date
 238  
      * @throws InvalidParameterException invalid atpTypeKey
 239  
      * @throws MissingParameterException invalid atpTypeKey
 240  
      * @throws OperationFailedException unable to complete request
 241  
          */
 242  
     public List<AtpInfo> getAtpsByAtpType(@WebParam(name="atpTypeKey")String atpTypeKey) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 243  
 
 244  
     /** 
 245  
      * Retrieves the details of the specified milestone
 246  
      * @param milestoneKey Unique id of the milestone to be retrieved
 247  
      * @return Details of requested milestone
 248  
      * @throws DoesNotExistException milestoneKey not found
 249  
      * @throws InvalidParameterException invalid milestoneKey
 250  
      * @throws MissingParameterException invalid milestoneKey
 251  
      * @throws OperationFailedException unable to complete request
 252  
          */
 253  
     public MilestoneInfo getMilestone(@WebParam(name="milestoneKey")String milestoneKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 254  
 
 255  
     /** 
 256  
      * Retrieves the list of milestones for a specified Academic Time Period
 257  
      * @param atpKey Unique key of the Academic Time Period to be retieved
 258  
      * @return List of milestones for this Academic Time Period
 259  
      * @throws InvalidParameterException invalid atpKey
 260  
      * @throws MissingParameterException invalid atpKey
 261  
      * @throws OperationFailedException unable to complete request
 262  
          */
 263  
     public List<MilestoneInfo> getMilestonesByAtp(@WebParam(name="atpKey")String atpKey) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 264  
 
 265  
     /** 
 266  
      * Retrieves the list of milestones that fall within a specified set of dates
 267  
      * @param startDate Start Date for date span
 268  
      * @param endDate End Date for date span
 269  
      * @return List of milestones that fall within this set of dates
 270  
      * @throws InvalidParameterException One or more parameters invalid
 271  
      * @throws MissingParameterException One or more parameter(s) missing
 272  
      * @throws OperationFailedException unable to complete request
 273  
          */
 274  
     public List<MilestoneInfo> getMilestonesByDates(@WebParam(name="startDate")Date startDate, @WebParam(name="endDate")Date endDate) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 275  
 
 276  
     /** 
 277  
      * Retrieves a list of milestones of a specified type that fall within a specified set of dates
 278  
      * @param milestoneTypeKey Milestone type to be retrieved
 279  
      * @param startDate Start Date for date range
 280  
      * @param endDate End Date for date range
 281  
      * @return List of milestones of this milestone type within this set of dates
 282  
      * @throws InvalidParameterException One or more parameters invalid
 283  
      * @throws MissingParameterException One or more parameters missing
 284  
      * @throws OperationFailedException unable to complete request
 285  
          */
 286  
     public List<MilestoneInfo> getMilestonesByDatesAndType(@WebParam(name="milestoneTypeKey")String milestoneTypeKey, @WebParam(name="startDate")Date startDate, @WebParam(name="endDate")Date endDate) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 287  
 
 288  
     /** 
 289  
      * Retrieves the details of the specified daterange
 290  
      * @param dateRangeKey Unique id of the date range to be retrieved
 291  
      * @return Details of requested daterange
 292  
      * @throws DoesNotExistException dateRangeKey not found
 293  
      * @throws InvalidParameterException invalid dateRangeKey
 294  
      * @throws MissingParameterException missing dateRangeKey
 295  
      * @throws OperationFailedException unable to complete request
 296  
          */
 297  
     public DateRangeInfo getDateRange(@WebParam(name="dateRangeKey")String dateRangeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 298  
 
 299  
     /** 
 300  
      * Retrieves the list of DateRanges for a specified Academic Time Period
 301  
      * @param atpKey Unique key of the Academic Time Period to be retieved
 302  
      * @return List of dateRanges for this Academic Time Period
 303  
      * @throws InvalidParameterException invalid atpKey
 304  
      * @throws MissingParameterException invalid atpKey
 305  
      * @throws OperationFailedException unable to complete request
 306  
          */
 307  
     public List<DateRangeInfo> getDateRangesByAtp(@WebParam(name="atpKey")String atpKey) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 308  
 
 309  
     /** 
 310  
      * Retrieves the list of DateRanges which encompass the specified date
 311  
      * @param searchDate Timestamp to be matched
 312  
      * @return List of dateRanges that contain the supplied searchDate
 313  
      * @throws InvalidParameterException invalid searchDate
 314  
      * @throws MissingParameterException invalid searchDate
 315  
      * @throws OperationFailedException unable to complete request
 316  
          */
 317  
     public List<DateRangeInfo> getDateRangesByDate(@WebParam(name="searchDate")Date searchDate) throws InvalidParameterException, MissingParameterException, OperationFailedException;
 318  
 
 319  
     /** 
 320  
      * Creates a new Academic Time Period
 321  
      * @param atpTypeKey Type of ATP to be created
 322  
      * @param atpKey Key of ATP to be created
 323  
      * @param atpInfo Details of ATP to be created
 324  
      * @return Details of ATP just created
 325  
      * @throws AlreadyExistsException ATP being created already exists
 326  
      * @throws DataValidationErrorException One or more values invalid for this operation
 327  
      * @throws InvalidParameterException One or more parameters invalid
 328  
      * @throws MissingParameterException One or more parameters missing
 329  
      * @throws OperationFailedException unable to complete request
 330  
      * @throws PermissionDeniedException authorization failure
 331  
          */
 332  
     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;
 333  
 
 334  
     /** 
 335  
      * Updates an existing Academic Time Period
 336  
      * @param atpKey Key of ATP to be updated
 337  
      * @param atpInfo Details of updates to ATP being updated
 338  
      * @return Details of ATP just updated
 339  
      * @throws DataValidationErrorException One or more values invalid for this operation
 340  
      * @throws DoesNotExistException ATP being updated does not exist
 341  
      * @throws InvalidParameterException One or more parameters invalid
 342  
      * @throws MissingParameterException One or more parameters missing
 343  
      * @throws OperationFailedException unable to complete request
 344  
      * @throws PermissionDeniedException authorization failure
 345  
      * @throws VersionMismatchException The action was attempted on an out of date version.
 346  
          */
 347  
     public AtpInfo updateAtp(@WebParam(name="atpKey")String atpKey, @WebParam(name="atpInfo")AtpInfo atpInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 348  
 
 349  
     /** 
 350  
      * Deletes an existing Academic Time Period
 351  
      * @param atpKey Key of ATP to be deleted
 352  
      * @return status of the operation (success, failed)
 353  
      * @throws DoesNotExistException ATP being deleted does not exist
 354  
      * @throws InvalidParameterException One or more parameters invalid
 355  
      * @throws MissingParameterException One or more parameters missing
 356  
      * @throws OperationFailedException unable to complete request
 357  
      * @throws PermissionDeniedException authorization failure
 358  
          */
 359  
     public StatusInfo deleteAtp(@WebParam(name="atpKey")String atpKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 360  
 
 361  
     /** 
 362  
      * Add a new milestone to an existing Academic Time Period
 363  
      * @param atpKey Key of ATP to be updated
 364  
      * @param milestoneKey Id of milestone to be added
 365  
      * @param milestoneInfo Details of milestone to be added
 366  
      * @return Details of the newly created milestone
 367  
      * @throws AlreadyExistsException Milestone being added already exists
 368  
      * @throws DataValidationErrorException One or more values invalid for this operation
 369  
      * @throws InvalidParameterException One or more parameters invalid
 370  
      * @throws MissingParameterException One or more parameters missing
 371  
      * @throws OperationFailedException unable to complete request
 372  
      * @throws PermissionDeniedException authorization failure
 373  
          */
 374  
     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;
 375  
 
 376  
     /** 
 377  
      * Updates an existing milestone.
 378  
      * @param milestoneKey ID of milestone to be updated
 379  
      * @param milestoneInfo Details of milestone to be updated
 380  
      * @return Details of the updated milestone
 381  
      * @throws DataValidationErrorException One or more values invalid for this operation
 382  
      * @throws DoesNotExistException Milestone being updated does not exist
 383  
      * @throws InvalidParameterException One or more parameters invalid
 384  
      * @throws MissingParameterException One or more parameters missing
 385  
      * @throws OperationFailedException unable to complete request
 386  
      * @throws PermissionDeniedException authorization failure
 387  
      * @throws VersionMismatchException The action was attempted on an out of date version.
 388  
          */
 389  
     public MilestoneInfo updateMilestone(@WebParam(name="milestoneKey")String milestoneKey, @WebParam(name="milestoneInfo")MilestoneInfo milestoneInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 390  
 
 391  
     /** 
 392  
      * Removes an existing milestone.
 393  
      * @param milestoneKey Id of milestone to be removed
 394  
      * @return Status of the operation (success, failed)
 395  
      * @throws DoesNotExistException Milestone being removed does not exist
 396  
      * @throws InvalidParameterException One or more parameters invalid
 397  
      * @throws MissingParameterException One or more parameters missing
 398  
      * @throws OperationFailedException unable to complete request
 399  
      * @throws PermissionDeniedException authorization failure
 400  
          */
 401  
     public StatusInfo removeMilestone(@WebParam(name="milestoneKey")String milestoneKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 402  
 
 403  
     /** 
 404  
      * Adds a new dateRange to an existing Academic Time Period
 405  
      * @param atpKey key of the ATP to be associated with the dateRange
 406  
      * @param dateRangeKey identifier of the dateRange to be added
 407  
      * @param dateRangeInfo details of the dateRange to be added
 408  
      * @return details of the newly created dateRange
 409  
      * @throws AlreadyExistsException dateRange being added already exists
 410  
      * @throws DataValidationErrorException one or more values invalid for this operation
 411  
      * @throws InvalidParameterException one or more parameters invalid
 412  
      * @throws MissingParameterException one or more parameters missing
 413  
      * @throws OperationFailedException unable to complete request
 414  
      * @throws PermissionDeniedException authorization failure
 415  
          */
 416  
     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;
 417  
 
 418  
     /** 
 419  
      * Updates an existing daterange
 420  
      * @param dateRangeKey identifier of daterange to be updated
 421  
      * @param dateRangeInfo details of daterange to be updated
 422  
      * @return details of the updated dateRange
 423  
      * @throws DataValidationErrorException One or more values invalid for this operation
 424  
      * @throws DoesNotExistException dateRange being updated does not exist
 425  
      * @throws InvalidParameterException one or more parameters invalid
 426  
      * @throws MissingParameterException one or more parameters missing
 427  
      * @throws OperationFailedException unable to complete request
 428  
      * @throws PermissionDeniedException authorization failure
 429  
      * @throws VersionMismatchException action was attempted on an out of date version.
 430  
          */
 431  
     public DateRangeInfo updateDateRange(@WebParam(name="dateRangeKey")String dateRangeKey, @WebParam(name="dateRangeInfo")DateRangeInfo dateRangeInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 432  
 
 433  
     /** 
 434  
      * Removes an existing daterange.
 435  
      * @param dateRangeKey key of daterange to be removed
 436  
      * @return status of the operation (success, failed)
 437  
      * @throws DoesNotExistException DateRange being removed does not exist
 438  
      * @throws InvalidParameterException One or more parameters invalid
 439  
      * @throws MissingParameterException One or more parameters missing
 440  
      * @throws OperationFailedException unable to complete request
 441  
      * @throws PermissionDeniedException authorization failure
 442  
          */
 443  
     public StatusInfo removeDateRange(@WebParam(name="dateRangeKey")String dateRangeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 444  
 
 445  
 }