Coverage Report - org.kuali.student.r2.core.exemption.service.ExemptionService
 
Classes in this File Line Coverage Branch Coverage Complexity
ExemptionService
N/A
N/A
1
 
 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  
  *
 6  
  * http://www.osedu.org/licenses/ECL-2.0
 7  
  *
 8  
  * Unless required by applicable law or agreed to in writing, software
 9  
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 10  
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 11  
  * License for the specific language governing permissions and limitations under
 12  
  * the License.
 13  
  */
 14  
 package org.kuali.student.r2.core.exemption.service;
 15  
 
 16  
 import java.util.Date;
 17  
 import java.util.List;
 18  
 
 19  
 import javax.jws.WebParam;
 20  
 import javax.jws.WebService;
 21  
 import javax.jws.soap.SOAPBinding;
 22  
 
 23  
 import org.kuali.student.r2.core.exemption.dto.ExemptionInfo;
 24  
 import org.kuali.student.r2.core.exemption.dto.ExemptionRequestInfo;
 25  
 
 26  
 
 27  
 import org.kuali.student.r2.common.dto.ContextInfo;
 28  
 import org.kuali.student.r2.common.dto.StatusInfo;
 29  
 import org.kuali.student.r2.common.dto.ValidationResultInfo;
 30  
 
 31  
 import org.kuali.student.r2.common.exceptions.AlreadyExistsException;
 32  
 import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
 33  
 import org.kuali.student.r2.common.exceptions.DoesNotExistException;
 34  
 import org.kuali.student.r2.common.exceptions.InvalidParameterException;
 35  
 import org.kuali.student.r2.common.exceptions.MissingParameterException;
 36  
 import org.kuali.student.r2.common.exceptions.OperationFailedException;
 37  
 import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
 38  
 import org.kuali.student.r2.common.exceptions.VersionMismatchException;
 39  
 import org.kuali.student.r2.common.util.constants.ExemptionServiceConstants;
 40  
 
 41  
 /**
 42  
  * Version: DRAFT - NOT READY FOR RELEASE.
 43  
  *
 44  
  * The Exemption service stores information to permit a person to be exempted
 45  
  * from the enforcement of a restriction, deadline, or statement.
 46  
  *
 47  
  * The service begins with creating an ExemptionRequest for a person. On
 48  
  * approval of an ExemptionRequest, one or more Exemptions are created. There
 49  
  * are several types of Exemptions. Exemption types govern what data is stored
 50  
  * in the Exemption structure. Current types include:
 51  
  *
 52  
  * Date Exemption: overrides a Milestone in ATP with a Date Milestone Exemption:
 53  
  * overrides a Milestone in ATP with another Milestone
 54  
  *
 55  
  * The Exemption stores the fact that an exemption has been granted. The
 56  
  * interpretation and enforcment of the exemption is performed by the caller of
 57  
  * this service. The Exemption service provides the information to override a
 58  
  * specific check that occurs somewhere in the system based on one of the above
 59  
  * Exemption types.
 60  
  *
 61  
  * @author tom
 62  
  * @since Tue Jun 21 14:22:34 EDT 2011
 63  
  */
 64  
 @WebService(name = "ExemptionService", targetNamespace = ExemptionServiceConstants.NAMESPACE)
 65  
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 66  
 public interface ExemptionService {
 67  
 
 68  
     ////
 69  
     //// CRUD Request
 70  
     //// 
 71  
     /**
 72  
      * Validates an ExemptionRequest. Depending on the value of validationType,
 73  
      * this validation could be limited to tests on just the current object and
 74  
      * its directly contained subobjects or expanded to perform all tests
 75  
      * related to this object. If an identifier is present for the exemption
 76  
      * request and a record is found for that identifier, the validation checks
 77  
      * if the exemption request can be shifted to the new values. If a record
 78  
      * cannot be found for the identifier, it is assumed that the record does
 79  
      * not exist and as such, the checks performed will be much shallower,
 80  
      * typically mimicking those performed by setting the validationType to the
 81  
      * current object. This is a slightly different pattern from the standard
 82  
      * validation as the caller provides the identifier in the create statement
 83  
      * instead of the server assigning an identifier.
 84  
      *
 85  
      * @param validationTypeKey Identifier of the extent of validation
 86  
      * @param exemptionRequestInfo the exemption request information to be
 87  
      * tested.
 88  
      * @param context Context information containing the principalId and locale
 89  
      * information about the caller of service operation
 90  
      * @return the results from performing the validation
 91  
      * @throws DoesNotExistException validationTypeKey not found
 92  
      * @throws InvalidParameterException invalid validationTypeKey,
 93  
      * exemptionRequestInfo
 94  
      * @throws MissingParameterException missing validationTypeKey,
 95  
      * exemptionRequestInfo
 96  
      * @throws OperationFailedException unable to complete request
 97  
      */
 98  
     public List<ValidationResultInfo> validateExemptionRequest(@WebParam(name = "validationTypeKey") String validationTypeKey,
 99  
             @WebParam(name = "exemptionRequestInfo") ExemptionRequestInfo exemptionRequestInfo,
 100  
             @WebParam(name = "context") ContextInfo context)
 101  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 102  
 
 103  
     /**
 104  
      * Creates a new Exemption Request.
 105  
      *
 106  
      * @param personId id of the person for whom the exemption is requested
 107  
      * @param exemptionRequestTypeKey type of request
 108  
      * @param exemptionRequestInfo Details of the Exemption Request to be
 109  
      * created
 110  
      * @param context Context information containing the principalId and locale
 111  
      * information about the caller of service operation
 112  
      * @return the details of the Exemption Requst just created
 113  
      * @throws AlreadyExistsException the Exemption Request being created
 114  
      * already exists
 115  
      * @throws DataValidationErrorException One or more values invalid for this
 116  
      * operation
 117  
      * @throws InvalidParameterException One or more parameters invalid
 118  
      * @throws MissingParameterException One or more parameters missing
 119  
      * @throws OperationFailedException unable to complete request
 120  
      * @throws PermissionDeniedException authorization failure
 121  
      */
 122  
     public ExemptionRequestInfo createExemptionRequest(@WebParam(name = "personId") String personId,
 123  
             @WebParam(name = "exemptionRequestTypeKey") String exemptionRequestTypeKey,
 124  
             @WebParam(name = "exemptionRequestInfo") ExemptionRequestInfo exemptionRequestInfo,
 125  
             @WebParam(name = "context") ContextInfo context)
 126  
             throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 127  
 
 128  
     /**
 129  
      * Updates an existing Exemption Request.
 130  
      *
 131  
      * @param exemptionRequestId Id of Exemption Request to be updated
 132  
      * @param exemptionRequestInfo Details of updates to the Exemption Request
 133  
      * being updated
 134  
      * @param context Context information containing the principalId and locale
 135  
      * information about the caller of service operation
 136  
      * @return the details of Exemption Request just updated
 137  
      * @throws DataValidationErrorException One or more values invalid for this
 138  
      * operation
 139  
      * @throws DoesNotExistException the Exemption Request does not exist
 140  
      * @throws InvalidParameterException One or more parameters invalid
 141  
      * @throws MissingParameterException One or more parameters missing
 142  
      * @throws OperationFailedException unable to complete request
 143  
      * @throws PermissionDeniedException authorization failure
 144  
      * @throws VersionMismatchException The action was attempted on an out of
 145  
      * date version.
 146  
      */
 147  
     public ExemptionRequestInfo updateExemptionRequest(@WebParam(name = "exemptionRequestId") String exemptionRequestId,
 148  
             @WebParam(name = "exemptionRequestInfo") ExemptionRequestInfo exemptionRequestInfo,
 149  
             @WebParam(name = "context") ContextInfo context)
 150  
             throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 151  
 
 152  
     /**
 153  
      * Deletes an existing Exemption Request record.
 154  
      *
 155  
      * @param exemptionRequestId the Id of the Exemption Request to be deleted
 156  
      * @param context Context information containing the principalId and locale
 157  
      * information about the caller of service operation
 158  
      * @return status of the operation (success, failed)
 159  
      * @throws DoesNotExistException the Exemption Request does not exist
 160  
      * @throws InvalidParameterException One or more parameters invalid
 161  
      * @throws MissingParameterException One or more parameters missing
 162  
      * @throws OperationFailedException unable to complete request
 163  
      * @throws PermissionDeniedException authorization failure
 164  
      */
 165  
     public StatusInfo deleteExemptionRequest(@WebParam(name = "exemptionRequestId") String exemptionRequestId,
 166  
             @WebParam(name = "context") ContextInfo context)
 167  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 168  
 
 169  
     /**
 170  
      * Retrieves the details of a single ExemptionRequest by a exemption Id.
 171  
      *
 172  
      * @param exemptionRequestId Unique Id of the ExemptionRequest to be
 173  
      * retrieved
 174  
      * @param context Context information containing the principalId and locale
 175  
      * information about the caller of service operation
 176  
      * @return the details of the ExemptionRequest requested
 177  
      * @throws DoesNotExistException exemptionRequestId not found
 178  
      * @throws InvalidParameterException invalid exemptionRequestId
 179  
      * @throws MissingParameterException missing exemptionRequestId
 180  
      * @throws OperationFailedException unable to complete request
 181  
      * @throws PermissionDeniedException authorization failure
 182  
      */
 183  
     public ExemptionRequestInfo getExemptionRequest(@WebParam(name = "exemptionRequestId") String exemptionRequestId,
 184  
             @WebParam(name = "context") ContextInfo context)
 185  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 186  
 
 187  
     /**
 188  
      * Retrieves a list ExemptionRequests corresponding to a list of exemption
 189  
      * request Ids.
 190  
      *
 191  
      * @param exemptionRequestIds list of unique Ids of the ExemptionRequests to
 192  
      * be retrieved
 193  
      * @param context Context information containing the principalId and locale
 194  
      * information about the caller of service operation
 195  
      * @return a list of ExemptionRequests
 196  
      * @throws DoesNotExistException an exemptionRequestId in list not found
 197  
      * @throws InvalidParameterException invalid exemptionRequestId in list
 198  
      * @throws MissingParameterException missing exemptionRequestIds
 199  
      * @throws OperationFailedException unable to complete request
 200  
      * @throws PermissionDeniedException authorization failure
 201  
      */
 202  
     public List<ExemptionRequestInfo> getExemptionRequestsByIds(@WebParam(name = "exemptionRequestIds") List<String> exemptionRequestIds,
 203  
             @WebParam(name = "context") ContextInfo context)
 204  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 205  
 
 206  
     /**
 207  
      * Retrieves a list Exemption Request Ids by Type.
 208  
      *
 209  
      * @param exemptionRequestTypeKey a unique key for an exemption requestType
 210  
      * @param context Context information containing the principalId and locale
 211  
      * information about the caller of service operation
 212  
      * @return a list of Exemptions
 213  
      * @throws DoesNotExistException an exemptionId in list not found
 214  
      * @throws InvalidParameterException invalid parameter
 215  
      * @throws MissingParameterException missing parameter
 216  
      * @throws OperationFailedException unable to complete request
 217  
      * @throws PermissionDeniedException authorization failure
 218  
      */
 219  
     public List<String> getExemptionRequestIdsByType(@WebParam(name = "exemptionRequestTypeKey") String exemptionRequestTypeKey,
 220  
             @WebParam(name = "context") ContextInfo context)
 221  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 222  
 
 223  
     ////
 224  
     //// request getters
 225  
     ////
 226  
     /**
 227  
      * Gets a list of all exemption requests for a Person.
 228  
      *
 229  
      * @param personId a unique Id of the Person
 230  
      * @param context Context information containing the principalId and locale
 231  
      * information about the caller of service operation
 232  
      * @return a list of Exemptions
 233  
      * @throws InvalidParameterException invalid parameter
 234  
      * @throws MissingParameterException missing parameter
 235  
      * @throws OperationFailedException unable to complete request
 236  
      * @throws PermissionDeniedException authorization failure
 237  
      */
 238  
     public List<ExemptionRequestInfo> getRequestsForPerson(@WebParam(name = "personId") String personId,
 239  
             @WebParam(name = "context") ContextInfo context)
 240  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 241  
 
 242  
     /**
 243  
      * Gets a list of all exemption requests by Type for a Person.
 244  
      *
 245  
      * @param typeKey an exemption Type
 246  
      * @param personId a unique Id of the Person
 247  
      * @param context Context information containing the principalId and locale
 248  
      * information about the caller of service operation
 249  
      * @return a list of Exemptions
 250  
      * @throws InvalidParameterException invalid parameter
 251  
      * @throws MissingParameterException missing parameter
 252  
      * @throws OperationFailedException unable to complete request
 253  
      * @throws PermissionDeniedException authorization failure
 254  
      */
 255  
     public List<ExemptionRequestInfo> getRequestsByTypeForPerson(@WebParam(name = "typeKey") String typeKey,
 256  
             @WebParam(name = "personId") String personId,
 257  
             @WebParam(name = "context") ContextInfo context)
 258  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 259  
 
 260  
     /**
 261  
      * Retrieves a list Exemption Request Ids by Check Key.
 262  
      *
 263  
      * @param checkKey a unique key for a Check
 264  
      * @param context Context information containing the principalId and locale
 265  
      * information about the caller of service operation
 266  
      * @return a list of Exemptions
 267  
      * @throws InvalidParameterException invalid parameter
 268  
      * @throws MissingParameterException missing parameter
 269  
      * @throws OperationFailedException unable to complete request
 270  
      * @throws PermissionDeniedException authorization failure
 271  
      */
 272  
     public List<String> getExemptionRequestIdsByCheck(@WebParam(name = "checkKey") String checkKey,
 273  
             @WebParam(name = "context") ContextInfo context)
 274  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 275  
 
 276  
   
 277  
 
 278  
     ////
 279  
     ////  standard crud methods for exemption
 280  
     //// 
 281  
     /**
 282  
      * Validates an Exemption. Depending on the value of validationType, this
 283  
      * validation could be limited to tests on just the current object and its
 284  
      * directly contained subobjects or expanded to perform all tests related to
 285  
      * this object. If an identifier is present for the exemption and a record
 286  
      * is found for that identifier, the validation checks if the exemption can
 287  
      * be shifted to the new values. If a record cannot be found for the
 288  
      * identifier, it is assumed that the record does not exist and as such, the
 289  
      * checks performed will be much shallower, typically mimicking those
 290  
      * performed by setting the validationType to the current object. This is a
 291  
      * slightly different pattern from the standard validation as the caller
 292  
      * provides the identifier in the create statement instead of the server
 293  
      * assigning an identifier.
 294  
      *
 295  
      * @param validationTypeKey Identifier of the extent of validation
 296  
      * @param exemptionInfo the exemption information to be tested.
 297  
      * @param context Context information containing the principalId and locale
 298  
      * information about the caller of service operation
 299  
      * @return the results from performing the validation
 300  
      * @throws DoesNotExistException validationTypeKey not found
 301  
      * @throws InvalidParameterException invalid validationTypeKey,
 302  
      * exemptionInfo
 303  
      * @throws MissingParameterException missing validationTypeKey,
 304  
      * exemptionInfo
 305  
      * @throws OperationFailedException unable to complete request
 306  
      */
 307  
     public List<ValidationResultInfo> validateExemption(@WebParam(name = "validationTypeKey") String validationTypeKey,
 308  
             @WebParam(name = "exemptionInfo") ExemptionInfo exemptionInfo,
 309  
             @WebParam(name = "context") ContextInfo context)
 310  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 311  
 
 312  
     /**
 313  
      * Creates a new Exemption. Exemptions can only be created off of an
 314  
      * exemption request.
 315  
      *
 316  
      * @param exemptionRequestId an Id for an exemption request
 317  
      * @param exemptionTypeKey type key identifying the type of the exemption
 318  
      * @param exemptionInfo Details of the Exemption to be created
 319  
      * @param context Context information containing the principalId and locale
 320  
      * information about the caller of service operation
 321  
      * @return the details of the Exemption just created
 322  
      * @throws AlreadyExistsException the Exemption being created already exists
 323  
      * @throws DataValidationErrorException One or more values invalid for this
 324  
      * operation
 325  
      * @throws InvalidParameterException One or more parameters invalid
 326  
      * @throws MissingParameterException One or more parameters missing
 327  
      * @throws OperationFailedException unable to complete request
 328  
      * @throws PermissionDeniedException authorization failure
 329  
      */
 330  
     public ExemptionInfo createExemption(@WebParam(name = "exemptionRequestId") String exemptionRequestId,
 331  
             @WebParam(name = "exemptionTypeKey") String exemptionTypeKey,
 332  
             @WebParam(name = "exemptionInfo") ExemptionInfo exemptionInfo,
 333  
             @WebParam(name = "context") ContextInfo context)
 334  
             throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 335  
 
 336  
     /**
 337  
      * Updates an existing Exemption.
 338  
      *
 339  
      * @param exemptionId Id of Exemption to be updated
 340  
      * @param exemptionInfo Details of updates to the Exemption being updated
 341  
      * @param context Context information containing the principalId and locale
 342  
      * information about the caller of service operation
 343  
      * @return the details of Exemption just updated
 344  
      * @throws DataValidationErrorException One or more values invalid for this
 345  
      * operation
 346  
      * @throws DoesNotExistException the Exemption does not exist
 347  
      * @throws InvalidParameterException One or more parameters invalid
 348  
      * @throws MissingParameterException One or more parameters missing
 349  
      * @throws OperationFailedException unable to complete request
 350  
      * @throws PermissionDeniedException authorization failure
 351  
      * @throws VersionMismatchException The action was attempted on an out of
 352  
      * date version.
 353  
      */
 354  
     public ExemptionInfo updateExemption(@WebParam(name = "exemptionId") String exemptionId,
 355  
             @WebParam(name = "exemptionInfo") ExemptionInfo exemptionInfo,
 356  
             @WebParam(name = "context") ContextInfo context)
 357  
             throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 358  
 
 359  
     /**
 360  
      * Indicate that the given Exemption has been used successfully in a
 361  
      * transaction. This method increments the Exemption use count.
 362  
      *
 363  
      * @param exemptionId the Id for the Exemption
 364  
      * @param context Context information containing the principalId and locale
 365  
      * information about the caller of service operation
 366  
      * @return the status
 367  
      * @throws DoesNotExistException no valid exemption exists
 368  
      * @throws InvalidParameterException invalid parameter
 369  
      * @throws MissingParameterException missing parameter
 370  
      * @throws OperationFailedException unable to complete request
 371  
      * @throws PermissionDeniedException authorization failure
 372  
      */
 373  
     public StatusInfo addUseToExemption(@WebParam(name = "exeptionId") String exemptionId,
 374  
             @WebParam(name = "context") ContextInfo context)
 375  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 376  
 
 377  
     /**
 378  
      * Deletes an existing Exemption record.
 379  
      *
 380  
      * @param exemptionId the Id of the Exemption to be deleted
 381  
      * @param context Context information containing the principalId and locale
 382  
      * information about the caller of service operation
 383  
      * @return status of the operation (success, failed)
 384  
      * @throws DoesNotExistException the Exemption does not exist
 385  
      * @throws InvalidParameterException One or more parameters invalid
 386  
      * @throws MissingParameterException One or more parameters missing
 387  
      * @throws OperationFailedException unable to complete request
 388  
      * @throws PermissionDeniedException authorization failure
 389  
      */
 390  
     public StatusInfo deleteExemption(@WebParam(name = "exemptionId") String exemptionId,
 391  
             @WebParam(name = "context") ContextInfo context)
 392  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 393  
 
 394  
     /**
 395  
      * Retrieves the details of a single Exemption by a exemption Id.
 396  
      *
 397  
      * @param exemptionId Unique Id of the Exemption to be retrieved
 398  
      * @param context Context information containing the principalId and locale
 399  
      * information about the caller of service operation
 400  
      * @return the details of the Exemption requested
 401  
      * @throws DoesNotExistException exemptionId not found
 402  
      * @throws InvalidParameterException invalid parameter
 403  
      * @throws MissingParameterException missing parameter
 404  
      * @throws OperationFailedException unable to complete request
 405  
      * @throws PermissionDeniedException authorization failure
 406  
      */
 407  
     public ExemptionInfo getExemption(@WebParam(name = "exemptionId") String exemptionId,
 408  
             @WebParam(name = "context") ContextInfo context)
 409  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 410  
 
 411  
     /**
 412  
      * Retrieves a list Exemptions corresponding to a list of exemption Ids.
 413  
      *
 414  
      * @param exemptionIds list of unique Ids of the Exemption to be retrieved
 415  
      * @param context Context information containing the principalId and locale
 416  
      * information about the caller of service operation
 417  
      * @return a list of Exemptions
 418  
      * @throws DoesNotExistException an exemptionId in list not found
 419  
      * @throws InvalidParameterException invalid parameter
 420  
      * @throws MissingParameterException missing parameter
 421  
      * @throws OperationFailedException unable to complete request
 422  
      * @throws PermissionDeniedException authorization failure
 423  
      */
 424  
     public List<ExemptionInfo> getExemptionsByIds(@WebParam(name = "exemptionIds") List<String> exemptionIds,
 425  
             @WebParam(name = "context") ContextInfo context)
 426  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 427  
 
 428  
     /**
 429  
      * Retrieves a list Exemption Ids by Type.
 430  
      *
 431  
      * @param exemptionTypeKey a unique key for an exemption Type
 432  
      * @param context Context information containing the principalId and locale
 433  
      * information about the caller of service operation
 434  
      * @return a list of Exemptions
 435  
      * @throws DoesNotExistException an exemptionId in list not found
 436  
      * @throws InvalidParameterException invalid parameter
 437  
      * @throws MissingParameterException missing parameter
 438  
      * @throws OperationFailedException unable to complete request
 439  
      * @throws PermissionDeniedException authorization failure
 440  
      */
 441  
     public List<String> getExemptionIdsByType(@WebParam(name = "exemptionTypeKey") String exemptionTypeKey,
 442  
             @WebParam(name = "context") ContextInfo context)
 443  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 444  
     
 445  
       ////
 446  
     //// exemption get By methods 
 447  
     ////
 448  
     /**
 449  
      * Gets a list of all exemptions for a Person.
 450  
      *
 451  
      * @param personId a unique Id of the Person
 452  
      * @param context Context information containing the principalId and locale
 453  
      * information about the caller of service operation
 454  
      * @return a list of Exemptions
 455  
      * @throws InvalidParameterException invalid parameter
 456  
      * @throws MissingParameterException missing parameter
 457  
      * @throws OperationFailedException unable to complete request
 458  
      * @throws PermissionDeniedException authorization failure
 459  
      */
 460  
     public List<ExemptionInfo> getExemptionsForPerson(@WebParam(name = "personId") String personId,
 461  
             @WebParam(name = "context") ContextInfo context)
 462  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 463  
 
 464  
     /**
 465  
      * Gets a list of all exemptions tied to the exemption request.
 466  
      *
 467  
      * @param requestId a unique Id of an exemption request
 468  
      * @param context Context information containing the principalId and locale
 469  
      * information about the caller of service operation
 470  
      * @return a list of Exemptions
 471  
      * @throws InvalidParameterException invalid parameter
 472  
      * @throws MissingParameterException missing parameter
 473  
      * @throws OperationFailedException unable to complete request
 474  
      * @throws PermissionDeniedException authorization failure
 475  
      */
 476  
     public List<ExemptionInfo> getExemptionsForRequest(@WebParam(name = "requestId") String requestId,
 477  
             @WebParam(name = "context") ContextInfo context)
 478  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 479  
 
 480  
     /**
 481  
      * Gets a list of all active effective exemptions for a Person.
 482  
      * 
 483  
      * An effective exemption is one with an active state, the as of date falls 
 484  
      * within the effective date range, and the use count is less than the use limit.
 485  
      *
 486  
      * @param personId a unique Id of the Person
 487  
      * @param asOfDate the date for to check if the exemption is valid
 488  
      * @param context Context information containing the principalId and locale
 489  
      * information about the caller of service operation
 490  
      * @return a list of Exemptions
 491  
      * @throws InvalidParameterException invalid parameter
 492  
      * @throws MissingParameterException missing parameter
 493  
      * @throws OperationFailedException unable to complete request
 494  
      * @throws PermissionDeniedException authorization failure
 495  
      */
 496  
     public List<ExemptionInfo> getActiveExemptionsForPerson(@WebParam(name = "personId") String personId,
 497  
             @WebParam(name = "asOfDate") Date asOfDate,
 498  
             @WebParam(name = "context") ContextInfo context)
 499  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 500  
 
 501  
     /**
 502  
      * Gets a list of all exemptions by Type for a Person.
 503  
      *
 504  
      * @param typeKey an exemption Type
 505  
      * @param personId a unique Id of the Person
 506  
      * @param context Context information containing the principalId and locale
 507  
      * information about the caller of service operation
 508  
      * @return a list of Exemptions
 509  
      * @throws InvalidParameterException invalid parameter
 510  
      * @throws MissingParameterException missing parameter
 511  
      * @throws OperationFailedException unable to complete request
 512  
      * @throws PermissionDeniedException authorization failure
 513  
      */
 514  
     public List<ExemptionInfo> getExemptionsByTypeForPerson(@WebParam(name = "typeKey") String typeKey,
 515  
             @WebParam(name = "personId") String personId,
 516  
             @WebParam(name = "context") ContextInfo context)
 517  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 518  
 
 519  
     /**
 520  
      * Gets a list of all effective exemptions by Type for a Person. An
 521  
      * effective exemption is one with an active state, the current date falls
 522  
      * within the effective date range, and the use count is less than the use
 523  
      * limit.
 524  
      *
 525  
      * @param typeKey an exemption Type
 526  
      * @param personId a unique Id of the Person
 527  
      * @param asOfDate the date for to check if the exemption is valid
 528  
      * @param context Context information containing the principalId and locale
 529  
      * information about the caller of service operation
 530  
      * @return a list of Exemptions
 531  
      * @throws InvalidParameterException invalid parameter
 532  
      * @throws MissingParameterException missing parameter
 533  
      * @throws OperationFailedException unable to complete request
 534  
      * @throws PermissionDeniedException authorization failure
 535  
      */
 536  
     public List<ExemptionInfo> getActiveExemptionsByTypeForPerson(@WebParam(name = "typeKey") String typeKey,
 537  
             @WebParam(name = "personId") String personId,
 538  
             @WebParam(name = "asOfDate") Date asOfDate,
 539  
             @WebParam(name = "context") ContextInfo context)
 540  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 541  
 
 542  
     /**
 543  
      * Gets a list of all effective exemptions by Type, Process and check for a
 544  
      * Person. An effective exemption is one with an active state, the current
 545  
      * date falls within the effective date range, and the use count is less
 546  
      * than the use limit.
 547  
      *
 548  
      * @param typeKey an exemption Type
 549  
      * @param processId the id of process 
 550  
      * @param checkKey the key of a check 
 551  
      * @param personId a unique Id of the Person
 552  
      * @param asOfDate the date for to check if the exemption is valid
 553  
      * @param context Context information containing the principalId and locale
 554  
      * information about the caller of service operation
 555  
      * @return a list of Exemptions
 556  
      * @throws InvalidParameterException invalid parameter
 557  
      * @throws MissingParameterException missing parameter
 558  
      * @throws OperationFailedException unable to complete request
 559  
      * @throws PermissionDeniedException authorization failure
 560  
      */
 561  
     public List<ExemptionInfo> getActiveExemptionsByTypeProcessAndCheckForPerson(@WebParam(name = "typeKey") String typeKey,
 562  
             @WebParam(name = "processId") String processId,
 563  
             @WebParam(name = "checkKey") String checkKey,
 564  
             @WebParam(name = "personId") String personId,
 565  
             @WebParam(name = "asOfDate") Date asOfDate,
 566  
             ContextInfo context)
 567  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 568  
 }