1 /** 2 * Copyright 2010 The Kuali Foundation Licensed under the 3 * Educational Community License, Version 2.0 (the "License"); you may 4 * not use this file except in compliance with the License. You may 5 * obtain a copy of the License at 6 * 7 * http://www.osedu.org/licenses/ECL-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, 10 * software distributed under the License is distributed on an "AS IS" 11 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 * or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package org.kuali.student.core.statement.service; 17 18 import java.util.List; 19 20 import javax.jws.WebParam; 21 import javax.jws.WebService; 22 import javax.jws.soap.SOAPBinding; 23 24 import org.kuali.student.core.dictionary.service.DictionaryService; 25 import org.kuali.student.core.dto.StatusInfo; 26 import org.kuali.student.core.exceptions.AlreadyExistsException; 27 import org.kuali.student.core.exceptions.CircularReferenceException; 28 import org.kuali.student.core.exceptions.CircularRelationshipException; 29 import org.kuali.student.core.exceptions.DataValidationErrorException; 30 import org.kuali.student.core.exceptions.DoesNotExistException; 31 import org.kuali.student.core.exceptions.InvalidParameterException; 32 import org.kuali.student.core.exceptions.MissingParameterException; 33 import org.kuali.student.core.exceptions.OperationFailedException; 34 import org.kuali.student.core.exceptions.PermissionDeniedException; 35 import org.kuali.student.core.exceptions.VersionMismatchException; 36 import org.kuali.student.core.search.service.SearchService; 37 import org.kuali.student.core.statement.dto.NlUsageTypeInfo; 38 import org.kuali.student.core.statement.dto.RefStatementRelationInfo; 39 import org.kuali.student.core.statement.dto.RefStatementRelationTypeInfo; 40 import org.kuali.student.core.statement.dto.ReqComponentInfo; 41 import org.kuali.student.core.statement.dto.ReqComponentTypeInfo; 42 import org.kuali.student.core.statement.dto.StatementInfo; 43 import org.kuali.student.core.statement.dto.StatementTreeViewInfo; 44 import org.kuali.student.core.statement.dto.StatementTypeInfo; 45 import org.kuali.student.core.validation.dto.ValidationResultInfo; 46 47 @WebService(name = "StatementService", targetNamespace = "http://student.kuali.org/wsdl/statement") 48 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) 49 public interface StatementService extends DictionaryService, SearchService { 50 51 /** 52 * Retrieves the list of base types which can be connected to a document. 53 * 54 * @return The list of types which can be connected to a document 55 * @throws OperationFailedException Unable to complete request 56 */ 57 public List<String> getRefObjectTypes() throws OperationFailedException; 58 59 /** 60 * Retrieves the list of types for a given base type which can be connected to a document. 61 * 62 * @param objectTypeKey Reference Type Identifier 63 * @return The list of types for the given base type which can be connected to a document 64 * @throws OperationFailedException Unable to complete request 65 */ 66 public List<String> getRefObjectSubTypes(@WebParam(name="objectTypeKey")String objectTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 67 68 /** 69 * Retrieves the list of natural language usage types known by the service. 70 * 71 * @return List of natural language usage type information 72 * @throws OperationFailedException Unable to complete request 73 */ 74 public List<NlUsageTypeInfo> getNlUsageTypes() throws OperationFailedException; 75 76 /** 77 * Retrieves information about the specified natural language usage type. 78 * 79 * @param nlUsageTypeKey Natural language usage type identifier 80 * @return Information about a type of natural language usage 81 * @throws DoesNotExistException nlUsageType not found 82 * @throws InvalidParameterException Invalid nlUsageTypeKey 83 * @throws MissingParameterException Missing nlUsageTypeKey 84 * @throws OperationFailedException Unable to complete request 85 */ 86 public NlUsageTypeInfo getNlUsageType(@WebParam(name="nlUsageTypeKey")String nlUsageTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 87 88 /** 89 * Creates a relationship between a statement and an object. 90 * 91 * @param refStatementRelationInfo 92 * @return New object statement relationship 93 * @throws AlreadyExistsException connection between object and statement already exists 94 * @throws DoesNotExistException E.g. cluId, statementId, refStatementRelationType not found 95 * @throws InvalidParameterException One or more parameters invalid 96 * @throws MissingParameterException One or more parameters not specified 97 * @throws OperationFailedException Unable to complete request 98 * @throws PermissionDeniedException Authorization failure 99 */ 100 public RefStatementRelationInfo createRefStatementRelation(@WebParam(name="refStatementRelationInfo")RefStatementRelationInfo refStatementRelationInfo) throws AlreadyExistsException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 101 102 /** 103 * Updates a relationship between an object and statement. 104 * 105 * @param refStatementRelationId Identifier of the object statement relationship to be updated 106 * @param refStatementRelationInfo Information about the object statement relationship to be updated 107 * @return Updated object statement relationship information 108 * @throws DataValidationErrorException One or more values invalid for this operation 109 * @throws DoesNotExistException refStatementRelation not found 110 * @throws InvalidParameterException One or more parameters invalid 111 * @throws MissingParameterException One or more parameters missing 112 * @throws OperationFailedException Unable to complete request 113 * @throws PermissionDeniedException Authorization failure 114 * @throws VersionMismatchException The action was attempted on an out of date version. 115 */ 116 public RefStatementRelationInfo updateRefStatementRelation(@WebParam(name="refStatementRelationId")String refStatementRelationId, @WebParam(name="refStatementRelationInfo")RefStatementRelationInfo refStatementRelationInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException; 117 118 /** 119 * Removes a relationship between a statement and an object. 120 * 121 * @param refStatementRelationId Object Statement Relationship identifier 122 * @return Status 123 * @throws DoesNotExistException RefStatementRelation not found 124 * @throws InvalidParameterException Invalid refStatementRelationId 125 * @throws MissingParameterException RefStatementRelationId not specified 126 * @throws OperationFailedException Unable to complete request 127 * @throws PermissionDeniedException Authorization failure 128 */ 129 public StatusInfo deleteRefStatementRelation(@WebParam(name="refStatementRelationId")String refStatementRelationId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 130 131 /** 132 * Validates a refStatementRelation. Depending on the value of 133 * validationType, this validation could be limited to tests on just 134 * the current object and its directly contained sub-objects or expanded 135 * to perform all tests related to this object. If an identifier is 136 * present for the relationship (and/or one of its contained sub-objects) 137 * and a record is found for that identifier, the validation checks if 138 * the relationship can be shifted to the new values. If an identifier is 139 * not present or a record cannot be found for the identifier, it is 140 * assumed that the record does not exist and as such, the checks 141 * performed will be much shallower, typically mimicking those performed 142 * by setting the validationType to the current object. 143 * 144 * @param validationType Identifier of the extent of validation 145 * @param refStatementRelationInfo Object statement relationship information to be tested 146 * @return Results from performing the validation 147 * @throws DoesNotExistException validationTypeKey not found 148 * @throws InvalidParameterException Invalid validationTypeKey, refStatementRelationInfo 149 * @throws MissingParameterException Missing validationTypeKey, refStatementRelationInfo 150 * @throws OperationFailedException Unable to complete request 151 */ 152 public List<ValidationResultInfo> validateRefStatementRelation(@WebParam(name="validationType")String validationType, @WebParam(name="refStatementRelationInfo")RefStatementRelationInfo refStatementRelationInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 153 154 /** 155 * Retrieves a object statement relationship by its identifier. 156 * 157 * @param refStatementRelationId Object statement relationship identifier 158 * @return Object statement relationship information 159 * @throws DoesNotExistException RefStatementRelation not found 160 * @throws InvalidParameterException Invalid refStatementRelationId 161 * @throws MissingParameterException RefStatementRelationId not specified 162 * @throws OperationFailedException Unable to complete request 163 */ 164 public RefStatementRelationInfo getRefStatementRelation(@WebParam(name="refStatementRelationId")String refStatementRelationId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 165 166 /** 167 * Retrieves a list of object statement relationships for a particular object. 168 * 169 * @param refObjectTypeKey Reference type 170 * @param refObjectId Reference identifier 171 * @return List of object statement relationships for a particular object 172 * @throws DoesNotExistException Object not found 173 * @throws InvalidParameterException One or more parameters invalid 174 * @throws MissingParameterException One or more parameters not specified 175 * @throws OperationFailedException Unable to complete request 176 */ 177 public List<RefStatementRelationInfo> getRefStatementRelationsByRef(@WebParam(name="refObjectTypeKey")String refObjectTypeKey, @WebParam(name="refObjectId")String refObjectId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 178 179 /** 180 * Retrieves a list of object statement relationships for a particular statement. 181 * 182 * @param statementId Statement identifier 183 * @return List of object statement relationships for a particular statement 184 * @throws DoesNotExistException Statement not found 185 * @throws InvalidParameterException One or more parameters invalid 186 * @throws MissingParameterException One or more parameters not specified 187 * @throws OperationFailedException Unable to complete request 188 */ 189 public List<RefStatementRelationInfo> getRefStatementRelationsByStatement(@WebParam(name="statementId")String statementId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 190 191 /** 192 * <p>Translates and retrieves a statement for a specific usuage type 193 * (context) and language into natural language.</p> 194 * 195 * <p>If <code>language</code> is null default language is used.</p> 196 * 197 * <p>An <code>StatementInfo</code> can either have a list of 198 * <code>StatementInfo</code>s as children or a list of 199 * <code>ReqComponentInfo</code>s but not both. This means that all leaf 200 * nodes must be <code>ReqComponentInfo</code>s.</p> 201 * 202 * @param statementId Statement to translate 203 * @param nlUsageTypeKey Natural language usage type key (context) 204 * @param language Translation language 205 * @throws DoesNotExistException Statement not found 206 * @throws InvalidParameterException Invalid nlUsageTypeKey 207 * @throws MissingParameterException Missing statementId or nlUsageTypeKey 208 * @throws OperationFailedException Unable to complete request 209 * @throws VersionMismatchException The action was attempted on an out of date version. 210 */ 211 public String getNaturalLanguageForStatement(@WebParam(name="statementId")String statementId, @WebParam(name="nlUsageTypeKey")String nlUsageTypeKey, @WebParam(name="language")String language) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 212 213 /** 214 * Retrieves the natural language translation for a particular object 215 * statement relationship in a particular context for a particular language. 216 * 217 * @param refStatementRelationId Object statement relationship identifier 218 * @param nlUsageTypeKey Context for the natural language translation 219 * @param language Language to use for the natural language translation 220 * @return Natural language translation for a particular object statement relationship in a particular context 221 * @throws DoesNotExistException Object statement relationship not found 222 * @throws InvalidParameterException One or more parameters invalid 223 * @throws MissingParameterException One or more parameters not specified 224 * @throws OperationFailedException Unable to complete request 225 */ 226 public String getNaturalLanguageForRefStatementRelation(@WebParam(name="refStatementRelationId")String refStatementRelationId, @WebParam(name="nlUsageTypeKey")String nlUsageTypeKey, @WebParam(name="language")String language) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 227 228 /** 229 * <p>Translates and retrieves a requirement component for a specific 230 * usuage type (context) and language into natural language.</p> 231 * 232 * <p>If <code>language</code> is null default language is used.</p> 233 * 234 * @param reqComponentId Requirement component to translate 235 * @param nlUsageTypeKey Natural language usage type key (context) 236 * @param language Translation language 237 * @throws DoesNotExistException ReqComponent not found 238 * @throws InvalidParameterException Invalid nlUsageTypeKey 239 * @throws MissingParameterException Missing reqComponentId or nlUsageTypeKey 240 * @throws OperationFailedException Unable to complete request 241 * @throws VersionMismatchException The action was attempted on an out of date version. 242 */ 243 public String getNaturalLanguageForReqComponent(@WebParam(name="reqComponentId")String reqComponentId, @WebParam(name="nlUsageTypeKey")String nlUsageTypeKey, @WebParam(name="language")String language) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 244 245 /** 246 * Translates a statement tree view to natural language for a 247 * particular context in a particular language. This may include 248 * statements and/or requirement components which have not yet been 249 * persisted to the service. 250 * 251 * @param statementTreeViewInfo Statement tree view 252 * @param nlUsageTypeKey Context for the natural language translation 253 * @param language Language to use for the natural language translation 254 * @return Natural language translation for a particular statement in a particular context 255 * @throws InvalidParameterException One or more parameters invalid 256 * @throws MissingParameterException One or more parameters not specified 257 * @throws OperationFailedException Unable to complete request 258 */ 259 public String translateStatementTreeViewToNL(@WebParam(name="statementTreeViewInfo")StatementTreeViewInfo statementTreeViewInfo, @WebParam(name="nlUsageTypeKey")String nlUsageTypeKey, @WebParam(name="language")String language) throws InvalidParameterException, MissingParameterException, OperationFailedException; 260 261 /** 262 * Translates a particular requirement component to natural language for 263 * a particular context in a given language. This may be used for 264 * requirement components which have not yet been persisted through 265 * the service. 266 * 267 * @param reqComponentInfo Requirement component 268 * @param nlUsageTypeKey Context for the natural language translation 269 * @param language Language to use for the natural language translation 270 * @return Natural language translation for a particular requirement component in a particular context 271 * @throws InvalidParameterException One or more parameters invalid 272 * @throws MissingParameterException One or more parameters not specified 273 * @throws OperationFailedException Unable to complete request 274 */ 275 public String translateReqComponentToNL(@WebParam(name="reqComponentInfo")ReqComponentInfo reqComponentInfo, @WebParam(name="nlUsageTypeKey")String nlUsageTypeKey, @WebParam(name="language")String language) throws InvalidParameterException, MissingParameterException, OperationFailedException; 276 277 /** 278 * Validates a ReqComponent. Depending on the value of validationType, 279 * this validation could be limited to tests on just the current object and 280 * its directly contained sub-objects or expanded to perform all tests 281 * related to this object. If an identifier is present for the 282 * organization (and/or one of its contained sub-objects) and a record 283 * is found for that identifier, the validation checks if the organization 284 * can be shifted to the new values. If an identifier is not present or 285 * a record cannot be found for the identifier, it is assumed that the 286 * record does not exist and as such, the checks performed will be much 287 * shallower, typically mimicking those performed by setting the 288 * validationType to the current object. 289 * 290 * @param validationType identifier of the extent of validation 291 * @param reqComponentInfo reqComponent information to be tested. 292 * @return results from performing the validation 293 * @throws DoesNotExistException validationTypeKey not found 294 * @throws InvalidParameterException invalid validationTypeKey, reqComponentInfo 295 * @throws MissingParameterException missing validationTypeKey, reqComponentInfo 296 * @throws OperationFailedException unable to complete request 297 */ 298 public List<ValidationResultInfo> validateReqComponent(@WebParam(name="validationType")String validationType, @WebParam(name="reqComponentInfo")ReqComponentInfo reqComponentInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 299 300 /** 301 * Validates a statement. Depending on the value of validationType, 302 * this validation could be limited to tests on just the current object 303 * and its directly contained sub-objects or expanded to perform all 304 * tests related to this object. If an identifier is present for the 305 * statement (and/or one of its contained sub-objects) and a record is 306 * found for that identifier, the validation checks if the statement can 307 * be shifted to the new values. If an identifier is not present or 308 * a record cannot be found for the identifier, it is assumed that the 309 * record does not exist and as such, the checks performed will be much 310 * shallower, typically mimicking those performed by setting the 311 * validationType to the current object. 312 * 313 * @param validationType identifier of the extent of validation 314 * @param statementInfo statement information to be tested. 315 * @return results from performing the validation 316 * @throws DoesNotExistException validationTypeKey not found 317 * @throws InvalidParameterException invalid validationTypeKey, statementInfo 318 * @throws MissingParameterException missing validationTypeKey, statementInfo 319 * @throws OperationFailedException unable to complete request 320 */ 321 public List<ValidationResultInfo> validateStatement(@WebParam(name="validationType")String validationType, @WebParam(name="statementInfo")StatementInfo statementInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 322 323 /** 324 * Retrieves a statement by its identifier 325 * @param statementId statement identifier 326 * @return statementInfo statement information 327 * @throws DoesNotExistException statement not found 328 * @throws InvalidParameterException invalid statementId 329 * @throws MissingParameterException statementId not specified 330 * @throws OperationFailedException unable to complete request 331 */ 332 public StatementInfo getStatement(@WebParam(name="statementId")String statementId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 333 334 /** 335 * Retrieves a list of statements of a particular Type 336 * @param statementTypeKey statementType identifier 337 * @return list of statements using the specified type 338 * @throws DoesNotExistException statementTypeKey not found 339 * @throws InvalidParameterException invalid statementTypeKey 340 * @throws MissingParameterException statementTypeKey not specified 341 * @throws OperationFailedException unable to complete request 342 */ 343 public List<StatementInfo> getStatementsByType(@WebParam(name="statementTypeKey")String statementTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 344 345 /** 346 * Retrieves a requirement component by its identifier 347 * @param reqComponentId requirement component identifier 348 * @return reqComponentInfo requirement component information 349 * @throws DoesNotExistException reqComponent not found 350 * @throws InvalidParameterException invalid reqComponentId 351 * @throws MissingParameterException reqComponentId not specified 352 * @throws OperationFailedException unable to complete request 353 */ 354 public ReqComponentInfo getReqComponent(@WebParam(name="reqComponentId")String reqComponentId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 355 356 /** 357 * Retrieves a list of requirement components of a particular type. 358 * @param reqComponentTypeKey identifier for a type of requirement component 359 * @return reqComponentInfoList A list of requirementComponents 360 * @throws DoesNotExistException reqComponentTypeKey not found 361 * @throws InvalidParameterException invalid reqComponentTypeKey 362 * @throws MissingParameterException reqComponentTypeKey not specified 363 * @throws OperationFailedException unable to complete request 364 */ 365 public List<ReqComponentInfo> getReqComponentsByType(@WebParam(name="reqComponentTypeKey")String reqComponentTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 366 367 /** 368 * Retrieves a list of statements that use a particular requirement component. Note: The reference may not be direct, but through an intermediate object definition (ex. nested statements). 369 * @param reqComponentId requirement component identifier 370 * @return statementInfoList list of statements using the specified requirement component 371 * @throws DoesNotExistException reqComponentId not found 372 * @throws InvalidParameterException invalid reqComponentId 373 * @throws MissingParameterException reqComponentId not specified 374 * @throws OperationFailedException unable to complete request 375 */ 376 public List<StatementInfo> getStatementsUsingReqComponent(@WebParam(name="reqComponentId")String reqComponentId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 377 378 /** 379 * Retrieves a list of child statements that include a particular statement. 380 * Note: The reference may not be direct, but through an 381 * intermediate object definition (e.g. nested statements). 382 * 383 * @param statementId statement identifier 384 * @return List of child statements using the specified statement 385 * @throws DoesNotExistException Statement not found 386 * @throws InvalidParameterException Invalid statementId 387 * @throws MissingParameterException statementId not specified 388 * @throws OperationFailedException Unable to complete request 389 */ 390 public List<StatementInfo> getStatementsUsingStatement(@WebParam(name="statementId")String statementId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 391 392 /** 393 * Creates a requirement component. 394 * @param reqComponentType identifier of the type of requirement component 395 * @param reqComponentInfo information about the requirement component 396 * @return information about the newly created requirement component 397 * @throws AlreadyExistsException Requirement Component already exists 398 * @throws DataValidationErrorException One or more values invalid for this operation 399 * @throws DoesNotExistException reqComponentType not found 400 * @throws InvalidParameterException invalid reqComponentType, reqComponentInfo 401 * @throws MissingParameterException missing reqComponentType, reqComponentInfo 402 * @throws OperationFailedException unable to complete request 403 * @throws PermissionDeniedException authorization failure 404 */ 405 public ReqComponentInfo createReqComponent(@WebParam(name="reqComponentType")String reqComponentType, @WebParam(name="reqComponentInfo")ReqComponentInfo reqComponentInfo) throws AlreadyExistsException, DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 406 407 /** 408 * Deletes a requirement component 409 * @param reqComponentId identifier of the requirement component to delete 410 * @return status of the operation (success or failure) 411 * @throws DoesNotExistException reqComponentId not found 412 * @throws InvalidParameterException invalid reqComponentId 413 * @throws MissingParameterException missing reqComponentId 414 * @throws OperationFailedException unable to complete request 415 * @throws PermissionDeniedException authorization failure 416 */ 417 public StatusInfo deleteReqComponent(@WebParam(name="reqComponentId")String reqComponentId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 418 419 /** 420 * Create a statement. 421 * @param statementType identifier of the type of statement 422 * @param statementInfo information about the statement 423 * @return information about the newly created statement 424 * @throws AlreadyExistsException statement already exists 425 * @throws DataValidationErrorException One or more values invalid for this operation 426 * @throws DoesNotExistException statementType not found 427 * @throws InvalidParameterException invalid statementType, statementInfo 428 * @throws MissingParameterException missing statementType, statementInfo 429 * @throws OperationFailedException unable to complete request 430 * @throws PermissionDeniedException authorization failure 431 */ 432 public StatementInfo createStatement(@WebParam(name="statementType")String statementType, @WebParam(name="statementInfo")StatementInfo statementInfo) throws AlreadyExistsException, DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 433 434 /** 435 * Updates a statement 436 * @param statementId identifier of the statement to be updated 437 * @param statementInfo information about the statement to be updated 438 * @return the updated statement information 439 * @throws CircularReferenceException included statement references the current statement 440 * @throws DataValidationErrorException One or more values invalid for this operation 441 * @throws DoesNotExistException statement not found 442 * @throws InvalidParameterException invalid statementId, statementInfo 443 * @throws MissingParameterException missing statementId, statementInfo 444 * @throws OperationFailedException unable to complete request 445 * @throws PermissionDeniedException authorization failure 446 * @throws VersionMismatchException The action was attempted on an out of date version. 447 */ 448 public StatementInfo updateStatement(@WebParam(name="statementId")String statementId, @WebParam(name="statementInfo")StatementInfo statementInfo) throws CircularReferenceException, DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException; 449 450 /** 451 * Deletes a statement 452 * @param statementId identifier of the Statement to delete 453 * @return statusInfo status of the operation (success or failure) 454 * @throws DoesNotExistException statement not found 455 * @throws InvalidParameterException invalid statementId 456 * @throws MissingParameterException missing statementId 457 * @throws OperationFailedException unable to complete request 458 * @throws PermissionDeniedException authorization failure 459 */ 460 public StatusInfo deleteStatement(@WebParam(name="statementId")String statementId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 461 462 /** 463 * Retrieves information for a specified type of statement 464 * @param statementTypeKey statement type identifier 465 * @return statement type information 466 * @throws DoesNotExistException statementTypeKey not found 467 * @throws InvalidParameterException invalid statementTypeKey 468 * @throws MissingParameterException missing statementTypeKey 469 * @throws OperationFailedException unable to complete request 470 */ 471 public StatementTypeInfo getStatementType(@WebParam(name="statementTypeKey")String statementTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 472 473 /** 474 * Retrieves the list of all types of statements. 475 * 476 * @return List of types of statements 477 * @throws OperationFailedException Unable to complete request 478 */ 479 public List<StatementTypeInfo> getStatementTypes() throws OperationFailedException; 480 481 /** 482 * Retrieves the list of statement types which are allowed to be used in 483 * a statement type. This controls the nesting of statements. 484 * 485 * @param statementTypeKey Identifier for a type of statement 486 * @return List of statement type 487 * @throws DoesNotExistException statementTypeKey not found 488 * @throws InvalidParameterException Invalid statementTypeKey 489 * @throws MissingParameterException Missing statementTypeKey 490 * @throws OperationFailedException Unable to complete request 491 */ 492 public List<String> getStatementTypesForStatementType(@WebParam(name="statementTypeKey")String statementTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 493 494 /** 495 * Retrieves the list of requirement component types known by this service. 496 * @return list of requirement component types 497 * @throws OperationFailedException unable to complete request 498 */ 499 public List<ReqComponentTypeInfo> getReqComponentTypes() throws OperationFailedException; 500 501 /** 502 * Retrieves information for a specified fetchReqComponent Types 503 * @param reqComponentTypeKey reqComponent Type Key 504 * @return Requirement component type information 505 * @throws DoesNotExistException reqComponentTypeKey not found 506 * @throws InvalidParameterException invalid reqComponentTypeKey 507 * @throws MissingParameterException missing reqComponentTypeKey 508 * @throws OperationFailedException unable to complete request 509 */ 510 public ReqComponentTypeInfo getReqComponentType(@WebParam(name="reqComponentTypeKey")String reqComponentTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 511 512 /** 513 * Retrieves the list of types of requirement components which are allowed to be used in a type of statement. 514 * @param statementTypeKey identifier for a type of statement 515 * @return list of types of requirement components 516 * @throws DoesNotExistException statementTypeKey not found 517 * @throws InvalidParameterException invalid statementTypeKey 518 * @throws MissingParameterException missing statementTypeKey 519 * @throws OperationFailedException unable to complete request 520 */ 521 public List<ReqComponentTypeInfo> getReqComponentTypesForStatementType(@WebParam(name="statementTypeKey")String statementTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 522 523 /** 524 * Retrieves the list of all types of relationships between statements and 525 * other objects. 526 * 527 * @return List of object statement relation types 528 * @throws OperationFailedException Unable to complete request 529 */ 530 public List<RefStatementRelationTypeInfo> getRefStatementRelationTypes() throws OperationFailedException; 531 532 /** 533 * Retrieves information for a specified type of relationship between 534 * a statement and object. 535 * 536 * @param refStatementRelationTypeKey Object statement relation type identifier 537 * @return Object statement relation type information 538 * @throws DoesNotExistException refStatementRelationTypeKey not found 539 * @throws InvalidParameterException Invalid refStatementRelationTypeKey 540 * @throws MissingParameterException Missing refStatementRelationTypeKey 541 * @throws OperationFailedException Unable to complete request 542 */ 543 public RefStatementRelationTypeInfo getRefStatementRelationType(@WebParam(name="refStatementRelationTypeKey")String refStatementRelationTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 544 545 /** 546 * Retrieves the list of statement types which are allowed to be used for 547 * a specified type of object statement relationship. 548 * 549 * @param refStatementRelationTypeKey Identifier for a type of object statement relationship 550 * @return List of statement types 551 * @throws DoesNotExistException refStatementRelationTypeKey not found 552 * @throws InvalidParameterException Invalid refStatementRelationTypeKey 553 * @throws MissingParameterException Missing refStatementRelationTypeKey 554 * @throws OperationFailedException Unable to complete request 555 */ 556 public List<String> getStatementTypesForRefStatementRelationType(@WebParam(name="refStatementRelationTypeKey")String refStatementRelationTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 557 558 /** 559 * Retrieves the list of types of object statement relationships which 560 * are allowed to be used for a subtype of object. 561 * 562 * @param refSubTypeKey Identifier for the subtype of object 563 * @return 564 * @throws DoesNotExistException refSubType not found 565 * @throws InvalidParameterException Invalid refSubTypeKey 566 * @throws MissingParameterException Missing refSubTypeKey 567 * @throws OperationFailedException Unable to complete request 568 */ 569 public List<String> getRefStatementRelationTypesForRefObjectSubType(@WebParam(name="refSubTypeKey")String refSubTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 570 571 /** 572 * Updates a requirement component 573 * @param reqComponentId identifier of the requirement component to be updated 574 * @param reqComponentInfo information about the requirement component to be updated 575 * @return the updated requirement component information 576 * @throws DataValidationErrorException One or more values invalid for this operation 577 * @throws DoesNotExistException Requirement Component not found 578 * @throws InvalidParameterException invalid reqComponentId, reqComponentInfo 579 * @throws MissingParameterException missing reqComponentId, reqComponentInfo 580 * @throws OperationFailedException unable to complete request 581 * @throws PermissionDeniedException authorization failure 582 * @throws VersionMismatchException The action was attempted on an out of date version. 583 */ 584 public ReqComponentInfo updateReqComponent(@WebParam(name="reqComponentId")String reqComponentId, @WebParam(name="reqComponentInfo")ReqComponentInfo reqComponentInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException; 585 586 /** 587 * Retrieves a view of a statement by its identifier with its referenced statements and requirement components expanded 588 * @param statementId statement identifier 589 * @return view of statement information with the referenced statements and requirement components expanded 590 * @throws DoesNotExistException statement not found 591 * @throws InvalidParameterException invalid statementId 592 * @throws MissingParameterException statementId not specified 593 * @throws OperationFailedException unable to complete request 594 */ 595 public StatementTreeViewInfo getStatementTreeView(@WebParam(name="statementId")String statementId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 596 597 /** 598 * Retrieves a view of a statement by its identifier with its referenced statements and requirement components expanded and translated 599 * @param statementId statement identifier 600 * @param nlUsageTypeKey Natural language usage type identifier 601 * @param language Translation language 602 * @return view of statement information with the referenced statements and requirement components expanded 603 * @throws DoesNotExistException statement not found 604 * @throws InvalidParameterException invalid statementId 605 * @throws MissingParameterException statementId not specified 606 * @throws OperationFailedException unable to complete request 607 */ 608 public StatementTreeViewInfo getStatementTreeViewForNlUsageType(final String statementId, final String nlUsageTypeKey, String language) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 609 610 /** 611 * Updates an entire Statement Tree. Fails unless everything can be done. Updates Statements, RequirementComponents and any relations between them. If there are "deletes", the relations are removed, but the object is not deleted unless used no where else 612 * @param statementId identifier of the statement to be updated 613 * @param statementTreeViewInfo The StatementTreeInfo to be updated 614 * @return the updated StatementTree information 615 * @throws CircularRelationshipException included statement references the current statement 616 * @throws DataValidationErrorException One or more values invalid for this operation 617 * @throws DoesNotExistException Statement not found 618 * @throws InvalidParameterException invalid statementId, statementTreeViewInfo 619 * @throws MissingParameterException missing statementId, statementTreeViewInfo 620 * @throws OperationFailedException unable to complete request 621 * @throws PermissionDeniedException authorization failure 622 * @throws VersionMismatchException The action was attempted on an out of date version. 623 */ 624 public StatementTreeViewInfo updateStatementTreeView(@WebParam(name="statementId")String statementId, @WebParam(name="statementTreeViewInfo")StatementTreeViewInfo statementTreeViewInfo) throws CircularReferenceException, DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException; 625 626 /** 627 * Creates an entire Statement Tree. Fails unless everything can be done. Updates Statements, RequirementComponents and any relations between them. If there are "deletes", the relations are removed, but the object is not deleted unless used no where else 628 * @param statementTreeViewInfo 629 * @return Statement tree view 630 * @throws CircularReferenceException included statement references the current statement 631 * @throws AlreadyExistsException 632 * @throws DataValidationErrorException 633 * @throws DoesNotExistException 634 * @throws InvalidParameterException 635 * @throws MissingParameterException 636 * @throws OperationFailedException 637 * @throws PermissionDeniedException 638 */ 639 public StatementTreeViewInfo createStatementTreeView(@WebParam(name="statementTreeViewInfo") StatementTreeViewInfo statementTreeViewInfo) throws CircularReferenceException, AlreadyExistsException, DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 640 641 /** 642 * Deletes the entire statement tree 643 * @param statementId 644 * @return Status of delete 645 * @throws DoesNotExistException 646 * @throws InvalidParameterException 647 * @throws MissingParameterException 648 * @throws OperationFailedException 649 * @throws PermissionDeniedException 650 */ 651 public StatusInfo deleteStatementTreeView(@WebParam(name="statementId") String statementId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 652 653 }