Coverage Report - org.kuali.student.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  
 
 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  
 }