1 /** 2 * Copyright 2010 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the 5 * "License"); you may not use this file except in compliance with the 6 * License. You may obtain a copy of the License at 7 * http://www.osedu.org/licenses/ECL-2.0 Unless required by applicable 8 * law or agreed to in writing, software distributed under the License 9 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 10 * CONDITIONS OF ANY KIND, either express or implied. See the License 11 * for the specific language governing permissions and limitations 12 * under the License. 13 */ 14 package org.kuali.student.r2.lum.lrc.service; 15 16 import java.util.List; 17 18 import javax.jws.WebParam; 19 import javax.jws.WebService; 20 import javax.jws.soap.SOAPBinding; 21 import org.kuali.rice.core.api.criteria.QueryByCriteria; 22 23 import org.kuali.student.r2.common.dto.StatusInfo; 24 import org.kuali.student.r2.common.exceptions.PermissionDeniedException; 25 import org.kuali.student.r2.common.dto.ContextInfo; 26 import org.kuali.student.r2.common.dto.ValidationResultInfo; 27 import org.kuali.student.r2.common.exceptions.AlreadyExistsException; 28 import org.kuali.student.r2.common.exceptions.DataValidationErrorException; 29 import org.kuali.student.r2.common.exceptions.DependentObjectsExistException; 30 import org.kuali.student.r2.common.exceptions.DoesNotExistException; 31 import org.kuali.student.r2.common.exceptions.InvalidParameterException; 32 import org.kuali.student.r2.common.exceptions.MissingParameterException; 33 import org.kuali.student.r2.common.exceptions.OperationFailedException; 34 import org.kuali.student.r2.common.exceptions.VersionMismatchException; 35 import org.kuali.student.r2.common.search.service.SearchService; 36 import org.kuali.student.r2.lum.util.constants.LrcServiceConstants; 37 import org.kuali.student.r2.lum.lrc.dto.ResultValuesGroupInfo; 38 import org.kuali.student.r2.lum.lrc.dto.ResultScaleInfo; 39 import org.kuali.student.r2.lum.lrc.dto.ResultValueInfo; 40 41 /** 42 * The Learning Result Catalog Service is a Class I service which 43 * gives a set of operations to manage a learning result. A learning 44 * result can be of various types e.g grades, credits etc. This 45 * service has basic CRUD operations to touch various concepts that 46 * exist to model learning results e.g Result Value, Result Value 47 * Group, and Result Value Range. 48 * 49 * @Author sambit 50 * @Since Tue May 10 14:09:46 PDT 2011 51 */ 52 @WebService(name = "LrcService", targetNamespace = LrcServiceConstants.NAMESPACE) 53 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) 54 public interface LRCService extends LrcServiceBusinessLogic, SearchService { 55 56 /** 57 * Retrieves existing result values group by an identifier. 58 * 59 * @param resultValuesGroupKey identifiers for resultValuesGroup to be retrieved 60 * @param contextInfo Context information containing the principalId 61 * and locale information about the caller of service 62 * operation 63 * @return details of the results for these Ids 64 * @throws DoesNotExistException resultValuesGroupKey not found 65 * @throws InvalidParameterException invalid resultValuesGroupKey 66 * @throws MissingParameterException invalid resultValuesGroupKey 67 * @throws OperationFailedException unable to complete request 68 * @throws PermissionDeniedException authorization failure 69 */ 70 public ResultValuesGroupInfo getResultValuesGroup(@WebParam(name = "resultValuesGroupKey") String resultValuesGroupKey, 71 @WebParam(name = "contextInfo") ContextInfo contextInfo) 72 throws DoesNotExistException, 73 InvalidParameterException, 74 MissingParameterException, 75 OperationFailedException, 76 PermissionDeniedException; 77 78 /** 79 * Retrieves result values groups by a list of identifiers. 80 * 81 * @param resultValuesGroupKeys identifiers for result values group 82 * @param contextInfo Context information containing the principalId 83 * and locale information about the caller of service 84 * operation 85 * @return result values group list 86 * @throws DoesNotExistException resultValuesGroup not found 87 * @throws InvalidParameterException invalid resultValuesGroupKeys 88 * @throws MissingParameterException invalid resultValuesGroupKeys 89 * @throws OperationFailedException unable to complete request 90 * @throws PermissionDeniedException authorization failure 91 */ 92 public List<ResultValuesGroupInfo> getResultValuesGroupsByKeys(@WebParam(name = "resultValuesGroupKeys") List<String> resultValuesGroupKeys, 93 @WebParam(name = "contextInfo") ContextInfo contextInfo) 94 throws DoesNotExistException, 95 InvalidParameterException, 96 MissingParameterException, 97 OperationFailedException, 98 PermissionDeniedException; 99 100 /** 101 * Retrieves a list of existing result values groups that a result value is tied to. 102 * 103 * @param resultValueKey identifier for result value 104 * @param contextInfo Context information containing the principalId 105 * and locale information about the caller of service 106 * operation 107 * @return details of the results for these keys 108 * @throws DoesNotExistException resultValue not found 109 * @throws InvalidParameterException invalid resultValueKey 110 * @throws MissingParameterException invalid resultValueKey 111 * @throws OperationFailedException unable to complete request 112 * @throws PermissionDeniedException authorization failure 113 */ 114 public List<ResultValuesGroupInfo> getResultValuesGroupsByResultValue(@WebParam(name = "resultValueKey") String resultValueKey, 115 @WebParam(name = "contextInfo") ContextInfo contextInfo) 116 throws DoesNotExistException, 117 InvalidParameterException, 118 MissingParameterException, 119 OperationFailedException, 120 PermissionDeniedException; 121 122 /** 123 * Retrieves a list of existing result values groups that a result scale is tied to. 124 * 125 * @param resultScaleKey identifier for result scale 126 * @param contextInfo Context information containing the principalId 127 * and locale information about the caller of service 128 * operation 129 * @return details of the results for these keys 130 * @throws DoesNotExistException resultValue not found 131 * @throws InvalidParameterException invalid resultValueKey 132 * @throws MissingParameterException invalid resultValueKey 133 * @throws OperationFailedException unable to complete request 134 * @throws PermissionDeniedException authorization failure 135 */ 136 public List<ResultValuesGroupInfo> getResultValuesGroupsByResultScale(@WebParam(name = "resultScaleKey") String resultScaleKey, 137 @WebParam(name = "contextInfo") ContextInfo contextInfo) 138 throws DoesNotExistException, 139 InvalidParameterException, 140 MissingParameterException, 141 OperationFailedException, 142 PermissionDeniedException; 143 144 /** 145 * Retrieves a list of result group identifiers for a specified 146 * result values group type. 147 * 148 * @param resultValuesGroupTypeKey identifier for the result group type 149 * @param contextInfo Context information containing the principalId 150 * and locale information about the caller of service 151 * operation 152 * @return list of result group identifiers 153 * @throws DoesNotExistException resultValuesGroupTypeKey not found 154 * @throws InvalidParameterException invalid resultValuesGroupTypeKey 155 * @throws MissingParameterException missing resultValuesGroupTypeKey 156 * @throws OperationFailedException unable to complete request 157 * @throws PermissionDeniedException authorization failure 158 */ 159 public List<String> getResultValuesGroupKeysByType(@WebParam(name = "resultValuesGroupTypeKey") String resultValuesGroupTypeKey, 160 @WebParam(name = "contextInfo") ContextInfo contextInfo) 161 throws DoesNotExistException, 162 InvalidParameterException, 163 MissingParameterException, 164 OperationFailedException, 165 PermissionDeniedException; 166 167 /** 168 * Creates a new result Values Group. 169 * 170 * @param resultValuesGroupInfo information about the result values group 171 * being created 172 * @param contextInfo Context information containing the principalId 173 * and locale information about the caller of service 174 * operation 175 * @return create result values group information 176 * @throws AlreadyExistsException result values group already exists 177 * @throws DataValidationErrorException one or more values invalid for 178 * this operation 179 * @throws InvalidParameterException invalid resultValuesGroupInfo 180 * @throws MissingParameterException missing resultValuesGroupInfo 181 * @throws OperationFailedException unable to complete request 182 * @throws PermissionDeniedException authorization failure 183 */ 184 public ResultValuesGroupInfo createResultValuesGroup( 185 @WebParam(name = "resultScaleKey") String resultScaleKey, 186 @WebParam(name = "resultValuesGroupTypeKey") String resultValuesGroupTypeKey, 187 @WebParam(name = "resultGroupInfo") ResultValuesGroupInfo resultValuesGroupInfo, 188 @WebParam(name = "contextInfo") ContextInfo contextInfo) 189 throws AlreadyExistsException, 190 DataValidationErrorException, 191 InvalidParameterException, 192 MissingParameterException, 193 OperationFailedException, 194 PermissionDeniedException; 195 196 /** 197 * Updates an existing result values group. 198 * 199 * @param resultValuesGroupKey identifier of the result values group to update 200 * @param resultGroupInfo updated information about the result values group 201 * @param contextInfo Context information containing the principalId 202 * and locale information about the caller of service 203 * operation 204 * @return updated result values group information 205 * @throws DataValidationErrorException one or more values invalid for 206 * this operation 207 * @throws DoesNotExistException resultValuesGroupKey not found 208 * @throws InvalidParameterExceptioninvalid resultValuesGroupKey or 209 * resultValuesGroupInfo 210 * @throws MissingParameterException missing resultValuesGroupKey or 211 * resultValuesGroupInfo 212 * @throws OperationFailedException unable to complete request 213 * @throws PermissionDeniedException authorization failure 214 * @throws VersionMismatchException action was attempted on an out of 215 * date version 216 */ 217 public ResultValuesGroupInfo updateResultValuesGroup(@WebParam(name = "resultValuesGroupKey") String resultValuesGroupKey, 218 @WebParam(name = "resultValuesGroupInfo") ResultValuesGroupInfo gradeValuesGroupInfo, 219 @WebParam(name = "contextInfo") ContextInfo contextInfo) 220 throws DataValidationErrorException, 221 DoesNotExistException, 222 InvalidParameterException, 223 MissingParameterException, 224 OperationFailedException, 225 PermissionDeniedException, 226 VersionMismatchException; 227 228 /** 229 * Deletes an existing result values group. 230 * 231 * @param resultValuesGroupKey identifier of the result values group to update 232 * @param contextInfo Context information containing the principalId 233 * and locale information about the caller of service 234 * operation 235 * @return status of the operation 236 * @throws DoesNotExistException resultValuesGroupKey not found 237 * @throws InvalidParameterException invalid resultValuesGroupKey 238 * @throws MissingParameterException missing resultValuesGroupKey 239 * @throws OperationFailedException unable to complete request 240 * @throws PermissionDeniedException authorization failure 241 */ 242 public StatusInfo deleteResultValuesGroup(@WebParam(name = "resultValuesGroupKey") String resultValuesGroupKey, 243 @WebParam(name = "contextInfo") ContextInfo contextInfo) 244 throws DoesNotExistException, 245 InvalidParameterException, 246 MissingParameterException, 247 OperationFailedException, 248 PermissionDeniedException; 249 250 /** 251 * Validates a result values group. Depending on the value of 252 * validationType, this validation could be limited to tests on 253 * just the current object and its directly contained sub-objects 254 * or expanded to perform all tests related to this object. 255 * 256 * @param validationType Identifier of the extent of validation 257 * @param gradeValuesGroupInfo Result values group to be validated 258 * @param contextInfo Context information containing the principalId 259 * and locale information about the caller of service 260 * operation 261 * @return 262 * @throws DoesNotExistException resultValuesGroupInfo does not exist 263 * @throws InvalidParameterException validationType or 264 * resultValuesGroupInfo does not exist 265 * @throws MissingParameterException missing validationType, resultValuesGroupInfo 266 * @throws OperationFailedException unable to complete request 267 */ 268 public List<ValidationResultInfo> validateResultValuesGroup(@WebParam(name = "validationType") String validationType, 269 @WebParam(name = "resultGroupInfo") ResultValuesGroupInfo gradeValuesGroupInfo, 270 @WebParam(name = "contextInfo") ContextInfo contextInfo) 271 throws DoesNotExistException, 272 InvalidParameterException, 273 MissingParameterException, 274 OperationFailedException; 275 276 /** 277 * Get or create a new result values group holding the specified number of credits 278 * 279 * The resulting RVG should have a type of FIXED 280 * 281 * May also create the corresponding credit value. 282 * 283 * @param creditValue the credit value to be found/created 284 * @param scaleKey the scale associated with this type of credit (regular or remedial or continuing ed, etc) 285 * @param contextInfo Context information containing the principalId 286 * and locale information about the caller of service 287 * operation 288 * @return create result values group information 289 * @throws AlreadyExistsException result values group already exists 290 * @throws DataValidationErrorException one or more values invalid for 291 * this operation 292 * @throws InvalidParameterException invalid resultValuesGroupInfo 293 * @throws MissingParameterException missing resultValuesGroupInfo 294 * @throws OperationFailedException unable to complete request 295 * @throws PermissionDeniedException authorization failure 296 * @impl the parameters hold string representations of floating points to avoid rounding issues 297 */ 298 @Override 299 public ResultValuesGroupInfo getCreateFixedCreditResultValuesGroup(@WebParam(name = "creditValue") String creditValue, 300 @WebParam(name = "scaleKey") String scaleKey, 301 @WebParam(name = "contextInfo") ContextInfo contextInfo) 302 throws InvalidParameterException, 303 MissingParameterException, 304 OperationFailedException, 305 PermissionDeniedException; 306 307 /** 308 * Get or create a new result values group holding the specified number of credits 309 * 310 * The resulting RVG will have a type of RANGE 311 * 312 * @param creditValueMin the minimum credit value of the range to be found/created 313 * @param creditValueMax the maximum credit value to be found/created 314 * @param creditValueIncrement the credit value increment of the range to be found/created 315 * @param scaleKey the scale associated with this type of credit (regular or remedial or continuing ed, etc) 316 * @param contextInfo Context information containing the principalId 317 * and locale information about the caller of service 318 * operation 319 * @return create result values group information 320 * @throws AlreadyExistsException result values group already exists 321 * @throws DataValidationErrorException one or more values invalid for 322 * this operation 323 * @throws InvalidParameterException invalid resultValuesGroupInfo 324 * @throws MissingParameterException missing resultValuesGroupInfo 325 * @throws OperationFailedException unable to complete request 326 * @throws PermissionDeniedException authorization failure 327 * @impl the parameters hold string representations of floating points to avoid rounding issues 328 */ 329 @Override 330 public ResultValuesGroupInfo getCreateRangeCreditResultValuesGroup(@WebParam(name = "creditValueMin") String creditValueMin, 331 @WebParam(name = "creditValueMax") String creditValueMax, 332 @WebParam(name = "creditValueIncrement") String creditValueIncrement, 333 @WebParam(name = "scaleKey") String scaleKey, 334 @WebParam(name = "contextInfo") ContextInfo contextInfo) 335 throws InvalidParameterException, 336 MissingParameterException, 337 OperationFailedException, 338 PermissionDeniedException; 339 340 /** 341 * Get or create a new result values group holding the specified number of credits 342 * 343 * The resulting RVG should have the type of MULTIPLE 344 * 345 * @param creditValues the minimum credit value of the range to be found/created 346 * @param scaleKey the scale associated with this type of credit (regular or remedial or continuing ed, etc) 347 * @param contextInfo Context information containing the principalId 348 * and locale information about the caller of service 349 * operation 350 * @return create result values group information 351 * @throws AlreadyExistsException result values group already exists 352 * @throws DataValidationErrorException one or more values invalid for 353 * this operation 354 * @throws InvalidParameterException invalid resultValuesGroupInfo 355 * @throws MissingParameterException missing resultValuesGroupInfo 356 * @throws OperationFailedException unable to complete request 357 * @throws PermissionDeniedException authorization failure 358 * @impl the parameters hold string representations of floating points to avoid rounding issues 359 */ 360 @Override 361 public ResultValuesGroupInfo getCreateMultipleCreditResultValuesGroup(@WebParam(name = "creditValues") List<String> creditValues, 362 @WebParam(name = "scaleKey") String scaleKey, 363 @WebParam(name = "contextInfo") ContextInfo contextInfo) 364 throws InvalidParameterException, 365 MissingParameterException, 366 OperationFailedException, 367 PermissionDeniedException; 368 369 /** 370 * Retrieves result value by its id. 371 * 372 * @param resultValueKey identifier for the result 373 * @param contextInfo Context information containing the principalId 374 * and locale information about the caller of service 375 * operation 376 * @return details about a result value 377 * @throws DoesNotExistException the resultValueKey is not found 378 * @throws InvalidParameterException invalid resultValueKey 379 * @throws MissingParameterException missing parameter 380 * @throws OperationFailedException unable to complete request 381 * @throws PermissionDeniedException authorization failure 382 */ 383 public ResultValueInfo getResultValue(@WebParam(name = "resultValueKey") String resultValueKey, 384 @WebParam(name = "contextInfo") ContextInfo contextInfo) 385 throws DoesNotExistException, 386 InvalidParameterException, 387 MissingParameterException, 388 OperationFailedException, 389 PermissionDeniedException; 390 391 /** 392 * Retrieves a list of result value objects for a list of identifiers. 393 * 394 * @param resultValueKeys identifier for the result 395 * @param contextInfo Context information containing the principalId 396 * and locale information about the caller of service 397 * operation 398 * @return list of result group identifiers 399 * @throws DoesNotExistException a resultValueKey from the list is not found 400 * @throws InvalidParameterException invalid resultValueKeys 401 * @throws MissingParameterException missing resultValueKeys 402 * @throws OperationFailedException unable to complete request 403 * @throws PermissionDeniedException authorization failure 404 */ 405 public List<ResultValueInfo> getResultValuesByKeys(@WebParam(name = "resultValueKeys") List<String> resultValueKeys, 406 @WebParam(name = "contextInfo") ContextInfo contextInfo) 407 throws DoesNotExistException, 408 InvalidParameterException, 409 MissingParameterException, 410 OperationFailedException, 411 PermissionDeniedException; 412 413 /** 414 * Retrieves a list of result values by type. 415 * 416 * @param resultValueTypeKey identifier for the result group type 417 * @param contextInfo Context information containing the principalId 418 * and locale information about the caller of service 419 * operation 420 * @return list of result group identifiers 421 * @throws DoesNotExistException resultValueTypeKey not found 422 * @throws InvalidParameterException invalid resultValueTypeKey 423 * @throws MissingParameterException missing resultValueTypeKey 424 * @throws OperationFailedException unable to complete request 425 * @throws PermissionDeniedException authorization failure 426 */ 427 public List<String> getResultValueKeysByType(@WebParam(name = "resultValueTypeKey") String resultValueTypeKey, 428 @WebParam(name = "contextInfo") ContextInfo contextInfo) 429 throws DoesNotExistException, 430 InvalidParameterException, 431 MissingParameterException, 432 OperationFailedException, 433 PermissionDeniedException; 434 435 /** 436 * Retrieves a list of result value objects for a specified result 437 * values group. It is sorted by the scale inside the values group. 438 * 439 * @param resultValuesGroupKey identifier for the result values group 440 * @param contextInfo Context information containing the principalId 441 * and locale information about the caller of service 442 * operation 443 * @return list of result group identifiers 444 * @throws DoesNotExistException resultValueKey not found 445 * @throws InvalidParameterException invalid resultValuesGroupKey 446 * @throws MissingParameterException missing resultValuesGroupKey 447 * @throws OperationFailedException unable to complete request 448 * @throws PermissionDeniedException authorization failure 449 */ 450 public List<ResultValueInfo> getResultValuesForResultValuesGroup(@WebParam(name = "resultValuesGroupKey") String resultValuesGroupKey, 451 @WebParam(name = "contextInfo") ContextInfo contextInfo) 452 throws DoesNotExistException, 453 InvalidParameterException, 454 MissingParameterException, 455 OperationFailedException, 456 PermissionDeniedException; 457 458 /** 459 * Create a new result value 460 * @param resultScaleKey scale to which this value is attached 461 * @param resultValueTypeKey type of the result value to be created 462 * @param resultValueInfo info about the result value 463 * @param contextInfo Context information containing the principalId 464 * and locale information about the caller of service 465 * operation 466 * @return newly created resultValue 467 * @throws AlreadyExistsException resultValue already exists 468 * @throws DataValidationErrorException one or more values invalid for 469 * this operation 470 * @throws InvalidParameterException invalid resultValueInfo 471 * @throws MissingParameterException missing resultValueInfo 472 * @throws OperationFailedException unable to complete request 473 * @throws PermissionDeniedException authorization failure 474 */ 475 public ResultValueInfo createResultValue( 476 @WebParam(name = "resultScaleKey") String resultScaleKey, 477 @WebParam(name = "resultValueTypeKey") String resultValueTypeKey, 478 @WebParam(name = "resultValueInfo") ResultValueInfo resultValueInfo, 479 @WebParam(name = "contextInfo") ContextInfo contextInfo) 480 throws AlreadyExistsException, 481 DataValidationErrorException, 482 DoesNotExistException, 483 InvalidParameterException, 484 MissingParameterException, 485 OperationFailedException, 486 PermissionDeniedException; 487 488 /** 489 * Update a result value 490 * @param resultValueKey resultValueKey to be updated 491 * @param resultValueInfo update information for the result value 492 * @param contextInfo Context information containing the principalId 493 * and locale information about the caller of service 494 * operation 495 * @return updated information about the result value 496 * @throws DataValidationErrorException one or more values invalid for 497 * this operation 498 * @throws DoesNotExistException resultValueKey does not exist 499 * @throws InvalidParameterException invalid resultValueKey, resultValueInfo 500 * @throws MissingParameterException missing resultValueKey, resultValueInfo 501 * @throws OperationFailedException unable to complete request 502 * @throws PermissionDeniedException authorization failure 503 * @throws VersionMismatchException action was attempted on an out of 504 * date version 505 */ 506 public ResultValueInfo updateResultValue(@WebParam(name = "resultValueKey") String resultValueKey, 507 @WebParam(name = "resultValueInfo") ResultValueInfo resultValueInfo, 508 @WebParam(name = "contextInfo") ContextInfo contextInfo) 509 throws DataValidationErrorException, 510 DoesNotExistException, 511 InvalidParameterException, 512 MissingParameterException, 513 OperationFailedException, 514 PermissionDeniedException, 515 VersionMismatchException; 516 517 /** 518 * Delete a result value. This should not be allowed if any result values group is still referencing the result value. 519 * @param resultValueKey result value to be deleted 520 * @param contextInfo Context information containing the principalId 521 * and locale information about the caller of service 522 * operation 523 * @return status of the delete operation 524 * @throws DoesNotExistException resultValueKey does not exist 525 * @throws DependentObjectsExistException if a group is tied to this value 526 * @throws InvalidParameterException invalid resultValueKey 527 * @throws MissingParameterException missing resultValueKey 528 * @throws OperationFailedException unable to complete request 529 * @throws PermissionDeniedException authorization failure 530 */ 531 public StatusInfo deleteResultValue(@WebParam(name = "resultValueKey") String resultValueKey, 532 @WebParam(name = "contextInfo") ContextInfo contextInfo) 533 throws DoesNotExistException, 534 DependentObjectsExistException, 535 InvalidParameterException, 536 MissingParameterException, 537 OperationFailedException, 538 PermissionDeniedException; 539 540 /** 541 * Validates a Result Value. Depending on the value of 542 * validationType, this validation could be limited to tests on 543 * just the current object and its directly contained subobjects 544 * or expanded to perform all tests related to this object. If an 545 * identifier is present for the academic calendar and a record 546 * is found for that identifier, the validation checks if the 547 * academic calendar can be shifted to the new values. If a 548 * record cannot be found for the identifier, it is assumed that 549 * the record does not exist and as such, the checks performed 550 * will be much shallower, typically mimicking those performed by 551 * setting the validationType to the current object. This is a 552 * slightly different pattern from the standard validation as the 553 * caller provides the identifier in the create statement instead 554 * of the server assigning an identifier. 555 * 556 * @param validationType Identifier of the extent of validation 557 * @param resultValueInfo Result value to be validated 558 * @param contextInfo Context information containing the principalId 559 * and locale information about the caller of service 560 * operation 561 * @return a ValidationResultInfo 562 * @throws DoesNotExistException resultValueInfo does not exist 563 * @throws InvalidParameterException validationType or resultValueInfo 564 * does not exist 565 * @throws MissingParameterException missing validationType or resultValueInfo 566 * @throws OperationFailedException unable to complete request 567 */ 568 public List<ValidationResultInfo> validateResultValue(@WebParam(name = "validationType") String validationType, 569 @WebParam(name = "resultValueInfo") ResultValueInfo resultValueInfo, 570 @WebParam(name = "contextInfo") ContextInfo contextInfo) 571 throws DoesNotExistException, 572 InvalidParameterException, 573 MissingParameterException, 574 OperationFailedException; 575 576 /** 577 * Get or create a new result value holding the specified numeric value within the range 578 * 579 * The resulting result value should be attached to the specified group and must be within 580 * the range of the group 581 * 582 * @param resultValue the result value within the specified group range to be found/created 583 * @param scaleKey the with associated with this value 584 * @param contextInfo Context information containing the principalId 585 * and locale information about the caller of service 586 * operation 587 * @return the result value group information 588 * @throws InvalidParameterException invalid scaleKey or scaleKey is not a range 589 * @throws MissingParameterException missing resultValuesGroupInfo 590 * @throws OperationFailedException unable to complete request 591 * @throws PermissionDeniedException authorization failure 592 * @impl the parameters hold string representations of floating points to avoid rounding issues 593 */ 594 @Override 595 public ResultValueInfo getCreateResultValueForScale(@WebParam(name = "resultValue") String resultValue, 596 @WebParam(name = "scaleKey") String scaleKey, 597 @WebParam(name = "contextInfo") ContextInfo contextInfo) 598 throws InvalidParameterException, 599 MissingParameterException, 600 OperationFailedException, 601 PermissionDeniedException; 602 603 /** 604 * Retrieves result scale by an identifier. 605 * 606 * @param resultScaleKey identifiers for result scale to be retrieved 607 * @param contextInfo Context information containing the principalId 608 * and locale information about the caller of service 609 * operation 610 * @return details of the result scale for the id 611 * @throws DoesNotExistException resultValuesGroupKey not found 612 * @throws InvalidParameterException invalid resultValuesGroupKey 613 * @throws MissingParameterException invalid resultValuesGroupKey 614 * @throws OperationFailedException unable to complete request 615 * @throws PermissionDeniedException authorization failure 616 */ 617 public ResultScaleInfo getResultScale(@WebParam(name = "resultScaleKey") String resultScaleKey, 618 @WebParam(name = "contextInfo") ContextInfo contextInfo) 619 throws DoesNotExistException, 620 InvalidParameterException, 621 MissingParameterException, 622 OperationFailedException, 623 PermissionDeniedException; 624 625 /** 626 * Retrieves result scales by a list of identifiers. 627 * 628 * @param resultScaleKeys identifiers for result scale 629 * @param contextInfo Context information containing the principalId 630 * and locale information about the caller of service 631 * operation 632 * @return result scale list 633 * @throws DoesNotExistException resultScale not found 634 * @throws InvalidParameterException invalid resultScaleKeys 635 * @throws MissingParameterException invalid resultScaleKeys 636 * @throws OperationFailedException unable to complete request 637 * @throws PermissionDeniedException authorization failure 638 */ 639 public List<ResultScaleInfo> getResultScalesByKeys(@WebParam(name = "resultScaleKeys") List<String> resultScaleKeys, 640 @WebParam(name = "contextInfo") ContextInfo contextInfo) 641 throws DoesNotExistException, 642 InvalidParameterException, 643 MissingParameterException, 644 OperationFailedException, 645 PermissionDeniedException; 646 647 /** 648 * Retrieves a list of result group identifiers for a specified 649 * result scale type. 650 * 651 * @param resultScaleTypeKey identifier for the result group type 652 * @param contextInfo Context information containing the principalId 653 * and locale information about the caller of service 654 * operation 655 * @return list of result group identifiers 656 * @throws DoesNotExistException resultScaleTypeKey not found 657 * @throws InvalidParameterException invalid resultScaleTypeKey 658 * @throws MissingParameterException missing resultScaleTypeKey 659 * @throws OperationFailedException unable to complete request 660 * @throws PermissionDeniedException authorization failure 661 */ 662 public List<String> getResultScaleKeysByType(@WebParam(name = "resultScaleTypeKey") String resultScaleTypeKey, 663 @WebParam(name = "contextInfo") ContextInfo contextInfo) 664 throws DoesNotExistException, 665 InvalidParameterException, 666 MissingParameterException, 667 OperationFailedException, 668 PermissionDeniedException; 669 670 /** 671 * Creates a new result scale. 672 * 673 * @param resultScaleTypeKey type key of the result scale 674 * @param resultScaleInfo information about the result scale 675 * being created 676 * @param contextInfo Context information containing the principalId 677 * and locale information about the caller of service 678 * operation 679 * @return create result scale information 680 * @throws AlreadyExistsException result scale already exists 681 * @throws DataValidationErrorException one or more values invalid for 682 * this operation 683 * @throws InvalidParameterException invalid resultScaleInfo 684 * @throws MissingParameterException missing resultScaleInfo 685 * @throws OperationFailedException unable to complete request 686 * @throws PermissionDeniedException authorization failure 687 */ 688 public ResultScaleInfo createResultScale(@WebParam(name = "resultScaleTypeKey") String resultScaleTypeKey, 689 @WebParam(name = "resultGroupInfo") ResultScaleInfo resultScaleInfo, 690 @WebParam(name = "contextInfo") ContextInfo contextInfo) 691 throws AlreadyExistsException, 692 DataValidationErrorException, 693 InvalidParameterException, 694 MissingParameterException, 695 OperationFailedException, 696 PermissionDeniedException; 697 698 /** 699 * Updates an existing result scale. 700 * 701 * @param resultScaleKey identifier of the result scale to update 702 * @param resultGroupInfo updated information about the result scale 703 * @param contextInfo Context information containing the principalId 704 * and locale information about the caller of service 705 * operation 706 * @return updated result scale information 707 * @throws DataValidationErrorException one or more values invalid for 708 * this operation 709 * @throws DoesNotExistException resultScaleKey not found 710 * @throws InvalidParameterExceptioninvalid resultScaleKey or 711 * resultScaleInfo 712 * @throws MissingParameterException missing resultScaleKey or 713 * resultScaleInfo 714 * @throws OperationFailedException unable to complete request 715 * @throws PermissionDeniedException authorization failure 716 * @throws VersionMismatchException action was attempted on an out of 717 * date version 718 */ 719 public ResultScaleInfo updateResultScale(@WebParam(name = "resultScaleKey") String resultScaleKey, 720 @WebParam(name = "resultScaleInfo") ResultScaleInfo resultScaleInfo, 721 @WebParam(name = "contextInfo") ContextInfo contextInfo) 722 throws DataValidationErrorException, 723 DoesNotExistException, 724 InvalidParameterException, 725 MissingParameterException, 726 OperationFailedException, 727 PermissionDeniedException, 728 VersionMismatchException; 729 730 /** 731 * Deletes an existing result scale. 732 * 733 * @param resultScaleKey identifier of the result scale to update 734 * @param contextInfo Context information containing the principalId 735 * and locale information about the caller of service 736 * operation 737 * @return status of the operation 738 * @throws DoesNotExistException resultScaleKey not found 739 * @throws DependentObjectsExistException if a group or value exists for this scale 740 * @throws InvalidParameterException invalid resultScaleKey 741 * @throws MissingParameterException missing resultScaleKey 742 * @throws OperationFailedException unable to complete request 743 * @throws PermissionDeniedException authorization failure 744 */ 745 public StatusInfo deleteResultScale(@WebParam(name = "resultScaleKey") String resultScaleKey, 746 @WebParam(name = "contextInfo") ContextInfo contextInfo) 747 throws DoesNotExistException, 748 DependentObjectsExistException, 749 InvalidParameterException, 750 MissingParameterException, 751 OperationFailedException, 752 PermissionDeniedException; 753 754 /** 755 * Validates a result scale. Depending on the value of 756 * validationType, this validation could be limited to tests on 757 * just the current object and its directly contained sub-objects 758 * or expanded to perform all tests related to this object. 759 * 760 * @param validationType Identifier of the extent of validation 761 * @param gradeScaleInfo Result scale to be validated 762 * @param contextInfo Context information containing the principalId 763 * and locale information about the caller of service 764 * operation 765 * @return 766 * @throws DoesNotExistException resultScaleInfo does not exist 767 * @throws InvalidParameterException validationType or 768 * resultScaleInfo does not exist 769 * @throws MissingParameterException missing validationType, resultScaleInfo 770 * @throws OperationFailedException unable to complete request 771 */ 772 public List<ValidationResultInfo> validateResultScale(@WebParam(name = "validationType") String validationType, 773 @WebParam(name = "gradeScaleInfo") ResultScaleInfo gradeScaleInfo, 774 @WebParam(name = "contextInfo") ContextInfo contextInfo) 775 throws DoesNotExistException, 776 InvalidParameterException, 777 MissingParameterException, 778 OperationFailedException; 779 780 /** 781 * Retrieves result values by result scale key. 782 * 783 * @param resultScaleKey key to the scale 784 * @param contextInfo Context information containing the principalId 785 * and locale information about the caller of service 786 * operation 787 * @return a list of result values for the scale 788 * @throws DoesNotExistException resultScaleKey is not found 789 * @throws InvalidParameterException invalid resultScaleKey 790 * @throws MissingParameterException null resultScaleKey 791 * @throws OperationFailedException unable to complete request 792 * @throws PermissionDeniedException authorization failure 793 */ 794 public List<ResultValueInfo> getResultValuesForScale(@WebParam(name = "resultScaleKey") String resultScaleKey, 795 @WebParam(name = "contextInfo") ContextInfo contextInfo) 796 throws DoesNotExistException, 797 InvalidParameterException, 798 MissingParameterException, 799 OperationFailedException, 800 PermissionDeniedException; 801 802 /** 803 * Retrieves a result value by result scale key and value 804 * 805 * @param resultScaleKey key to the scale 806 * @param value the specific value 807 * @param contextInfo Context information containing the principalId 808 * and locale information about the caller of service 809 * operation 810 * @return the matching Result Value 811 * @throws DoesNotExistException resultScaleKey is not found 812 * @throws InvalidParameterException invalid resultScaleKey 813 * @throws MissingParameterException null resultScaleKey 814 * @throws OperationFailedException unable to complete request 815 * @throws PermissionDeniedException authorization failure 816 */ 817 public ResultValueInfo getResultValueForScaleAndValue(@WebParam(name = "resultScaleKey") String resultScaleKey, 818 @WebParam(name = "value") String value, 819 @WebParam(name = "contextInfo") ContextInfo contextInfo) 820 throws DoesNotExistException, 821 InvalidParameterException, 822 MissingParameterException, 823 OperationFailedException, 824 PermissionDeniedException; 825 826 /** 827 * Retrieves result values for the list of Result values groups. 828 * 829 * No values are selected for groups that are RANGES. 830 * 831 * @param resultValuesGroupKeys list of result value groups for which to return values 832 * @param contextInfo Context information containing the principalId 833 * and locale information about the caller of service 834 * operation 835 * @return a list of unique result values for that set of groups 836 * @throws DoesNotExistException resultScaleKey is not found 837 * @throws InvalidParameterException invalid resultScaleKey 838 * @throws MissingParameterException null resultScaleKey 839 * @throws OperationFailedException unable to complete request 840 * @throws PermissionDeniedException authorization failure 841 */ 842 public List<ResultValueInfo> getResultValuesForResultValuesGroups(@WebParam(name = "resultValuesGroupKeys") List<String> resultValuesGroupKeys, 843 @WebParam(name = "contextInfo") ContextInfo contextInfo) 844 throws DoesNotExistException, 845 InvalidParameterException, 846 MissingParameterException, 847 OperationFailedException, 848 PermissionDeniedException; 849 850 /** 851 * Retrieves a list of existing result values groups that have a scale 852 * of the specified type. 853 * 854 * @param resultScaleTypeKey identifier for result scale type key 855 * @param contextInfo Context information containing the principalId 856 * and locale information about the caller of service 857 * operation 858 * @return details of the results for these keys 859 * @throws DoesNotExistException resultValue not found 860 * @throws InvalidParameterException invalid resultValueKey 861 * @throws MissingParameterException invalid resultValueKey 862 * @throws OperationFailedException unable to complete request 863 * @throws PermissionDeniedException authorization failure 864 */ 865 public List<ResultValuesGroupInfo> getResultValuesGroupsByResultScaleType(@WebParam(name = "resultScaleTypeKey") String resultScaleTypeKey, 866 @WebParam(name = "contextInfo") ContextInfo contextInfo) 867 throws DoesNotExistException, 868 InvalidParameterException, 869 MissingParameterException, 870 OperationFailedException, 871 PermissionDeniedException; 872 873 874 /** 875 * Searches for result scale ids using a free form search criteria. 876 * 877 * @param criteria 878 * @param context 879 * @return 880 * @throws InvalidParameterException 881 * @throws MissingParameterException 882 * @throws OperationFailedException 883 * @throws PermissionDeniedException 884 */ 885 public List<String> searchForResultScaleIds(@WebParam(name = "criteria") QueryByCriteria criteria, 886 @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, 887 OperationFailedException, PermissionDeniedException; 888 889 /** 890 * Searches for result scales using a free form search criteria 891 * 892 * @param criteria 893 * @param context 894 * @throws InvalidParameterException 895 * @throws MissingParameterException 896 * @throws OperationFailedException 897 * @throws PermissionDeniedException 898 */ 899 public List<ResultScaleInfo> searchForResultScales(@WebParam(name = "criteria") QueryByCriteria criteria, 900 @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, 901 OperationFailedException,PermissionDeniedException; 902 903 904 905 /** 906 * Searches for result value ids using a free form search criteria. 907 * 908 * @param criteria 909 * @param context 910 * @return 911 * @throws InvalidParameterException 912 * @throws MissingParameterException 913 * @throws OperationFailedException 914 * @throws PermissionDeniedException 915 */ 916 public List<String> searchForResultValueIds(@WebParam(name = "criteria") QueryByCriteria criteria, 917 @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, 918 OperationFailedException, PermissionDeniedException; 919 920 /** 921 * Searches for result values using a free form search criteria 922 * 923 * @param criteria 924 * @param context 925 * @throws InvalidParameterException 926 * @throws MissingParameterException 927 * @throws OperationFailedException 928 * @throws PermissionDeniedException 929 */ 930 public List<ResultValueInfo> searchForResultValues(@WebParam(name = "criteria") QueryByCriteria criteria, 931 @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, 932 OperationFailedException,PermissionDeniedException; 933 934 935 936 /** 937 * Searches for result value group ids using a free form search criteria. 938 * 939 * @param criteria 940 * @param context 941 * @return 942 * @throws InvalidParameterException 943 * @throws MissingParameterException 944 * @throws OperationFailedException 945 * @throws PermissionDeniedException 946 */ 947 public List<String> searchForResultValuesGroupIds(@WebParam(name = "criteria") QueryByCriteria criteria, 948 @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, 949 OperationFailedException, PermissionDeniedException; 950 951 /** 952 * Searches for result value groups using a free form search criteria 953 * 954 * @param criteria 955 * @param context 956 * @throws InvalidParameterException 957 * @throws MissingParameterException 958 * @throws OperationFailedException 959 * @throws PermissionDeniedException 960 */ 961 public List<ResultValuesGroupInfo> searchForResultValuesGroups(@WebParam(name = "criteria") QueryByCriteria criteria, 962 @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, 963 OperationFailedException,PermissionDeniedException; 964 965 }