Coverage Report - org.kuali.student.r2.core.statement.service.StatementService
 
Classes in this File Line Coverage Branch Coverage Complexity
StatementService
N/A
N/A
1
 
 1  
 /**
 2  
  * Copyright 2010 The Kuali Foundation Licensed under the
 3  
  * Educational Community License, Version 2.0 (the "License"); you may
 4  
  * not use this file except in compliance with the License. You may
 5  
  * obtain a copy of the License at
 6  
  *
 7  
  * http://www.osedu.org/licenses/ECL-2.0
 8  
  *
 9  
  * Unless required by applicable law or agreed to in writing,
 10  
  * software distributed under the License is distributed on an "AS IS"
 11  
  * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 12  
  * or implied. See the License for the specific language governing
 13  
  * permissions and limitations under the License.
 14  
  */
 15  
 package org.kuali.student.r2.core.statement.service;
 16  
 
 17  
 import org.kuali.student.r2.common.dto.ContextInfo;
 18  
 import org.kuali.student.r2.common.dto.StatusInfo;
 19  
 import org.kuali.student.r2.common.dto.ValidationResultInfo;
 20  
 import org.kuali.student.r2.common.exceptions.AlreadyExistsException;
 21  
 import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
 22  
 import org.kuali.student.r2.common.exceptions.DoesNotExistException;
 23  
 import org.kuali.student.r2.common.exceptions.InvalidParameterException;
 24  
 import org.kuali.student.r2.common.exceptions.MissingParameterException;
 25  
 import org.kuali.student.r2.common.exceptions.OperationFailedException;
 26  
 import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
 27  
 import org.kuali.student.r2.common.exceptions.ReadOnlyException;
 28  
 import org.kuali.student.r2.common.exceptions.VersionMismatchException;
 29  
 import org.kuali.student.r2.common.util.constants.StatementServiceConstants;
 30  
 import org.kuali.student.r2.core.statement.dto.RefStatementRelationInfo;
 31  
 import org.kuali.student.r2.core.statement.dto.ReqComponentInfo;
 32  
 import org.kuali.student.r2.core.statement.dto.StatementInfo;
 33  
 import org.kuali.student.r2.core.statement.dto.StatementTreeViewInfo;
 34  
 
 35  
 import javax.jws.WebParam;
 36  
 import javax.jws.WebService;
 37  
 import javax.jws.soap.SOAPBinding;
 38  
 import java.util.List;
 39  
 import org.kuali.student.r2.core.type.dto.TypeInfo;
 40  
 
 41  
 /**
 42  
  * Statement Service
 43  
  *
 44  
  * @Version 2.0
 45  
  * @Author Sri komandur@uw.edu
 46  
  */
 47  
 @WebService(name = "StatementService", targetNamespace = StatementServiceConstants.NAMESPACE)
 48  
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 49  
 public interface StatementService {
 50  
 
 51  
     /**
 52  
      * Retrieves the list of base types which can be connected to a document.
 53  
      *
 54  
      * @param contextInfo context information containing the principalId and
 55  
      *                    locale information about the caller of service
 56  
      *                    operation
 57  
      * @return Object statement relationship information
 58  
      * @throws InvalidParameterException invalid contextInfo
 59  
      * @throws MissingParameterException missing contextInfo
 60  
      * @throws OperationFailedException  unable to complete request
 61  
      * @throws PermissionDeniedException authorization failure
 62  
      */
 63  
     public List<TypeInfo> getRefObjectTypes(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 64  
 
 65  
     /**
 66  
      * Retrieves the list of types for a given base type which can be connected
 67  
      * to a document.
 68  
      *
 69  
      * @param refObjectTypeKey reference Type Identifier
 70  
      * @param contextInfo      context information containing the principalId
 71  
      *                         and locale information about the caller of
 72  
      *                         service operation
 73  
      * @return List of types for the given base type which can be connected to a
 74  
      *         document
 75  
      * @throws InvalidParameterException invalid contextInfo
 76  
      * @throws MissingParameterException missing refObjectTypeKey or
 77  
      *                                   contextInfo
 78  
      * @throws OperationFailedException  unable to complete request
 79  
      * @throws PermissionDeniedException authorization failure
 80  
      */
 81  
     public List<TypeInfo> getRefObjectSubTypes(@WebParam(name = "refObjectTypeKey") ContextInfo refObjectTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 82  
 
 83  
     /**
 84  
      * Retrieves a object statement relationship by its identifier.
 85  
      *
 86  
      * @param refStatementRelationId object statement relationship identifier
 87  
      * @param contextInfo            context information containing the
 88  
      *                               principalId and locale information about
 89  
      *                               the caller of service operation
 90  
      * @return Object statement relationship information
 91  
      * @throws DoesNotExistException     refStatementRelationId not found
 92  
      * @throws InvalidParameterException invalid contextInfo
 93  
      * @throws MissingParameterException missing refStatementRelationId or
 94  
      *                                   contextInfo
 95  
      * @throws OperationFailedException  unable to complete request
 96  
      * @throws PermissionDeniedException authorization failure
 97  
      */
 98  
     public RefStatementRelationInfo getRefStatementRelation(@WebParam(name = "refStatementRelationId") String refStatementRelationId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 99  
 
 100  
     /**
 101  
      * Retrieves a list of object statement relationships for a particular
 102  
      * object.
 103  
      *
 104  
      * @param refStatementRelationIds object statement relationship identifiers
 105  
      * @param contextInfo             context information containing the
 106  
      *                                principalId and locale information about
 107  
      *                                the caller of service operation
 108  
      * @return List of object statement relationships
 109  
      * @throws DoesNotExistException     a refStatementRelationId in the list
 110  
      *                                   was not found
 111  
      * @throws InvalidParameterException contextInfo is not valid
 112  
      * @throws MissingParameterException missing refStatementRelationId, a
 113  
      *                                   refStatementRelationId in the
 114  
      *                                   refStatementRelationIds or contextInfo
 115  
      *                                   is missing
 116  
      * @throws OperationFailedException  unable to complete request
 117  
      * @throws PermissionDeniedException authorization failure
 118  
      */
 119  
     public List<RefStatementRelationInfo> getRefStatementRelationsByIds(@WebParam(name = "refStatementRelationIds") List<String> refStatementRelationIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 120  
 
 121  
     /**
 122  
      * Retrieves a list of object statement relationships for a particular
 123  
      * object.
 124  
      *
 125  
      * @param refStatementRelationTypeKey type of statement relation
 126  
      * @param contextInfo                 context information containing the
 127  
      *                                    principalId and locale information
 128  
      *                                    about the caller of service operation
 129  
      * @return List of object statement relationships for a particular object
 130  
      * @throws InvalidParameterException invalid contextInfo
 131  
      * @throws MissingParameterException missing refStatementRelationTypeKey or
 132  
      *                                   contextInfo
 133  
      * @throws OperationFailedException  unable to complete request
 134  
      * @throws PermissionDeniedException authorization failure
 135  
      */
 136  
     public List<RefStatementRelationInfo> getRefStatementRelationsByType(@WebParam(name = "refStatementRelationTypeKey") String refStatementRelationTypeKey,
 137  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 138  
             throws InvalidParameterException, MissingParameterException, OperationFailedException;
 139  
 
 140  
     /**
 141  
      * Retrieves a list of object statement relationships for a particular
 142  
      * statement.
 143  
      *
 144  
      * @param statementId Statement identifier
 145  
      * @param contextInfo context information containing the principalId and
 146  
      *                    locale information about the caller of service
 147  
      *                    operation
 148  
      * @return List of object statement relationships for a particular
 149  
      *         statement
 150  
      * @throws InvalidParameterException invalid contextInfo
 151  
      * @throws MissingParameterException missing statementId or contextInfo
 152  
      * @throws OperationFailedException  Unable to complete request
 153  
      * @throws PermissionDeniedException authorization failure
 154  
      */
 155  
     public List<RefStatementRelationInfo> getRefStatementRelationsByStatement(@WebParam(name = "statementId") String statementId,
 156  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 157  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 158  
 
 159  
     /**
 160  
      * Retrieves a list of object statement relationships for a particular 
 161  
      * referring object.
 162  
      *
 163  
      * @param refObjectTypeKey         Unique identifier for an object type. 
 164  
      * @param refObjectId              Identifier to the object "anchor" that is associated with this statement
 165  
      * @param contextInfo context information containing the principalId and
 166  
      *                    locale information about the caller of service
 167  
      *                    operation
 168  
      * @return List of object statement relationships for a particular
 169  
      *         statement
 170  
      * @throws InvalidParameterException invalid contextInfo
 171  
      * @throws MissingParameterException missing statementId or contextInfo
 172  
      * @throws OperationFailedException  Unable to complete request
 173  
      * @throws PermissionDeniedException authorization failure
 174  
      */
 175  
     public List<RefStatementRelationInfo> getRefStatementRelationsByRef(
 176  
             @WebParam(name = "refObjectTypeKey") String refObjectTypeKey,
 177  
             @WebParam(name = "refObjectId") String refObjectId,
 178  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 179  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 180  
 
 181  
     /**
 182  
      * Validates a refStatementRelation. Depending on the value of
 183  
      * validationTypeKey, this validation could be limited to tests on just the
 184  
      * current object and its directly contained sub-objects or expanded to
 185  
      * perform all tests related to this object. If an identifier is present for
 186  
      * the relationship (and/or one of its contained sub-objects) and a record
 187  
      * is found for that identifier, the validation checks if the relationship
 188  
      * can be shifted to the new values. If an identifier is not present or a
 189  
      * record cannot be found for the identifier, it is assumed that the record
 190  
      * does not exist and as such, the checks performed will be much shallower,
 191  
      * typically mimicking those performed by setting the validationTypeKey to
 192  
      * the current object.
 193  
      *
 194  
      * @param validationTypeKey           identifier of the extent of
 195  
      *                                    validation
 196  
      * @param statementId                 statement identifier
 197  
      * @param refStatementRelationTypeKey type of statement relation
 198  
      * @param refStatementRelationInfo    object statement relationship
 199  
      *                                    information to be validated
 200  
      * @param contextInfo                 context information containing the
 201  
      *                                    principalId and locale information
 202  
      *                                    about the caller of service operation
 203  
      * @return Results from performing the validation
 204  
      * @throws DoesNotExistException     statementId or refStatementRelationId
 205  
      *                                   not found
 206  
      * @throws InvalidParameterException invalid refStatementRelationInfo or
 207  
      *                                   contextInfo
 208  
      * @throws MissingParameterException missing validationTypeKey, statementId,
 209  
      *                                   refStatementRelationId, refStatementRelationTypeKey,
 210  
      *                                   refStatementRelationInfo or
 211  
      *                                   contextInfo
 212  
      * @throws OperationFailedException  unable to complete request
 213  
      * @throws PermissionDeniedException authorization failure
 214  
      */
 215  
     public List<ValidationResultInfo> validateRefStatementRelation(@WebParam(name = "validationTypeKey") String validationTypeKey,
 216  
             @WebParam(name = "statementId") String statementId,
 217  
             @WebParam(name = "refStatementRelationTypeKey") String refStatementRelationTypeKey,
 218  
             @WebParam(name = "refStatementRelationInfo") RefStatementRelationInfo refStatementRelationInfo,
 219  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 220  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 221  
 
 222  
     /**
 223  
      * Creates a relationship between a statement and an object.
 224  
      *
 225  
      * @param refObjectTypeKey         Unique identifier for an object type. 
 226  
      * @param refObjectId              Identifier to the object "anchor" that is associated with this statement
 227  
      * @param statementId              statement identifier
 228  
      * @param refStatmentRelationTypeKey  type key of this statement relation
 229  
      * @param refStatementRelationInfo information about the object statement
 230  
      *                                 relationship
 231  
      * @param contextInfo              context information containing the
 232  
      *                                 principalId and locale information about
 233  
      *                                 the caller of service operation
 234  
      * @return New object statement relationship
 235  
      * @throws AlreadyExistsException       connection between object and
 236  
      *                                      statement already exists
 237  
      * @throws DataValidationErrorException one or more values invalid for this
 238  
      *                                      operation
 239  
      * @throws DoesNotExistException        refStatementRelationId, statementId,
 240  
      *                                      refStatementRelationTypeKey not
 241  
      *                                      found
 242  
      * @throws InvalidParameterException    invalid refStatementRelationInfo or
 243  
      *                                      contextInfo
 244  
      * @throws MissingParameterException    missing refStatementRelationId,
 245  
      *                                      statementId, refStatementRelationTypeKey,
 246  
      *                                      refStatementRelationInfo or
 247  
      *                                      contextInfo
 248  
      * @throws OperationFailedException     unable to complete request
 249  
      * @throws PermissionDeniedException    authorization failure
 250  
      * @throws ReadOnlyException            an attempt at supplying information
 251  
      *                                      designated as read-only
 252  
      */
 253  
     public RefStatementRelationInfo createRefStatementRelation(
 254  
             @WebParam(name = "refObjectTypeKey") String refObjectTypeKey,
 255  
             @WebParam(name = "refObjectId") String refObjectId,
 256  
             @WebParam(name = "statementId") String statementId,
 257  
             @WebParam(name = "refStatmentRelationTypeKey") String refStatementRelationTypeKey,
 258  
             @WebParam(name = "refStatementRelationInfo") RefStatementRelationInfo refStatementRelationInfo,
 259  
             @WebParam(name = "contextInfo") ContextInfo contextInfo)
 260  
             throws AlreadyExistsException, DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
 261  
 
 262  
     /**
 263  
      * Updates a relationship between an object and statement.
 264  
      *
 265  
      * @param refStatementRelationId   identifier of the object statement
 266  
      *                                 relationship to be updated
 267  
      * @param refStatementRelationInfo information about the object statement
 268  
      *                                 relationship to be updated
 269  
      * @param contextInfo              context information containing the
 270  
      *                                 principalId and locale information about
 271  
      *                                 the caller of service operation
 272  
      * @return updated object statement relationship information
 273  
      * @throws DataValidationErrorException one or more values invalid for this
 274  
      *                                      operation
 275  
      * @throws DoesNotExistException        refStatementRelationId not found
 276  
      * @throws InvalidParameterException    invalid refStatementRelationInfo or
 277  
      *                                      contextInfo
 278  
      * @throws MissingParameterException    missing refStatementRelationId,
 279  
      *                                      refStatementRelationInfo or
 280  
      *                                      contextInfo
 281  
      * @throws OperationFailedException     unable to complete request
 282  
      * @throws PermissionDeniedException    authorization failure
 283  
      * @throws ReadOnlyException            an attempt at supplying information
 284  
      *                                      designated as read-only
 285  
      * @throws VersionMismatchException     the action was attempted on an out
 286  
      *                                      of date version.
 287  
      */
 288  
     public RefStatementRelationInfo updateRefStatementRelation(@WebParam(name = "refStatementRelationId") String refStatementRelationId, @WebParam(name = "refStatementRelationInfo") RefStatementRelationInfo refStatementRelationInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
 289  
 
 290  
     /**
 291  
      * Removes a relationship between a statement and an object.
 292  
      *
 293  
      * @param refStatementRelationId object Statement Relationship identifier
 294  
      * @param contextInfo            context information containing the
 295  
      *                               principalId and locale information about
 296  
      *                               the caller of service operation
 297  
      * @return status of the operation (success, failed)
 298  
      * @throws DoesNotExistException     refStatementRelationId not found
 299  
      * @throws InvalidParameterException invalid contextInfo
 300  
      * @throws MissingParameterException missing refStatementRelationId or
 301  
      *                                   contextInfo
 302  
      * @throws OperationFailedException  unable to complete request
 303  
      * @throws PermissionDeniedException authorization failure
 304  
      */
 305  
     public StatusInfo deleteRefStatementRelation(@WebParam(name = "refStatementRelationId") String refStatementRelationId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 306  
 
 307  
     /**
 308  
      * Retrieves information about the specified natural language usage type.
 309  
      *
 310  
      * @param nlUsageTypeKey natural language usage type identifier
 311  
      * @param contextInfo    context information containing the principalId and
 312  
      *                       locale information about the caller of service
 313  
      *                       operation
 314  
      * @return Information about a type of natural language usage
 315  
      * @throws DoesNotExistException     nlUsageTypeKey not found
 316  
      * @throws InvalidParameterException invalid contextInfo
 317  
      * @throws MissingParameterException missing nlUsageTypeKey or contextInfo
 318  
      * @throws OperationFailedException  unable to complete request
 319  
      * @throws PermissionDeniedException authorization failure
 320  
      */
 321  
     public TypeInfo getNaturalLanguageUsageByType(@WebParam(name = "nlUsageTypeKey") String nlUsageTypeKey, 
 322  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) 
 323  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 324  
 
 325  
     /**
 326  
      * Translates and retrieves a statement for a specific usage type
 327  
      * (context) and language into natural language.
 328  
      * 
 329  
      * If <code>language</code> is null default language is used.</p> <p/> <p>An
 330  
      * <code>StatementInfo</code> can either have a list of
 331  
      * <code>StatementInfo</code>s as children or a list of
 332  
      * <code>ReqComponentInfo</code>s but not both. This means that all leaf
 333  
      * nodes must be <code>ReqComponentInfo</code>s.</p>
 334  
      *
 335  
      * @param statementId    identifier of the statement to be translated
 336  
      * @param nlUsageTypeKey natural language usage type key (context)
 337  
      * @param language       translation language
 338  
      * @param contextInfo    context information containing the principalId and
 339  
      *                       locale information about the caller of service
 340  
      *                       operation
 341  
      * @return Natural language translation for a specific usage type and
 342  
      *         language
 343  
      * @throws DoesNotExistException     statementId or nlUsageTypeKey not
 344  
      *                                   found
 345  
      * @throws InvalidParameterException invalid language or contextInfo
 346  
      * @throws MissingParameterException missing statementId, nlUsageTypeKey,
 347  
      *                                   language or contextInfo
 348  
      * @throws OperationFailedException  unable to complete request
 349  
      * @throws PermissionDeniedException authorization failure
 350  
      */
 351  
     public String getNaturalLanguageForStatement(@WebParam(name = "statementId") String statementId,
 352  
             @WebParam(name = "nlUsageTypeKey") String nlUsageTypeKey, 
 353  
             @WebParam(name = "language") String language, 
 354  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) 
 355  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 356  
 
 357  
     /**
 358  
      * Retrieves the natural language translation for a particular object
 359  
      * statement relationship in a particular context for a particular
 360  
      * language.
 361  
      *
 362  
      * @param refStatementRelationId object statement relationship identifier
 363  
      * @param nlUsageTypeKey         context for the natural language
 364  
      *                               translation
 365  
      * @param language               language to use for the natural language
 366  
      *                               translation
 367  
      * @param contextInfo            context information containing the
 368  
      *                               principalId and locale information about
 369  
      *                               the caller of service operation
 370  
      * @return Natural language translation for a particular object statement
 371  
      *         relationship in a particular context
 372  
      * @throws DoesNotExistException     refStatementRelationId or nlUsageTypeKey
 373  
      *                                   not found
 374  
      * @throws InvalidParameterException invalid language or contextInfo
 375  
      * @throws MissingParameterException missing refStatementRelationId,
 376  
      *                                   nlUsageTypeKey, language or
 377  
      *                                   contextInfo
 378  
      * @throws OperationFailedException  unable to complete request
 379  
      * @throws PermissionDeniedException authorization failure
 380  
      */
 381  
     public String getNaturalLanguageForRefStatementRelation(@WebParam(name = "refStatementRelationId") String refStatementRelationId,
 382  
             @WebParam(name = "nlUsageTypeKey") String nlUsageTypeKey,
 383  
             @WebParam(name = "language") String language, 
 384  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) 
 385  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 386  
 
 387  
     /**
 388  
      * <p>Translates and retrieves a requirement component for a specific usuage
 389  
      * type (context) and language into natural language.</p> <p/> <p>If
 390  
      * <code>language</code> is null, default language is used.</p>
 391  
      *
 392  
      * @param reqComponentId requirement component to translate
 393  
      * @param nlUsageTypeKey natural language usage type key (context)
 394  
      * @param language       language to use for the natural language
 395  
      *                       translation
 396  
      * @param contextInfo    context information containing the principalId and
 397  
      *                       locale information about the caller of service
 398  
      *                       operation
 399  
      * @return Natural language translation for a particular object statement
 400  
      *         relationship in a particular context
 401  
      * @throws DoesNotExistException     reqComponentId or nlUsageTypeKey not
 402  
      *                                   found
 403  
      * @throws InvalidParameterException invalid language or contextInfo
 404  
      * @throws MissingParameterException missing reqComponentId, nlUsageTypeKey,
 405  
      *                                   language or contextInfo
 406  
      * @throws OperationFailedException  unable to complete request
 407  
      * @throws PermissionDeniedException authorization failure
 408  
      */
 409  
     public String getNaturalLanguageForReqComponent(@WebParam(name = "reqComponentId") String reqComponentId, 
 410  
             @WebParam(name = "nlUsageTypeKey") String nlUsageTypeKey, 
 411  
             @WebParam(name = "language") String language, 
 412  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) 
 413  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 414  
 
 415  
     /**
 416  
      * Translates a statement tree view to natural language for a particular
 417  
      * context in a particular language. This may include statements and/or
 418  
      * requirement components which have not yet been persisted to the service.
 419  
      *
 420  
      * @param statementTreeViewInfo statement tree view
 421  
      * @param nlUsageTypeKey        context for the natural language
 422  
      *                              translation
 423  
      * @param language              language to use for the natural language
 424  
      *                              translation
 425  
      * @param contextInfo           context information containing the
 426  
      *                              principalId and locale information about the
 427  
      *                              caller of service operation
 428  
      * @return Natural language translation for a particular statement in a
 429  
      *         particular context
 430  
      * @throws DoesNotExistException     nlUsageTypeKey not found
 431  
      * @throws InvalidParameterException invalid statementTreeViewInfo, language
 432  
      *                                   or contextInfo
 433  
      * @throws MissingParameterException missing statementTreeViewInfo,
 434  
      *                                   nlUsageTypeKey, language or
 435  
      *                                   contextInfo
 436  
      * @throws OperationFailedException  unable to complete request
 437  
      * @throws PermissionDeniedException authorization failure
 438  
      */
 439  
     public String translateStatementTreeViewToNL(@WebParam(name = "statementTreeViewInfo") StatementTreeViewInfo statementTreeViewInfo, @WebParam(name = "nlUsageTypeKey") String nlUsageTypeKey, @WebParam(name = "language") String language, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 440  
 
 441  
     /**
 442  
      * Translates a particular requirement component to natural language for a
 443  
      * particular context in a given language. This may be used for requirement
 444  
      * components which have not yet been persisted through the service.
 445  
      *
 446  
      * @param reqComponentInfo requirement component
 447  
      * @param nlUsageTypeKey   context for the natural language translation
 448  
      * @param language         language to use for the natural language
 449  
      *                         translation
 450  
      * @param contextInfo      context information containing the principalId
 451  
      *                         and locale information about the caller of
 452  
      *                         service operation
 453  
      * @return Natural language translation for a particular requirement
 454  
      *         component in a particular context
 455  
      * @throws DoesNotExistException     nlUsageTypeKey not found
 456  
      * @throws InvalidParameterException invalid reqComponentInfo, language or
 457  
      *                                   contextInfo
 458  
      * @throws MissingParameterException missing reqComponentInfo, nlUsageTypeKey,
 459  
      *                                   language or contextInfo
 460  
      * @throws OperationFailedException  unable to complete request
 461  
      * @throws PermissionDeniedException authorization failure
 462  
      */
 463  
     public String translateReqComponentToNL(@WebParam(name = "reqComponentInfo") ReqComponentInfo reqComponentInfo, @WebParam(name = "nlUsageTypeKey") String nlUsageTypeKey, @WebParam(name = "language") String language, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 464  
 
 465  
     /**
 466  
      * Retrieves a statement by its identifier
 467  
      *
 468  
      * @param statementId statement identifier
 469  
      * @param contextInfo context information containing the principalId and
 470  
      *                    locale information about the caller of service
 471  
      *                    operation
 472  
      * @return statementInfo                statement information
 473  
      * @throws DoesNotExistException     statementId not found
 474  
      * @throws InvalidParameterException invalid contextInfo
 475  
      * @throws MissingParameterException missing statementId or contextInfo
 476  
      * @throws OperationFailedException  unable to complete request
 477  
      * @throws PermissionDeniedException authorization failure
 478  
      */
 479  
     public StatementInfo getStatement(@WebParam(name = "statementId") String statementId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 480  
 
 481  
     /**
 482  
      * Retrieves a list of statements that use a particular requirement
 483  
      * component. Note: The reference may not be direct, but through an
 484  
      * intermediate object definition (ex. nested statements).
 485  
      *
 486  
      * @param reqComponentId requirement component identifier
 487  
      * @param contextInfo    context information containing the principalId and
 488  
      *                       locale information about the caller of service
 489  
      *                       operation
 490  
      * @return List of statements using the specified requirement component
 491  
      * @throws DoesNotExistException     reqComponentId not found
 492  
      * @throws InvalidParameterException invalid contextInfo
 493  
      * @throws MissingParameterException missing reqComponentId or contextInfo
 494  
      * @throws OperationFailedException  unable to complete request
 495  
      * @throws PermissionDeniedException authorization failure
 496  
      */
 497  
     public List<StatementInfo> getStatementsByReqComponent(
 498  
             @WebParam(name = "reqComponentId") String reqComponentId, 
 499  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) 
 500  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 501  
 
 502  
     /**
 503  
      * Retrieves a list of statements of a particular Type
 504  
      *
 505  
      * @param statementTypeKey statement type identifier
 506  
      * @param contextInfo      context information containing the principalId
 507  
      *                         and locale information about the caller of
 508  
      *                         service operation
 509  
      * @return List of statements using the specified type
 510  
      * @throws InvalidParameterException invalid contextInfo
 511  
      * @throws MissingParameterException missing statementTypeKey or
 512  
      *                                   contextInfo
 513  
      * @throws OperationFailedException  unable to complete request
 514  
      * @throws PermissionDeniedException authorization failure
 515  
      */
 516  
     public List<StatementInfo> getStatementsByType(@WebParam(name = "statementTypeKey") String statementTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 517  
 
 518  
     /**
 519  
      * Retrieves a list of child statements that include a particular statement.
 520  
      * Note: The reference may not be direct, but through an intermediate object
 521  
      * definition (e.g. nested statements).
 522  
      *
 523  
      * @param statementId statement identifier
 524  
      * @param contextInfo context information containing the principalId and
 525  
      *                    locale information about the caller of service
 526  
      *                    operation
 527  
      * @return List of child statements using the specified statement
 528  
      * @throws DoesNotExistException     statementId not found
 529  
      * @throws InvalidParameterException invalid contextInfo
 530  
      * @throws MissingParameterException missing statementId or contextInfo
 531  
      * @throws OperationFailedException  unable to complete request
 532  
      * @throws PermissionDeniedException authorization failure
 533  
      */
 534  
     public List<StatementInfo> getStatementsForStatement(@WebParam(name = "statementId") String statementId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 535  
 
 536  
     /**
 537  
      * Retrieves the list of all types of statements.
 538  
      *
 539  
      * @param contextInfo context information containing the principalId and
 540  
      *                    locale information about the caller of service
 541  
      *                    operation
 542  
      * @return List of types of statements
 543  
      * @throws InvalidParameterException invalid contextInfo
 544  
      * @throws MissingParameterException missing contextInfo
 545  
      * @throws OperationFailedException  unable to complete request
 546  
      * @throws PermissionDeniedException authorization failure
 547  
      */
 548  
     public List<TypeInfo> getStatementTypes(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 549  
 
 550  
     /**
 551  
      * Retrieves the list of statement types which are allowed to be used in a
 552  
      * statement type. This controls the nesting of statements.
 553  
      *
 554  
      * @param statementTypeKey Identifier for a type of statement
 555  
      * @param contextInfo      context information containing the principalId
 556  
      *                         and locale information about the caller of
 557  
      *                         service operation
 558  
      * @return List of statement type info
 559  
      * @throws DoesNotExistException     statementTypeKey not found
 560  
      * @throws InvalidParameterException invalid contextInfo
 561  
      * @throws MissingParameterException missing statementTypeKey or
 562  
      *                                   contextInfo
 563  
      * @throws OperationFailedException  unable to complete request
 564  
      * @throws PermissionDeniedException authorization failure
 565  
      */
 566  
     public List<TypeInfo> getStatementTypesForStatementType(@WebParam(name = "statementTypeKey") String statementTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 567  
 
 568  
     /**
 569  
      * Retrieves the list of statement types which are allowed to be used for a
 570  
      * specified type of object statement relationship.
 571  
      *
 572  
      * @param refStatementRelationTypeKey identifier for a type of object
 573  
      *                                    statement relationship
 574  
      * @param contextInfo                 context information containing the
 575  
      *                                    principalId and locale information
 576  
      *                                    about the caller of service operation
 577  
      * @return List of statement type info
 578  
      * @throws DoesNotExistException     refStatementRelationTypeKey not found
 579  
      * @throws InvalidParameterException invalid contextInfo
 580  
      * @throws MissingParameterException missing refStatementRelationTypeKey or
 581  
      *                                   contextInfo
 582  
      * @throws OperationFailedException  unable to complete request
 583  
      * @throws PermissionDeniedException authorization failure
 584  
      */
 585  
     public List<TypeInfo> getStatementTypesForRefStatementRelationType(@WebParam(name = "refStatementRelationTypeKey") String refStatementRelationTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 586  
 
 587  
     /**
 588  
      * Retrieves the list of type infos for object statement relationships which
 589  
      * are allowed to be used for a subtype of object.
 590  
      *
 591  
      * @param refSubTypeKey identifier for the subtype of object
 592  
      * @param contextInfo   context information containing the principalId and
 593  
      *                      locale information about the caller of service
 594  
      *                      operation
 595  
      * @return List of type infos for object statement relationships which are
 596  
      *         allowed to be used for a subtype of object
 597  
      * @throws DoesNotExistException     refSubTypeKey not found
 598  
      * @throws InvalidParameterException invalid refSubTypeKey
 599  
      * @throws MissingParameterException missing refSubTypeKey or contextInfo
 600  
      * @throws OperationFailedException  unable to complete request
 601  
      * @throws PermissionDeniedException authorization failure
 602  
      */
 603  
     public List<TypeInfo> getRefStatementRelationTypesForRefObjectSubType(@WebParam(name = "refSubTypeKey") String refSubTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 604  
 
 605  
     /**
 606  
      * Validates a statement. Depending on the value of validationTypeKey, this
 607  
      * validation could be limited to tests on just the current object and its
 608  
      * directly contained sub-objects or expanded to perform all tests related
 609  
      * to this object. If an identifier is present for the statement (and/or one
 610  
      * of its contained sub-objects) and a record is found for that identifier,
 611  
      * the validation checks if the statement can be shifted to the new values.
 612  
      * If an identifier is not present or a record cannot be found for the
 613  
      * identifier, it is assumed that the record does not exist and as such, the
 614  
      * checks performed will be much shallower, typically mimicking those
 615  
      * performed by setting the validationTypeKey to the current object.
 616  
      *
 617  
      * @param validationTypeKey identifier of the extent of validation
 618  
      * @param statementTypeKey  identifier for the statement Type to be
 619  
      *                          validated
 620  
      * @param statementInfo     statement information to be validated
 621  
      * @param contextInfo       context information containing the principalId
 622  
      *                          and locale information about the caller of
 623  
      *                          service operation
 624  
      * @return Results from performing the validation
 625  
      * @throws DoesNotExistException     validationTypeKey or statementTypeKey
 626  
      *                                   not found
 627  
      * @throws InvalidParameterException invalid statementInfo or contextInfo
 628  
      * @throws MissingParameterException missing validationTypeKey, statementTypeKey,
 629  
      *                                   statementInfo or contextInfo
 630  
      * @throws OperationFailedException  unable to complete request
 631  
      * @throws PermissionDeniedException authorization failure
 632  
      */
 633  
     public List<ValidationResultInfo> validateStatement(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "statementTypeKey") String statementTypeKey, @WebParam(name = "statementInfo") StatementInfo statementInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 634  
 
 635  
     /**
 636  
      * Create a statement.
 637  
      *
 638  
      * @param statementTypeKey identifier of the type of statement
 639  
      * @param statementInfo    information about the statement
 640  
      * @param contextInfo      context information containing the principalId
 641  
      *                         and locale information about the caller of
 642  
      *                         service operation
 643  
      * @return Information about the newly created statement
 644  
      * @throws DataValidationErrorException supplied data is invalid
 645  
      * @throws DoesNotExistException        statementTypeKey not found
 646  
      * @throws InvalidParameterException    invalid statementInfo or contextInfo
 647  
      * @throws MissingParameterException    missing statementTypeKey,
 648  
      *                                      statementInfo or contextInfo
 649  
      * @throws OperationFailedException     unable to complete request
 650  
      * @throws PermissionDeniedException    authorization failure
 651  
      * @throws ReadOnlyException            an attempt at supplying information
 652  
      *                                      designated as read-only
 653  
      */
 654  
     public StatementInfo createStatement(@WebParam(name = "statementTypeKey") String statementTypeKey, @WebParam(name = "statementInfo") StatementInfo statementInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
 655  
 
 656  
     /**
 657  
      * Updates a statement
 658  
      *
 659  
      * @param statementId   identifier of the statement to be updated
 660  
      * @param statementInfo information about the statement to be updated
 661  
      * @param contextInfo   context information containing the principalId and
 662  
      *                      locale information about the caller of service
 663  
      *                      operation
 664  
      * @return the updated statement information
 665  
      * @throws DataValidationErrorException supplied data is invalid
 666  
      * @throws DoesNotExistException        statementId not found
 667  
      * @throws InvalidParameterException    invalid statementInfo or contextInfo
 668  
      * @throws MissingParameterException    missing statementId, statementInfo
 669  
      *                                      or contextInfo
 670  
      * @throws OperationFailedException     unable to complete request
 671  
      * @throws PermissionDeniedException    authorization failure
 672  
      * @throws ReadOnlyException            an attempt at supplying information
 673  
      *                                      designated as read-only
 674  
      * @throws VersionMismatchException     an optimistic locking failure or the
 675  
      *                                      action was attempted on an out of
 676  
      *                                      date version
 677  
      */
 678  
     public StatementInfo updateStatement(@WebParam(name = "statementId") String statementId, @WebParam(name = "statementInfo") StatementInfo statementInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
 679  
 
 680  
     /**
 681  
      * Deletes a statement
 682  
      *
 683  
      * @param statementId identifier of the Statement to delete
 684  
      * @param contextInfo context information containing the principalId and
 685  
      *                    locale information about the caller of service
 686  
      *                    operation
 687  
      * @return statusInfo status of the operation (success or failure)
 688  
      * @throws DoesNotExistException     statementId not found
 689  
      * @throws InvalidParameterException invalid contextInfo
 690  
      * @throws MissingParameterException missing statementId or contextInfo
 691  
      * @throws OperationFailedException  unable to complete request
 692  
      * @throws PermissionDeniedException authorization failure
 693  
      */
 694  
     public StatusInfo deleteStatement(@WebParam(name = "statementId") String statementId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 695  
 
 696  
     /**
 697  
      * Retrieves the list of ReqCompField types which are allowed to be used in
 698  
      * an ReqComponent type
 699  
      *
 700  
      * @param reqComponentTypeKey identifier for a type of requirement
 701  
      *                            component
 702  
      * @param contextInfo         context information containing the principalId
 703  
      *                            and locale information about the caller of
 704  
      *                            service operation
 705  
      * @return A list of required components
 706  
      * @throws InvalidParameterException invalid contextInfo
 707  
      * @throws MissingParameterException missing reqComponentTypeKey or
 708  
      *                                   contextInfo
 709  
      * @throws OperationFailedException  unable to complete request
 710  
      * @throws PermissionDeniedException authorization failure
 711  
      */
 712  
     public List<TypeInfo> getReqCompFieldTypesForReqComponentType(@WebParam(name = "reqComponentTypeKey") String reqComponentTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 713  
 
 714  
     /**
 715  
      * Retrieves a requirement component by its identifier
 716  
      *
 717  
      * @param reqComponentId required component identifier
 718  
      * @param contextInfo    context information containing the principalId and
 719  
      *                       locale information about the caller of service
 720  
      *                       operation
 721  
      * @return Required component information
 722  
      * @throws DoesNotExistException     reqComponentId not found
 723  
      * @throws InvalidParameterException invalid contextInfo
 724  
      * @throws MissingParameterException missing reqComponentId or contextInfo
 725  
      * @throws OperationFailedException  unable to complete request
 726  
      * @throws PermissionDeniedException authorization failure
 727  
      */
 728  
     public ReqComponentInfo getReqComponent(@WebParam(name = "reqComponentId") String reqComponentId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 729  
 
 730  
     /**
 731  
      * Retrieves a list of requirement components of a particular type.
 732  
      *
 733  
      * @param reqComponentTypeKey identifier for a type of requirement
 734  
      *                            component
 735  
      * @param contextInfo         context information containing the principalId
 736  
      *                            and locale information about the caller of
 737  
      *                            service operation
 738  
      * @return A list of required components
 739  
      * @throws InvalidParameterException invalid contextInfo
 740  
      * @throws MissingParameterException missing reqComponentTypeKey or
 741  
      *                                   contextInfo
 742  
      * @throws OperationFailedException  unable to complete request
 743  
      * @throws PermissionDeniedException authorization failure
 744  
      */
 745  
     public List<ReqComponentInfo> getReqComponentsByType(@WebParam(name = "reqComponentTypeKey") String reqComponentTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 746  
 
 747  
     /**
 748  
      * Retrieves type information for a specified ReqComponent Type
 749  
      *
 750  
      * @param reqComponentTypeKey reqComponent type key
 751  
      * @param contextInfo         context information containing the principalId
 752  
      *                            and locale information about the caller of
 753  
      *                            service operation
 754  
      * @return Requirement component type information
 755  
      * @throws DoesNotExistException     reqComponentTypeKey not found
 756  
      * @throws InvalidParameterException invalid contextInfo
 757  
      * @throws MissingParameterException missing reqComponentTypeKey or
 758  
      *                                   contextInfo
 759  
      * @throws OperationFailedException  unable to complete request
 760  
      * @throws PermissionDeniedException authorization failure
 761  
      */
 762  
     public TypeInfo getReqComponentType(@WebParam(name = "reqComponentTypeKey") String reqComponentTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 763  
 
 764  
     /**
 765  
      * Retrieves the list of all types of ReqComponent.
 766  
      *
 767  
      * @param contextInfo context information containing the principalId and
 768  
      *                    locale information about the caller of service
 769  
      *                    operation
 770  
      * @return List of types of ReqComponent
 771  
      * @throws InvalidParameterException invalid contextInfo
 772  
      * @throws MissingParameterException missing contextInfo
 773  
      * @throws OperationFailedException  unable to complete request
 774  
      * @throws PermissionDeniedException authorization failure
 775  
      */
 776  
     public List<TypeInfo> getReqComponentTypes(@WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 777  
 
 778  
     /**
 779  
      * Retrieves the list of types of requirement components which are allowed
 780  
      * to be used in a type of statement.
 781  
      *
 782  
      * @param statementTypeKey identifier for a type of statement
 783  
      * @return list of types of requirement components
 784  
      * @throws InvalidParameterException invalid contextInfo
 785  
      * @throws MissingParameterException missing statementTypeKey or
 786  
      *                                   contextInfo
 787  
      * @throws OperationFailedException  unable to complete request
 788  
      * @throws PermissionDeniedException authorization failure
 789  
      */
 790  
     public List<TypeInfo> getReqComponentTypesForStatementType(@WebParam(name = "statementTypeKey") String statementTypeKey) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 791  
 
 792  
     /**
 793  
      * Validates a ReqComponent. Depending on the value of validationTypeKey,
 794  
      * this validation could be limited to tests on just the current object and
 795  
      * its directly contained sub-objects or expanded to perform all tests
 796  
      * related to this object. If an identifier is present for the organization
 797  
      * (and/or one of its contained sub-objects) and a record is found for that
 798  
      * identifier, the validation checks if the organization can be shifted to
 799  
      * the new values. If an identifier is not present or a record cannot be
 800  
      * found for the identifier, it is assumed that the record does not exist
 801  
      * and as such, the checks performed will be much shallower, typically
 802  
      * mimicking those performed by setting the validationTypeKey to the current
 803  
      * object.
 804  
      *
 805  
      * @param validationTypeKey   identifier of the extent of validation
 806  
      * @param reqComponentTypeKey identifier for the ReqComponent Type to be
 807  
      *                            validated
 808  
      * @param reqComponentInfo    reqComponent information to be tested
 809  
      * @param contextInfo         context information containing the principalId
 810  
      *                            and locale information about the caller of
 811  
      *                            service operation
 812  
      * @return results from performing the validation
 813  
      * @throws DoesNotExistException     validationTypeKey or reqComponentTypeKey
 814  
      *                                   not found
 815  
      * @throws InvalidParameterException invalid reqComponentInfo or
 816  
      *                                   contextInfo
 817  
      * @throws MissingParameterException missing validationTypeKey, reqComponentTypeKey,
 818  
      *                                   reqComponentInfo or contextInfo
 819  
      * @throws OperationFailedException  unable to complete request
 820  
      * @throws PermissionDeniedException authorization failure
 821  
      */
 822  
     public List<ValidationResultInfo> validateReqComponent(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "reqComponentTypeKey") String reqComponentTypeKey, @WebParam(name = "reqComponentInfo") ReqComponentInfo reqComponentInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 823  
 
 824  
     /**
 825  
      * Creates a requirement component.
 826  
      *
 827  
      * @param reqComponentTypeKey identifier of the type of requirement
 828  
      *                            component
 829  
      * @param reqComponentInfo    information about the requirement component
 830  
      * @param contextInfo         context information containing the principalId
 831  
      *                            and locale information about the caller of
 832  
      *                            service operation
 833  
      * @return information about the newly created requirement component
 834  
      * @throws DataValidationErrorException supplied data is invalid
 835  
      * @throws DoesNotExistException        reqComponentTypeKey not found
 836  
      * @throws InvalidParameterException    invalid reqComponentInfo or
 837  
      *                                      contextInfo
 838  
      * @throws MissingParameterException    missing reqComponentTypeKey,
 839  
      *                                      reqComponentInfo or contextInfo
 840  
      * @throws OperationFailedException     unable to complete request
 841  
      * @throws PermissionDeniedException    authorization failure
 842  
      * @throws ReadOnlyException            an attempt at supplying information
 843  
      *                                      designated as read-only
 844  
      */
 845  
     public ReqComponentInfo createReqComponent(@WebParam(name = "reqComponentTypeKey") String reqComponentTypeKey, @WebParam(name = "reqComponentInfo") ReqComponentInfo reqComponentInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
 846  
 
 847  
     /**
 848  
      * Updates a requirement component
 849  
      *
 850  
      * @param reqComponentId   identifier of the requirement component to be
 851  
      *                         updated
 852  
      * @param reqComponentInfo information about the requirement component to be
 853  
      *                         updated
 854  
      * @param contextInfo      context information containing the principalId
 855  
      *                         and locale information about the caller of
 856  
      *                         service operation
 857  
      * @return the updated requirement component information
 858  
      * @throws DataValidationErrorException supplied data is invalid
 859  
      * @throws DoesNotExistException        reqComponentId not found
 860  
      * @throws InvalidParameterException    invalid reqComponentInfo or
 861  
      *                                      contextInfo
 862  
      * @throws MissingParameterException    missing reqComponentId, reqComponentInfo
 863  
      *                                      or contextInfo
 864  
      * @throws OperationFailedException     unable to complete request
 865  
      * @throws PermissionDeniedException    authorization failure
 866  
      * @throws ReadOnlyException            an attempt at supplying information
 867  
      *                                      designated as read-only
 868  
      * @throws VersionMismatchException     an optimistic locking failure or the
 869  
      *                                      action was attempted on an out of
 870  
      *                                      date version
 871  
      */
 872  
     public ReqComponentInfo updateReqComponent(@WebParam(name = "reqComponentId") String reqComponentId, @WebParam(name = "reqComponentInfo") ReqComponentInfo reqComponentInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 873  
 
 874  
     /**
 875  
      * Deletes a requirement component
 876  
      *
 877  
      * @param reqComponentId identifier of the requirement component to delete
 878  
      * @param contextInfo    context information containing the principalId and
 879  
      *                       locale information about the caller of service
 880  
      *                       operation
 881  
      * @return status of the operation (success or failure)
 882  
      * @throws DoesNotExistException     reqComponentId not found
 883  
      * @throws InvalidParameterException invalid contextInfo
 884  
      * @throws MissingParameterException missing reqComponentId or contextInfo
 885  
      * @throws OperationFailedException  unable to complete request
 886  
      * @throws PermissionDeniedException authorization failure
 887  
      */
 888  
     public StatusInfo deleteReqComponent(@WebParam(name = "reqComponentId") String reqComponentId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 889  
 
 890  
     /**
 891  
      * Retrieves a view of a statement by its identifier with its referenced
 892  
      * statements and requirement components expanded
 893  
      *
 894  
      * @param statementId statement identifier
 895  
      * @param contextInfo context information containing the principalId and
 896  
      *                    locale information about the caller of service
 897  
      *                    operation
 898  
      * @return view of statement information with the referenced statements and
 899  
      *         requirement components expanded
 900  
      * @throws DoesNotExistException     statementId not found
 901  
      * @throws InvalidParameterException invalid contextInfo
 902  
      * @throws MissingParameterException missing statementId or contextInfo
 903  
      * @throws OperationFailedException  unable to complete request
 904  
      * @throws PermissionDeniedException authorization failure
 905  
      */
 906  
     public StatementTreeViewInfo getStatementTreeView(@WebParam(name = "statementId") String statementId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 907  
 
 908  
     /**
 909  
      * Retrieves a view of a statement by its identifier with its referenced
 910  
      * statements and requirement components expanded and translated
 911  
      *
 912  
      * @param statementId    statement identifier
 913  
      * @param nlUsageTypeKey natural language usage type identifier
 914  
      * @param language       Translation language
 915  
      * @param contextInfo    context information containing the principalId and
 916  
      *                       locale information about the caller of service
 917  
      *                       operation
 918  
      * @return view of statement information with the referenced statements and
 919  
      *         requirement components expanded
 920  
      * @throws DoesNotExistException     statementId or nlUsageTypeKey not
 921  
      *                                   found
 922  
      * @throws InvalidParameterException invalid language or contextInfo
 923  
      * @throws MissingParameterException missing statementId, nlUsageTypeKey or
 924  
      *                                   contextInfo
 925  
      * @throws OperationFailedException  unable to complete request
 926  
      * @throws PermissionDeniedException authorization failure
 927  
      */
 928  
     public StatementTreeViewInfo getStatementTreeViewForNlUsageType(final String statementId, final String nlUsageTypeKey, String language, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 929  
 
 930  
     /**
 931  
      * Creates an entire Statement Tree. Fails unless everything can be done.
 932  
      * Updates Statements, RequirementComponents and any relations between them.
 933  
      * If there are "deletes", the relations are removed, but the object is not
 934  
      * deleted unless used nowhere else
 935  
      *
 936  
      * @param statementTreeViewInfo view of statement information with the
 937  
      *                              referenced statements and requirement
 938  
      *                              components expanded
 939  
      * @param contextInfo           context information containing the
 940  
      *                              principalId and locale information about the
 941  
      *                              caller of service operation
 942  
      * @return Statement tree view
 943  
      * @throws DataValidationErrorException supplied data is invalid
 944  
      * @throws InvalidParameterException    invalid statementTreeViewInfo or
 945  
      *                                      contextInfo
 946  
      * @throws MissingParameterException    missing statementTreeViewInfo or
 947  
      *                                      contextInfo
 948  
      * @throws OperationFailedException     unable to complete request
 949  
      * @throws PermissionDeniedException    authorization failure
 950  
      * @throws ReadOnlyException            an attempt at supplying information
 951  
      *                                      designated as read-only
 952  
      */
 953  
     public StatementTreeViewInfo createStatementTreeView(@WebParam(name = "statementTreeViewInfo") StatementTreeViewInfo statementTreeViewInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
 954  
 
 955  
     /**
 956  
      * Updates an entire Statement Tree. Fails unless everything can be done.
 957  
      * Updates Statements, RequirementComponents and any relations between them.
 958  
      * If there are "deletes", the relations are removed, but the object is not
 959  
      * deleted unless used no where else
 960  
      *
 961  
      * @param statementId           identifier of the statement to be updated
 962  
      * @param statementTreeViewInfo he StatementTreeInfo to be updated
 963  
      * @param contextInfo           context information containing the
 964  
      *                              principalId and locale information about the
 965  
      *                              caller of service operation
 966  
      * @return The updated StatementTree information
 967  
      * @throws DataValidationErrorException supplied data is invalid
 968  
      * @throws DoesNotExistException        statementId not found
 969  
      * @throws InvalidParameterException    invalid statementTreeViewInfo or
 970  
      *                                      contextInfo
 971  
      * @throws MissingParameterException    missing statementId, statementTreeViewInfo
 972  
      *                                      or contextInfo
 973  
      * @throws OperationFailedException     unable to complete request
 974  
      * @throws PermissionDeniedException    authorization failure
 975  
      * @throws ReadOnlyException            an attempt at supplying information
 976  
      *                                      designated as read-only
 977  
      * @throws VersionMismatchException     an optimistic locking failure or the
 978  
      *                                      action was attempted on an out of
 979  
      *                                      date version
 980  
      */
 981  
     public StatementTreeViewInfo updateStatementTreeView(@WebParam(name = "statementId") String statementId, @WebParam(name = "statementTreeViewInfo") StatementTreeViewInfo statementTreeViewInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
 982  
 
 983  
     /**
 984  
      * Deletes the entire statement tree
 985  
      *
 986  
      * @param statementId identifier of the statement to be deleted
 987  
      * @param contextInfo context information containing the principalId and
 988  
      *                    locale information about the caller of service
 989  
      *                    operation
 990  
      * @return Status of the operation (success or failure)
 991  
      * @throws DoesNotExistException     statementId not found
 992  
      * @throws InvalidParameterException invalid contextInfo
 993  
      * @throws MissingParameterException missing statementId or contextInfo
 994  
      * @throws OperationFailedException  unable to complete request
 995  
      * @throws PermissionDeniedException authorization failure
 996  
      */
 997  
     public StatusInfo deleteStatementTreeView(@WebParam(name = "statementId") String statementId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 998  
 }