Clover Coverage Report - Kuali Student 1.3.0-SNAPSHOT (Aggregated)
Coverage timestamp: Thu Apr 28 2011 05:03:32 EDT
0   653   0   -
0   76   -   0
0     -  
1    
 
  StatementService       Line # 49 0 - 0 0 - -1.0
 
No Tests
 
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.common.dictionary.service.DictionaryService;
25    import org.kuali.student.common.dto.StatusInfo;
26    import org.kuali.student.common.exceptions.AlreadyExistsException;
27    import org.kuali.student.common.exceptions.CircularReferenceException;
28    import org.kuali.student.common.exceptions.CircularRelationshipException;
29    import org.kuali.student.common.exceptions.DataValidationErrorException;
30    import org.kuali.student.common.exceptions.DoesNotExistException;
31    import org.kuali.student.common.exceptions.InvalidParameterException;
32    import org.kuali.student.common.exceptions.MissingParameterException;
33    import org.kuali.student.common.exceptions.OperationFailedException;
34    import org.kuali.student.common.exceptions.PermissionDeniedException;
35    import org.kuali.student.common.exceptions.VersionMismatchException;
36    import org.kuali.student.common.search.service.SearchService;
37    import org.kuali.student.common.validation.dto.ValidationResultInfo;
38    import org.kuali.student.core.statement.dto.NlUsageTypeInfo;
39    import org.kuali.student.core.statement.dto.RefStatementRelationInfo;
40    import org.kuali.student.core.statement.dto.RefStatementRelationTypeInfo;
41    import org.kuali.student.core.statement.dto.ReqComponentInfo;
42    import org.kuali.student.core.statement.dto.ReqComponentTypeInfo;
43    import org.kuali.student.core.statement.dto.StatementInfo;
44    import org.kuali.student.core.statement.dto.StatementTreeViewInfo;
45    import org.kuali.student.core.statement.dto.StatementTypeInfo;
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    }