Coverage Report - org.kuali.student.enrollment.lpr.service.LprService
 
Classes in this File Line Coverage Branch Coverage Complexity
LprService
N/A
N/A
1
 
 1  
 /*
 2  
  * Copyright 2009 The Kuali Foundation Licensed under the Educational Community
 3  
  * License, Version 1.0 (the "License"); you may not use this file except in
 4  
  * compliance with the License. You may obtain a copy of the License at
 5  
  * http://www.opensource.org/licenses/ecl1.php Unless required by applicable law
 6  
  * or agreed to in writing, software distributed under the License is
 7  
  * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 8  
  * KIND, either express or implied. See the License for the specific language
 9  
  * governing permissions and limitations under the License.
 10  
  */
 11  
 package org.kuali.student.enrollment.lpr.service;
 12  
 
 13  
 import org.kuali.rice.core.api.criteria.QueryByCriteria;
 14  
 import org.kuali.student.enrollment.lpr.dto.*;
 15  
 import org.kuali.student.r2.common.dto.BulkStatusInfo;
 16  
 import org.kuali.student.r2.common.dto.ContextInfo;
 17  
 import org.kuali.student.r2.common.dto.StatusInfo;
 18  
 import org.kuali.student.r2.common.dto.ValidationResultInfo;
 19  
 import org.kuali.student.r2.common.exceptions.*;
 20  
 import org.kuali.student.r2.common.util.constants.LprServiceConstants;
 21  
 
 22  
 import javax.jws.WebParam;
 23  
 import javax.jws.WebService;
 24  
 import javax.jws.soap.SOAPBinding;
 25  
 import java.util.List;
 26  
 
 27  
 /**
 28  
  * The Lui Person Relationship (LPR) Service Maintains the relationship between
 29  
  * a Learning Unit Instance and a Person. Depending on the type this service
 30  
  * maintains relationships such as:
 31  
  * <ul>
 32  
  * <li>a student's registration in a course
 33  
  * <li>a student's enrollment in a program (major or minor)
 34  
  * <li>an instructor's assignment to teach a course
 35  
  * <li>a faculty member's assignment as an advisor for a program
 36  
  * </ul>
 37  
  * @Version 1.0 (Dev)
 38  
  *
 39  
  * @Author Kamal
 40  
  * @Since Tue Mar 01 15:53:51 PST 2011
 41  
  */
 42  
 @WebService(name = "LprService", serviceName = "LprService", portName = "LprService",targetNamespace = LprServiceConstants.NAMESPACE)
 43  
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 44  
 public interface LprService {
 45  
 
 46  
     /**
 47  
      * Retrieves the Relation for the specified LUI Person Relation id
 48  
      *
 49  
      * @param lprId Identifier for the LUI Person Relation
 50  
      * @param contextInfo             Context information containing the principalId and locale
 51  
      *                            information about the caller of service operation
 52  
      * @return LUI Person Relation information
 53  
      * @throws DoesNotExistException     lprId not found
 54  
      * @throws InvalidParameterException invalid lprId
 55  
      * @throws MissingParameterException missing lprId
 56  
      * @throws OperationFailedException  unable to complete request
 57  
      * @throws PermissionDeniedException authorization failure
 58  
      */
 59  
     public LprInfo getLpr(@WebParam(name = "lprId") String lprId,
 60  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 61  
             throws DoesNotExistException,
 62  
             InvalidParameterException, MissingParameterException, OperationFailedException,
 63  
             PermissionDeniedException;
 64  
 
 65  
     /**
 66  
      * Retrieves the Relation for the specified list of LUI Person Relation Ids
 67  
      *
 68  
      * @param lprIds List of identifiers for LUI Person
 69  
      *                                Relations
 70  
      * @param contextInfo                 Context information containing the principalId and locale
 71  
      *                                information about the caller of service operation
 72  
      * @return List of LUI Person Relation information
 73  
      * @throws DoesNotExistException     One or more lprIds not found
 74  
      * @throws InvalidParameterException One or more invalid
 75  
      *                                   lprIds
 76  
      * @throws MissingParameterException missing lprIds
 77  
      * @throws OperationFailedException  unable to complete request
 78  
      * @throws PermissionDeniedException authorization failure
 79  
      */
 80  
     public List<LprInfo> getLprsByIds(@WebParam(name = "lprIds") List<String> lprIds,
 81  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 82  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException,
 83  
             OperationFailedException, PermissionDeniedException;
 84  
 
 85  
     /**
 86  
      * Retrieves the LUI Ids for Person, type and state.
 87  
      * 
 88  
      * Example Use Case: This would allow you to get all the active (state) courses 
 89  
      * (type=registration) for a student.
 90  
      *
 91  
      * @param personId                 Identifier for the Person 
 92  
      * @param lprTypeKey Type of LUI Person Relation
 93  
      * @param relationState            Relation State
 94  
      * @param contextInfo                  Context information containing the principalId and locale
 95  
      *                                 information about the caller of service operation
 96  
      * @return Simple list of LUI Ids
 97  
      * @throws DoesNotExistException       personId, lprTypeKey,
 98  
      *                                     relationState, person to LUI relationship not found
 99  
      * @throws InvalidParameterException   invalid personId,
 100  
      *                                     lprTypeKey, relationState
 101  
      * @throws MissingParameterException   missing personId,
 102  
      *                                     lprTypeKey, relationState
 103  
      * @throws OperationFailedException    unable to complete request
 104  
      * @throws PermissionDeniedException   authorization failure
 105  
      */
 106  
     public List<String> getLuiIdsByPersonAndTypeAndState(@WebParam(name = "personId") String personId,
 107  
                 @WebParam(name = "lprTypeKey") String lprTypeKey,
 108  
                 @WebParam(name = "relationState") String relationState,
 109  
                 @WebParam(name = "contextInfo") ContextInfo contextInfo)
 110  
         throws DoesNotExistException, InvalidParameterException, MissingParameterException, 
 111  
             OperationFailedException, PermissionDeniedException;
 112  
 
 113  
     /**
 114  
      * Retrieves Person Ids related to the specified LUI, type and state
 115  
      * 
 116  
      * This would allow you to get a list of people who are active (state) students (type=registration) 
 117  
      * for a particular course (luiId) 
 118  
      * 
 119  
      * Example Use Case: get all students in a course.
 120  
      * 
 121  
      * @param luiId                    Identifier for the LUI
 122  
      * @param lprTypeKey               Type of LUI Person Relation
 123  
      * @param relationState            Relation State
 124  
      * @param contextInfo                  Context information containing the principalId and locale
 125  
      *                                 information about the caller of service operation
 126  
      * @return Simple list of Person Ids
 127  
      * @throws DoesNotExistException     luiId, lprTypeKey,
 128  
      *                                   relationState, LUI to person relationship not found
 129  
      * @throws InvalidParameterException invalid luiId,
 130  
      *                                   lprTypeKey, relationState
 131  
      * @throws MissingParameterException missing luiId,
 132  
      *                                   lprTypeKey, relationState
 133  
      * @throws OperationFailedException  unable to complete request
 134  
      * @throws PermissionDeniedException authorization failure
 135  
      */
 136  
     public List<String> getPersonIdsByLuiAndTypeAndState(@WebParam(name = "luiId") String luiId,
 137  
             @WebParam(name = "lprTypeKey") String lprTypeKey,
 138  
             @WebParam(name = "relationState") String relationState,
 139  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 140  
         throws DoesNotExistException, InvalidParameterException,
 141  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 142  
 
 143  
     /**
 144  
      * Retrieves Person Relation for person and LUI
 145  
      *
 146  
      * Example Use Case: Can be used to get course registrations for a person in a particular course.
 147  
      * Although this would typically only return one registration for each set of values, but
 148  
      * if a person adds a course then drops it then adds it again you could get multiple registrations.
 149  
      *
 150  
      * @param personId Identifier for person
 151  
      * @param luiId    Identifier for LUI
 152  
      * @param contextInfo  Context information containing the principalId and locale
 153  
      *                     information about the caller of service operation
 154  
      * @return List of LUI Person Relation info
 155  
      * @throws DoesNotExistException       personId, luiId not found
 156  
      * @throws InvalidParameterException   invalid personId, luiId
 157  
      * @throws MissingParameterException   missing personId, luiId
 158  
      * @throws OperationFailedException    unable to complete request
 159  
      * @throws PermissionDeniedException   authorization failure
 160  
      */
 161  
     public List<LprInfo> getLprsByPersonAndLui(@WebParam(name = "personId") String personId,
 162  
             @WebParam(name = "luiId") String luiId,
 163  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 164  
         throws DoesNotExistException, InvalidParameterException, MissingParameterException, 
 165  
             OperationFailedException, PermissionDeniedException;
 166  
 
 167  
     /**
 168  
      * Retrieves LUI Person Relations for Person
 169  
      * 
 170  
      * Example Use Case: Can be used to get all the course registrations for a person for as long as
 171  
      * they have been at the school, but please note it could include student registrations
 172  
      * in things that are not courses OR student's acting as teaching assistants
 173  
      * to courses.
 174  
      * 
 175  
      * @param personId Identifier for person
 176  
      * @param contextInfo  Context information containing the principalId and locale
 177  
      *                 information about the caller of service operation
 178  
      * @return List of LUI Person Relation info
 179  
      * @throws DoesNotExistException       personId not found
 180  
      * @throws InvalidParameterException   invalid personId
 181  
      * @throws MissingParameterException   missing personId
 182  
      * @throws OperationFailedException    unable to complete request
 183  
      * @throws PermissionDeniedException   authorization failure
 184  
      */
 185  
     public List<LprInfo> getLprsByPerson(@WebParam(name = "personId") String personId,
 186  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 187  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException,
 188  
             OperationFailedException, PermissionDeniedException;
 189  
 
 190  
     /**
 191  
      * Retrieves LUI Person Relation for a specified LUI
 192  
      * 
 193  
      * Example Use Case: Can be used to get all the people and their relationships to a particular
 194  
      * course offering.
 195  
      *
 196  
      * @param luiId   Identifier for LUI
 197  
      * @param contextInfo Context information containing the principalId and locale
 198  
      *                information about the caller of service operation
 199  
      * @return List of LUI Person Relation info
 200  
      * @throws DoesNotExistException     luiId not found
 201  
      * @throws InvalidParameterException invalid luiId
 202  
      * @throws MissingParameterException missing luiId
 203  
      * @throws OperationFailedException  unable to complete request
 204  
      * @throws PermissionDeniedException authorization failure
 205  
      */
 206  
     public List<LprInfo> getLprsByLui(@WebParam(name = "luiId") String luiId,
 207  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 208  
             throws DoesNotExistException, InvalidParameterException,
 209  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 210  
 
 211  
     /**
 212  
      * Retrieves LUI Person Relation for a particular type and specified LUI
 213  
      *
 214  
      * Example: Can be used to get all the people with a particular relationship to a
 215  
      * specified course offering.
 216  
      * 
 217  
      * @param lprTypeKey LUI person relation type key
 218  
      * @param luiId         Identifier for LUI
 219  
      * @param contextInfo  Context information containing the principalId and locale
 220  
      *                information about the caller of service operation
 221  
      * @return List of LUI Person Relation info
 222  
      * @throws DoesNotExistException     luiId not found
 223  
      * @throws InvalidParameterException invalid luiId
 224  
      * @throws MissingParameterException missing luiId
 225  
      * @throws OperationFailedException  unable to complete request
 226  
      * @throws PermissionDeniedException authorization failure
 227  
      */
 228  
     public List<LprInfo> getLprsByLuiAndType (@WebParam(name = "luiId") String luiId,
 229  
             @WebParam(name = "lprTypeKey") String lprTypeKey,
 230  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 231  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException,
 232  
             OperationFailedException, PermissionDeniedException;
 233  
 
 234  
     /**
 235  
      * Retrieves a list of LPRs by person and ATP
 236  
      *
 237  
      * Example Use Case: Can be used to get a list of registrations or instructor assignments for a person and a term
 238  
      * 
 239  
      * Note: the ATP is not stored on the LPR but on the Lui so the ATP specified is used
 240  
      * to select or filter the Lui ids that can appear on the LPRs that are returned.
 241  
      * 
 242  
      * @param personId  the person id
 243  
      * @param atpId     the id of the academic time period
 244  
      * @param contextInfo  Context information containing the principalId and locale
 245  
      *                information about the caller of service operation
 246  
      * @return List of LUI Person Relation info
 247  
      * @throws DoesNotExistException     luiId not found
 248  
      * @throws InvalidParameterException invalid luiId
 249  
      * @throws MissingParameterException missing luiId
 250  
      * @throws OperationFailedException  unable to complete request
 251  
      * @throws PermissionDeniedException authorization failure
 252  
      */
 253  
     public List<LprInfo> getLprsByPersonForAtp(@WebParam(name = "personId") String personId,
 254  
             @WebParam(name = "atpId") String atpId,
 255  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 256  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException,
 257  
             OperationFailedException, PermissionDeniedException;
 258  
 
 259  
     /**
 260  
      * Retrieves a list of LPRs for a person and particular ATP by the type of
 261  
      * LPR.
 262  
      *
 263  
      * Example Use Case: Can be used to get a list of registrations for a person and a relation type
 264  
      * but making sure to exclude other types of relations the student may have 
 265  
      * during that term such as also being an teaching assistant for a course.
 266  
      *
 267  
      * @param personId  the person id
 268  
      * @param atpId     the id of the academic time period
 269  
      * @param lprTypeKey LUI person relation type key
 270  
      * @param contextInfo  Context information containing the principalId and locale
 271  
      *                information about the caller of service operation
 272  
      * @return List of LUI Person Relation info
 273  
      * @throws DoesNotExistException     luiId not found
 274  
      * @throws InvalidParameterException invalid luiId
 275  
      * @throws MissingParameterException missing luiId
 276  
      * @throws OperationFailedException  unable to complete request
 277  
      * @throws PermissionDeniedException authorization failure
 278  
      *
 279  
      */
 280  
     public List<LprInfo> getLprsByPersonAndTypeForAtp(@WebParam(name = "personId") String personId,
 281  
             @WebParam(name = "atpId") String atpId,
 282  
             @WebParam(name = "lprTypeKey") String lprTypeKey,
 283  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 284  
         throws DoesNotExistException, InvalidParameterException, MissingParameterException,
 285  
             OperationFailedException, PermissionDeniedException;
 286  
 
 287  
     /**
 288  
      * Gets the LPRs for a person and the type Lui.
 289  
      * 
 290  
      * Example Use Case: Can be used to get a list of all the relations a person may have to a course
 291  
      * offering (which is a lui type).
 292  
      *
 293  
      * @param personId   person identifier
 294  
      * @param luiTypeKey type of the LUI
 295  
      * @param contextInfo  Context information containing the principalId and locale
 296  
      *                information about the caller of service operation
 297  
      * @return List of LUI Person Relation info
 298  
      * @throws DoesNotExistException     luiId not found
 299  
      * @throws InvalidParameterException invalid luiId
 300  
      * @throws MissingParameterException missing luiId
 301  
      * @throws OperationFailedException  unable to complete request
 302  
      * @throws PermissionDeniedException authorization failure
 303  
      */
 304  
     public List<LprInfo> getLprsByPersonAndLuiType(@WebParam(name = "personId") String personId,
 305  
             @WebParam(name = "luiTypeKey") String luiTypeKey,
 306  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 307  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException,
 308  
             OperationFailedException, PermissionDeniedException;
 309  
 
 310  
     /**
 311  
      * Gets the the LPRs for a person and atp and Lui type.
 312  
      * 
 313  
      * Example Use Case: Can be used to get the relations a person may have to a course offering
 314  
      * (which is a lui type) and a particular term (atpId)
 315  
      *
 316  
      * @param personId   person identifier
 317  
      * @param atpId academic time period identifier
 318  
      * @param luiTypeKey type of the LUI
 319  
      * @param contextInfo       Context information containing the principalId and locale
 320  
      *                information about the caller of service operation
 321  
      * @return a List of Lui Person Relation Info
 322  
      * @throws DoesNotExistException     luiId not found
 323  
      * @throws InvalidParameterException invalid luiId
 324  
      * @throws MissingParameterException missing luiId
 325  
      * @throws OperationFailedException  unable to complete request
 326  
      * @throws PermissionDeniedException authorization failure
 327  
      */
 328  
     public List<LprInfo> getLprsByPersonForAtpAndLuiType(@WebParam(name = "personId") String personId,
 329  
             @WebParam(name = "atpId") String atpId,
 330  
             @WebParam(name = "luiTypeKey") String luiTypeKey,
 331  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 332  
         throws DoesNotExistException, InvalidParameterException, MissingParameterException,
 333  
             OperationFailedException, PermissionDeniedException;
 334  
 
 335  
     /**
 336  
      * Validates the particular relation in a state for a Person and LUI
 337  
      *
 338  
      * @param validationType        Identifier of the extent of validation
 339  
      * @param luiId                 the identifier of the lui
 340  
      * @param personId              the identifier of the person
 341  
      * @param lprTypeKey       the key to the type of the relationship
 342  
      * @param lprInfo   lpr to be validated
 343  
      * @param contextInfo               Context information containing the principalId and locale
 344  
      *                              information about the caller of service operation
 345  
      * @return list of validation results, list should be be zero length if no
 346  
      *         validation results are generated
 347  
      * @throws DoesNotExistException     lprInfo not found
 348  
      * @throws InvalidParameterException invalid lprInfo
 349  
      *                                   relationState
 350  
      * @throws MissingParameterException missing lprInfo
 351  
      * @throws OperationFailedException  unable to complete request
 352  
      * @throws PermissionDeniedException authorization failure
 353  
      */
 354  
     public List<ValidationResultInfo> validateLpr(@WebParam(name = "validationType") String validationType,
 355  
             @WebParam (name="luiId") String luiId,
 356  
             @WebParam (name="personId") String personId,
 357  
             @WebParam (name="lprTypeKey")  String lprTypeKey,
 358  
             @WebParam(name = "lprInfo") LprInfo lprInfo,
 359  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 360  
             throws DoesNotExistException, InvalidParameterException,
 361  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 362  
 
 363  
     /**
 364  
      * Searches details of LUI Person Relation Ids
 365  
      *
 366  
      * @param criteria Criteria to be used for retrieval of multiple LUI Person
 367  
      *                 Relation identifiers
 368  
      * @param contextInfo  Context information containing the principalId and locale
 369  
      *                 information about the caller of service operation
 370  
      * @return Simple list of LUI Person Relation identifiers
 371  
      * @throws InvalidParameterException invalid relation criteria
 372  
      * @throws MissingParameterException missing relation criteria
 373  
      * @throws OperationFailedException  unable to complete request
 374  
      * @throws PermissionDeniedException authorization failure
 375  
      */
 376  
     public List<String> searchForLprIds(@WebParam(name = "criteria") QueryByCriteria criteria,
 377  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 378  
         throws InvalidParameterException, MissingParameterException, OperationFailedException,
 379  
             PermissionDeniedException;
 380  
 
 381  
     /**
 382  
      * Searches details of LUI Person Relation by search criteria
 383  
      *
 384  
      * @param criteria Criteria to be used for retrieval of multiple LUI Person
 385  
      *                 Relation identifiers
 386  
      * @param contextInfo  Context information containing the principalId and locale
 387  
      *                 information about the caller of service operation
 388  
      * @return Simple list of LUI Person Relation identifiers
 389  
      * @throws InvalidParameterException invalid relation criteria
 390  
      * @throws MissingParameterException missing relation criteria
 391  
      * @throws OperationFailedException  unable to complete request
 392  
      * @throws PermissionDeniedException authorization failure
 393  
      */
 394  
     public List<LprInfo> searchForLprs(@WebParam(name = "criteria") QueryByCriteria criteria,
 395  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 396  
             throws InvalidParameterException,
 397  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 398  
 
 399  
     /**
 400  
      * Creates relation between the specified Person and LUI
 401  
      *
 402  
      * @param personId                 Person Identifier
 403  
      * @param luiId                    LUI Identifier
 404  
      * @param lprTypeKey Type of LUI to Person Relation
 405  
      * @param lprInfo    Information required to create the LUI
 406  
      *                                 Person relation
 407  
      * @param contextInfo                  Context information containing the principalId and locale
 408  
      *                                 information about the caller of service operation
 409  
      * @return Structure containing LUI Person relation identifiers
 410  
      * @throws DataValidationErrorException if lprInfo is not
 411  
      *                                      valid
 412  
      * @throws DoesNotExistException        personId, luiId, relationState,
 413  
      *                                      lprTypeKey does not exist
 414  
      * @throws InvalidParameterException    invalid personId, luiId, relationState,
 415  
      *                                      lprTypeKey, lprInfo
 416  
      * @throws MissingParameterException    missing personId, luiId, relationState,
 417  
      *                                      lprTypeKey, lprInfo
 418  
      * @throws OperationFailedException     unable to complete request
 419  
      * @throws PermissionDeniedException    authorization failure
 420  
      * @throws ReadOnlyException            attempt to update a read only attribute
 421  
      */
 422  
     public LprInfo createLpr(@WebParam(name = "personId") String personId,
 423  
             @WebParam(name = "luiId") String luiId,
 424  
             @WebParam(name = "lprTypeKey") String lprTypeKey,
 425  
             @WebParam(name = "lprInfo") LprInfo lprInfo,
 426  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException,
 427  
             DoesNotExistException, InvalidParameterException,
 428  
             MissingParameterException, OperationFailedException,
 429  
             PermissionDeniedException, ReadOnlyException;
 430  
 
 431  
     /**
 432  
      * Creates multiple LPRs for one specified person. This is an all or
 433  
      * nothing transaction - any error will invalidate the entire transaction.
 434  
      *
 435  
      * @param personId                 Identifier for Person
 436  
      * @param lprTypeKey                Type of LUI Person relation
 437  
      * @param lprInfos                  List of Information required to create the LUI
 438  
      *                                 Person relation
 439  
      * @param contextInfo                  Context information containing the principalId and locale
 440  
      *                                 information about the caller of service operation
 441  
      * @return Structure containing status and LUI Person relation identifiers and message
 442  
      * @throws DataValidationErrorException if luiPersonsRelationInfo is not
 443  
      *                                      valid
 444  
      * @throws DoesNotExistException        personId, lprTypeKey does not exist
 445  
      * @throws InvalidParameterException    invalid personId, lprTypeKey, lprInfo
 446  
      * @throws MissingParameterException    missing personId, lprTypeKey, lprInfo
 447  
      * @throws OperationFailedException     unable to complete request
 448  
      * @throws PermissionDeniedException    authorization failure
 449  
      * @throws ReadOnlyException            attempt to update a read only attribute
 450  
      */
 451  
     public List<BulkStatusInfo> createLprsForPerson(@WebParam(name = "personId") String personId,
 452  
             @WebParam(name = "lprTypeKey") String lprTypeKey,
 453  
             @WebParam(name = "lprInfos") List<LprInfo> lprInfos,
 454  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 455  
         throws DataValidationErrorException,
 456  
             DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException,
 457  
             PermissionDeniedException, ReadOnlyException;
 458  
 
 459  
     /**
 460  
      * Creates multiple LPRs for one specified LUI. This is an all or
 461  
      * nothing transaction - any error will invalidate the entire transaction.
 462  
      *
 463  
      * @param luiId                    Identifier for Lui
 464  
      * @param lprTypeKey                Type of LUI Person relation
 465  
      * @param lprInfos                  List of Information required to create the LUI
 466  
      *                                 Person relation
 467  
      * @param contextInfo                  Context information containing the principalId and locale
 468  
      *                                 information about the caller of service operation
 469  
      * @return Structure containing status and LUI Person relation identifiers and message
 470  
      * @throws DataValidationErrorException if luiPersonsRelationInfo is not
 471  
      *                                      valid
 472  
      * @throws DoesNotExistException        luiId, lprTypeKey does not exist
 473  
      * @throws InvalidParameterException    invalid luiId, lprTypeKey, lprInfos
 474  
      * @throws MissingParameterException    missing luiId, lprTypeKey, lprInfos
 475  
      * @throws OperationFailedException     unable to complete request
 476  
      * @throws PermissionDeniedException    authorization failure
 477  
      * @throws ReadOnlyException            attempt to update a read only attribute
 478  
      */
 479  
     public List<BulkStatusInfo> createLprsForLui(@WebParam(name = "luiId") String luiId,
 480  
             @WebParam(name = "lprTypeKey") String lprTypeKey,
 481  
             @WebParam(name = "lprInfos") List<LprInfo> lprInfos,
 482  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 483  
             throws DataValidationErrorException,
 484  
             DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException,
 485  
             PermissionDeniedException, ReadOnlyException;
 486  
 
 487  
     /**
 488  
      * Update relations between Person and LUI
 489  
      *
 490  
      * @param lprId   Identifier for the LUI Person Relation
 491  
      * @param lprInfo Changed information about the LUI Person
 492  
      *                              Relation
 493  
      * @param contextInfo               Context information containing the principalId and locale
 494  
      *                              information about the caller of service operation
 495  
      * @return Updated information about the LUI Person Relation
 496  
      * @throws DataValidationErrorException if lprInfo is not
 497  
      *                                      valid
 498  
      * @throws DoesNotExistException        lprId does not exist
 499  
      * @throws InvalidParameterException    invalid lprId,
 500  
      *                                      lprInfo
 501  
      * @throws MissingParameterException    missing lprId,
 502  
      *                                      lprInfo
 503  
      * @throws OperationFailedException     unable to complete request
 504  
      * @throws PermissionDeniedException    authorization failure
 505  
      * @throws ReadOnlyException            attempt to update a read only attribute
 506  
      * @throws VersionMismatchException     if optimistic lock version ind has
 507  
      *                                      changed
 508  
      */
 509  
     public LprInfo updateLpr(@WebParam(name = "lprId") String lprId,
 510  
             @WebParam(name = "lprInfo") LprInfo lprInfo,
 511  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 512  
             throws DoesNotExistException, DataValidationErrorException, InvalidParameterException,
 513  
             MissingParameterException,
 514  
             OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
 515  
 
 516  
     /**
 517  
      * Deletes relation between the specified Person and LUI
 518  
      *
 519  
      * @param lprId Identifier for the LUI Person Relation
 520  
      * @param contextInfo             Context information containing the principalId and locale
 521  
      *                            information about the caller of service operation
 522  
      * @return status of the operation (success, failed)
 523  
      * @throws DoesNotExistException     lprId does not exist
 524  
      * @throws InvalidParameterException invalid lprId
 525  
      * @throws MissingParameterException missing lprId
 526  
      * @throws OperationFailedException  unable to complete request
 527  
      * @throws PermissionDeniedException authorization failure
 528  
      */
 529  
     public StatusInfo deleteLpr(@WebParam(name = "lprId") String lprId,
 530  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 531  
             throws DoesNotExistException,
 532  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 533  
 
 534  
 
 535  
     /**
 536  
      * This method creates a LPR transaction of the specified type
 537  
      * 
 538  
      * Validates the transaction generates a unique id for the request and 
 539  
      * persists it in the back-end.
 540  
      *
 541  
      * @param lprTransactionInfo LPR transaction info
 542  
      * @param lprTransactionType LPR transaction type
 543  
      * @param contextInfo context info
 544  
      * @throws DataValidationErrorException if LprTransactionInfo fields are not
 545  
      *                                      valid
 546  
      * @throws DoesNotExistException        LUI or Person doesn't exist
 547  
      * @throws InvalidParameterException    Invalid lprTransactionType, lprTransaction
 548  
      * @throws MissingParameterException    Missing fields on LprTransactionInfo
 549  
      * @throws OperationFailedException     unable to complete request
 550  
      * @throws PermissionDeniedException    authorization failure
 551  
      */
 552  
     public LprTransactionInfo createLprTransaction(@WebParam(name = "lprTransactionType") String lprTransactionType,
 553  
             @WebParam(name = "lprTransactionInfo") LprTransactionInfo lprTransactionInfo,
 554  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 555  
         throws DataValidationErrorException, DoesNotExistException, InvalidParameterException,
 556  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 557  
 
 558  
     /**
 559  
      * Creates a new Lpr Transaction from an existing LPR transaction
 560  
      *
 561  
      * Copies the transaction's Items as well.
 562  
      * 
 563  
      * The new transaction has the same type as the existing transaction.
 564  
      * Since transactions can only be processed once this method was intended
 565  
      * to allow the application to easily create a new transaction with all of it's items 
 566  
      * that the user be able to fix and update any problems that resulted from 
 567  
      * processing the existing transaction. 
 568  
      * 
 569  
      * @param lprTransactionId LprTransaction identifier
 570  
      * @param contextInfo the context information
 571  
      * @throws DataValidationErrorException LprTransactionInfo is not valid
 572  
      * @throws DoesNotExistException        lprTransactionId doesn't exist
 573  
      * @throws InvalidParameterException    Invalid lprTransactionId
 574  
      * @throws MissingParameterException    Missing lprTransactionId
 575  
      * @throws OperationFailedException     unable to complete request
 576  
      * @throws PermissionDeniedException    authorization failure
 577  
      */
 578  
     public LprTransactionInfo createLprTransactionFromExisting(@WebParam(name = "lprTransactionId") String lprTransactionId,
 579  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 580  
             throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException,
 581  
             OperationFailedException, PermissionDeniedException;
 582  
 
 583  
     /**
 584  
      * This method updates an LPR Transaction and all of it's items.
 585  
      *
 586  
      * @param lprTransactionId   The transaction identifier
 587  
      * @param lprTransactionInfo The updated Lpr Transaction
 588  
      * @param contextInfo
 589  
      * @throws DataValidationErrorException LprTransactionInfo is not valid
 590  
      * @throws DoesNotExistException        lprTransactionId doesn't exist
 591  
      * @throws InvalidParameterException    Invalid lprTransactionId or
 592  
      *                                      lprTransactionInfo
 593  
      * @throws MissingParameterException    Missing lprTransactionId or
 594  
      *                                      lprTransactionInfo
 595  
      * @throws OperationFailedException     unable to complete request
 596  
      * @throws PermissionDeniedException    authorization failure
 597  
      * @throws VersionMismatchException     for when Optimistic Locking encounters a version mis-match.
 598  
      */
 599  
     public LprTransactionInfo updateLprTransaction(@WebParam(name = "lprTransactionId") String lprTransactionId,
 600  
             @WebParam(name = "lprTransactionInfo") LprTransactionInfo lprTransactionInfo,
 601  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 602  
             throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException,
 603  
             OperationFailedException, PermissionDeniedException, VersionMismatchException;
 604  
 
 605  
     /**
 606  
      * Retrieves the LPR Transactions based on it's identifier.
 607  
      *
 608  
      * @param lprTransactionId The transaction identifier
 609  
      * @param contextInfo       the contextual information
 610  
      * @throws DoesNotExistException     lprTransactionId doesn't exist
 611  
      * @throws InvalidParameterException Invalid lprTransactionId
 612  
      * @throws MissingParameterException Missing lprTransactionId
 613  
      * @throws OperationFailedException  Unable to complete request
 614  
      * @throws PermissionDeniedException Authorization failure
 615  
      */
 616  
     public LprTransactionInfo getLprTransaction(@WebParam(name = "lprTransactionId") String lprTransactionId,
 617  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 618  
             throws DoesNotExistException,
 619  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 620  
 
 621  
     /**
 622  
      * Retrieves LPR Transactions with an item by Person and LUI
 623  
      * 
 624  
      * Selects all transactions that have at least one item that matches the specified 
 625  
      * person and either the existing or new lui.
 626  
      * 
 627  
      * Note: this matches the person on the item not the person requesting the transaction 
 628  
      * which is on the transaction.
 629  
      *
 630  
      * @param personId The person identifier
 631  
      * @param luiId    The LUI id
 632  
      * @param contextInfo the context information
 633  
      * @throws DoesNotExistException     personId or luiId doesn't exist
 634  
      * @throws InvalidParameterException Invalid personId or luiId
 635  
      * @throws MissingParameterException Missing personId or luiId
 636  
      * @throws OperationFailedException  Unable to complete request
 637  
      * @throws PermissionDeniedException Authorization failure
 638  
      */
 639  
     public List<LprTransactionItemInfo> getLprTransactionItemsByPersonAndLui(@WebParam(name = "personId") String personId,
 640  
             @WebParam(name = "luiId") String luiId,
 641  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 642  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException,
 643  
             OperationFailedException, PermissionDeniedException;
 644  
 
 645  
 
 646  
     /**
 647  
      * Get lpr transactions for the specified list of transaction ids.
 648  
      *
 649  
      * @param lprTransactionIds the ids of the lpr transactions
 650  
      * @param contextInfo the context information
 651  
      * @throws DoesNotExistException     personId or luiId doesn't exist
 652  
      * @throws InvalidParameterException Invalid personId or luiId
 653  
      * @throws MissingParameterException Missing personId or luiId
 654  
      * @throws OperationFailedException  Unable to complete request
 655  
      * @throws PermissionDeniedException Authorization failure
 656  
      */
 657  
     public List<LprTransactionInfo> getLprTransactionsByIds(@WebParam(name = "lprTransactionIds") List<String> lprTransactionIds,
 658  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
 659  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 660  
 
 661  
     /**
 662  
      * Retrieves LPR Transaction Items based on the resulting LPR.
 663  
      * 
 664  
      * Selects all transaction items that have this resulting lpr
 665  
      *
 666  
      * @param lprId   The resulting lpr
 667  
      * @param contextInfo the context info
 668  
      * @throws InvalidParameterException Invalid personId
 669  
      * @throws MissingParameterException Missing personId
 670  
      * @throws OperationFailedException  Unable to complete request
 671  
      * @throws PermissionDeniedException Authorization failure
 672  
      */
 673  
     public List<LprTransactionItemInfo> getLprTransactionItemsByResultingLpr(@WebParam(name = "lprId") String lprId,
 674  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 675  
         throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 676  
 
 677  
     /**
 678  
      * Retrieves LPR Transaction Items based on an item with the specified LUI.
 679  
      *
 680  
      * Selects all transaction items that where the specified LUI matches either
 681  
      * the existing or new lui
 682  
      *
 683  
      * @param luiId   The LUI identifier
 684  
      * @param contextInfo the  ontext info
 685  
      * @throws InvalidParameterException Invalid personId
 686  
      * @throws MissingParameterException Missing personId
 687  
      * @throws OperationFailedException  Unable to complete request
 688  
      * @throws PermissionDeniedException Authorization failure
 689  
      */
 690  
     public List<LprTransactionItemInfo> getLprTransactionItemsByLui(@WebParam(name = "luiId") String luiId,
 691  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 692  
 
 693  
     /**
 694  
      * Retrieves transactions for the requesting person and the ATP.
 695  
      *
 696  
      * Unsubmitted transactions are those that have not been submitted (processed) yet. They can be found
 697  
      * by checking the state of transactions where state is "New" (see wiki).
 698  
      *
 699  
      * @param requestingPersonId The person identifier
 700  
      * @param atpId   The ATP Id
 701  
      * @param contextInfo the context info
 702  
      * @throws InvalidParameterException Invalid personId or atpId
 703  
      * @throws MissingParameterException Missing personId or atpId
 704  
      * @throws OperationFailedException  Unable to complete request
 705  
      * @throws PermissionDeniedException Authorization failure
 706  
      * @return
 707  
      */
 708  
     public List<LprTransactionInfo> getUnsubmittedLprTransactionsByRequestingPersonAndAtp(
 709  
             @WebParam(name = "personId") String requestingPersonId,
 710  
             @WebParam(name = "atpId") String atpId,
 711  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException,
 712  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 713  
 
 714  
     /**
 715  
      * Deletes an lpr Transaction based on Id.
 716  
      *
 717  
      * @param lprTransactionId LPR Transaction identifier
 718  
      * @param contextInfo the context info
 719  
      * @return
 720  
      * @throws DoesNotExistException     lprTransactionId doesn't exist
 721  
      * @throws InvalidParameterException Invalid lprTransactionId
 722  
      * @throws MissingParameterException Missing lprTransactionId
 723  
      * @throws OperationFailedException  Unable to complete request
 724  
      * @throws PermissionDeniedException Authorization failure
 725  
      */
 726  
     public StatusInfo deleteLprTransaction(@WebParam(name = "lprTransactionId") String lprTransactionId,
 727  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException,
 728  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 729  
 
 730  
     /**
 731  
      * Submits a LPR transaction - validates the input and based on the type of
 732  
      * transaction creates, updates, cancels or removes LPRs.
 733  
      *
 734  
      * @param lprTransactionId the id for the LPR transaction
 735  
      * @param contextInfo
 736  
      * @throws AlreadyExistsException       LPR is already present
 737  
      * @throws DataValidationErrorException Invalid lprTransaction
 738  
      * @throws DoesNotExistException        lprTransactionId doesn't exist
 739  
      * @throws InvalidParameterException    Invalid lprTransactionId
 740  
      * @throws MissingParameterException    Missing lprTransactionId
 741  
      * @throws OperationFailedException     Unable to complete request
 742  
      * @throws PermissionDeniedException    Authorization failure
 743  
      */
 744  
     public LprTransactionInfo processLprTransaction(@WebParam(name = "lprTransactionId") String lprTransactionId,
 745  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws AlreadyExistsException,
 746  
             DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 747  
 
 748  
     /**
 749  
      * Validate the LPR Transaction
 750  
      *
 751  
      * @param lprTransactionId the id of the transaction
 752  
      * @param contextInfo the context info
 753  
      * @return
 754  
      * @throws DataValidationErrorException Invalid lprTransaction
 755  
      * @throws DoesNotExistException        lprTransactionId doesn't exist
 756  
      * @throws InvalidParameterException    Invalid lprTransactionId
 757  
      * @throws MissingParameterException    Missing lprTransactionId
 758  
      * @throws OperationFailedException     Unable to complete request
 759  
      * @throws PermissionDeniedException    Authorization failure
 760  
      */
 761  
     public List<ValidationResultInfo> verifyLprTransaction(@WebParam(name = "lprTransactionId") String lprTransactionId,
 762  
                                                              @WebParam(name = "contextInfo") ContextInfo contextInfo)
 763  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException,
 764  
             OperationFailedException, PermissionDeniedException;
 765  
 
 766  
     /**
 767  
      * search for matching LPR transactions
 768  
      *
 769  
      * @param criteria
 770  
      * @param contextInfo
 771  
      * @return
 772  
      * @throws InvalidParameterException
 773  
      * @throws MissingParameterException
 774  
      * @throws OperationFailedException
 775  
      * @throws PermissionDeniedException
 776  
      */
 777  
     public List<LprTransactionInfo> searchForLprTransactions(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException,
 778  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 779  
 
 780  
     /**
 781  
      * Search for matching LPR transactions returning their ids
 782  
      *
 783  
      * @param criteria
 784  
      * @param contextInfo
 785  
      * @return
 786  
      * @throws InvalidParameterException
 787  
      * @throws MissingParameterException
 788  
      * @throws OperationFailedException
 789  
      * @throws PermissionDeniedException
 790  
      */
 791  
     public List<String> searchForLprTransactionIds(@WebParam(name = "criteria") QueryByCriteria criteria,
 792  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException,
 793  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 794  
 
 795  
 
 796  
 }